Update runtime files.
diff --git a/runtime/compiler/ocaml.vim b/runtime/compiler/ocaml.vim
index 7f8a7ea..faa8af1 100644
--- a/runtime/compiler/ocaml.vim
+++ b/runtime/compiler/ocaml.vim
@@ -1,11 +1,11 @@
" Vim Compiler File
" Compiler: ocaml
" Maintainer: Markus Mottl <markus.mottl@gmail.com>
-" URL: https://github.com/rgrinberg/vim-ocaml
+" URL: https://github.com/ocaml/vim-ocaml
" Last Change:
+" 2020 Mar 28 - Improved error format (Thomas Leonard)
" 2017 Nov 26 - Improved error format (Markus Mottl)
" 2013 Aug 27 - Added a new OCaml error format (Markus Mottl)
-" 2013 Jun 30 - Initial version (Marc Weber)
"
" Marc Weber's comments:
" Setting makeprg doesn't make sense, because there is ocamlc, ocamlopt,
@@ -21,6 +21,7 @@
"
" So having it here makes people opt-in
+
if exists("current_compiler")
finish
endif
@@ -30,6 +31,7 @@
set cpo&vim
CompilerSet errorformat =
+ \%EFile\ \"%f\"\\,\ lines\ %*\\d-%l\\,\ characters\ %c-%*\\d:,
\%EFile\ \"%f\"\\,\ line\ %l\\,\ characters\ %c-%*\\d:,
\%EFile\ \"%f\"\\,\ line\ %l\\,\ characters\ %c-%*\\d\ %.%#,
\%EFile\ \"%f\"\\,\ line\ %l\\,\ character\ %c:%m,
diff --git a/runtime/doc/cmdline.txt b/runtime/doc/cmdline.txt
index e536dac..990380f 100644
--- a/runtime/doc/cmdline.txt
+++ b/runtime/doc/cmdline.txt
@@ -1,4 +1,4 @@
-*cmdline.txt* For Vim version 8.2. Last change: 2020 Sep 14
+*cmdline.txt* For Vim version 8.2. Last change: 2020 Dec 26
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -849,6 +849,16 @@
file name n. See |:oldfiles| or |v:oldfiles| to get the
number. *E809*
{only when compiled with the |+eval| and |+viminfo| features}
+In |Vim9-script| # is used to start a comment, use %% for the alternate file
+name:
+ % Is replaced with the current file name.
+ %% Is replaced with the alternate file name. *:_%%* *c_%%*
+ %%n (where n is a number) is replaced with *:_%%0* *:_%%n*
+ the file name of buffer n. "%%0" is the same as "%%". *c_%%n*
+ %%% Is replaced with all names in the argument *:_%%%* *c_%%%#*
+ list concatenated, separated by spaces.
+ %%<n (where n is a number > 0) is replaced with old *:_%%<* *c_%%<*
+ file name n.
Note that these, except "#<n", give the file name as it was typed. If an
absolute path is needed (when using the file name from a different directory),
diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt
index 8b85dad..3043225 100644
--- a/runtime/doc/eval.txt
+++ b/runtime/doc/eval.txt
@@ -1,4 +1,4 @@
-*eval.txt* For Vim version 8.2. Last change: 2020 Dec 22
+*eval.txt* For Vim version 8.2. Last change: 2020 Dec 29
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -8960,7 +8960,7 @@
result. if search exceeded
total count, "total" value
becomes `maxcount + 1`
- (default: 0)
+ (default: 99)
pos |List| `[lnum, col, off]` value
when recomputing the result.
this changes "current" result
@@ -10874,7 +10874,7 @@
is the timer ID. The callback is only invoked when Vim is
waiting for input.
If you want to show a message look at |popup_notification()|
- to avoid intefering with what the user is doing.
+ to avoid interfering with what the user is doing.
{options} is a dictionary. Supported entries:
"repeat" Number of times to repeat calling the
@@ -12952,7 +12952,7 @@
:exe[cute] {expr1} .. Executes the string that results from the evaluation
of {expr1} as an Ex command.
Multiple arguments are concatenated, with a space in
- between. To avoid the extra space use the "."
+ between. To avoid the extra space use the ".."
operator to concatenate strings into one argument.
{expr1} is used as the processed command, command line
editing keys are not recognized.
diff --git a/runtime/doc/helphelp.txt b/runtime/doc/helphelp.txt
index c724923..3a06baf 100644
--- a/runtime/doc/helphelp.txt
+++ b/runtime/doc/helphelp.txt
@@ -1,4 +1,4 @@
-*helphelp.txt* For Vim version 8.2. Last change: 2020 Dec 19
+*helphelp.txt* For Vim version 8.2. Last change: 2020 Dec 29
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -158,6 +158,9 @@
will be opened. Otherwise the specified tag is searched for in all "doc/tags"
files in the directories specified in the 'runtimepath' option.
+If you would like to open the help in the current window, see this tip:
+|help-curwin|.
+
The initial height of the help window can be set with the 'helpheight' option
(default 20).
diff --git a/runtime/doc/intro.txt b/runtime/doc/intro.txt
index c555dc2..7d68399 100644
--- a/runtime/doc/intro.txt
+++ b/runtime/doc/intro.txt
@@ -1,4 +1,4 @@
-*intro.txt* For Vim version 8.2. Last change: 2020 Dec 19
+*intro.txt* For Vim version 8.2. Last change: 2020 Dec 29
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -678,8 +678,8 @@
Normal mode, without causing a beep like <Esc> would. However, this does not
work in Ex mode. When used after a command that takes an argument, such as
|f| or |m|, the timeout set with 'ttimeoutlen' applies.
-When focus is in a terminal window, CTRL-\ CTRL-N goes to Normal mode for only
-one command, see |t_CTRL-\_CTRL-N|.
+When focus is in a terminal window, CTRL-\ CTRL-N goes to Normal mode until an
+edit command is entered, see |t_CTRL-\_CTRL-N|.
*CTRL-\_CTRL-G* *i_CTRL-\_CTRL-G* *c_CTRL-\_CTRL-G* *v_CTRL-\_CTRL-G*
The command CTRL-\ CTRL-G or <C-\><C-G> can be used to go to Insert mode when
diff --git a/runtime/doc/message.txt b/runtime/doc/message.txt
index 9ce649d..fbf4ce2 100644
--- a/runtime/doc/message.txt
+++ b/runtime/doc/message.txt
@@ -1,4 +1,4 @@
-*message.txt* For Vim version 8.2. Last change: 2020 Sep 07
+*message.txt* For Vim version 8.2. Last change: 2020 Dec 29
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -794,6 +794,9 @@
-> Press <Enter> or <Space> to redraw the screen and continue, without that
key being used otherwise.
-> Press ':' or any other Normal mode command character to start that command.
+ Note that after an external command some special keys, such as the cursor
+ keys, may not work normally, because the terminal is still set to a state
+ for executing the external command.
-> Press 'k', <Up>, 'u', 'b' or 'g' to scroll back in the messages. This
works the same way as at the |more-prompt|. Only works when 'compatible'
is off and 'more' is on.
diff --git a/runtime/doc/os_vms.txt b/runtime/doc/os_vms.txt
index b69f650..f5c4859 100644
--- a/runtime/doc/os_vms.txt
+++ b/runtime/doc/os_vms.txt
@@ -1,4 +1,4 @@
-*os_vms.txt* For Vim version 8.2. Last change: 2020 Jun 07
+*os_vms.txt* For Vim version 8.2. Last change: 2020 Dec 30
VIM REFERENCE MANUAL
@@ -72,7 +72,7 @@
4. Problems *vms-problems*
The code has been tested under Open VMS 6.2 - 8.2 on Alpha, VAX and IA64
-platforms with the DEC C compiler. It should work without big problems.
+platforms with the DEC C compiler. It should work without major problems.
If your system does not have some include libraries you can tune up in
OS_VMS_CONF.H file.
@@ -765,6 +765,13 @@
9. VMS related changes *vms-changes*
+Version 8.2
+- make all changes needed for clean compile build of v8.2 on VMS on all platforms
+- test on VSI OpenVMS platforms
+- added XPM support - Motif GUI with toolbar on all platforms
+- XPM v3.4.11 libraries for IA64, AXP and VAX are added
+- start integrating the new test scripts
+
Version 8.1
- make necessary changes to build v8.1 on VMS
diff --git a/runtime/doc/pattern.txt b/runtime/doc/pattern.txt
index 4a574e3..177a652 100644
--- a/runtime/doc/pattern.txt
+++ b/runtime/doc/pattern.txt
@@ -1,4 +1,4 @@
-*pattern.txt* For Vim version 8.2. Last change: 2020 Dec 06
+*pattern.txt* For Vim version 8.2. Last change: 2020 Dec 25
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -394,15 +394,19 @@
==============================================================================
3. Magic */magic*
-Some characters in the pattern are taken literally. They match with the same
-character in the text. When preceded with a backslash however, these
-characters get a special meaning.
+Some characters in the pattern, such as letters, are taken literally. They
+match exactly the same character in the text. When preceded with a backslash
+however, these characters may get a special meaning. For example, "a" matches
+the letter "a", while "\a" matches any alphabetic character.
Other characters have a special meaning without a backslash. They need to be
-preceded with a backslash to match literally.
+preceded with a backslash to match literally. For example "." matches any
+character while "\." matches a dot.
If a character is taken literally or not depends on the 'magic' option and the
-items mentioned next.
+items in the pattern mentioned next. The 'magic' option should always be set,
+but it can be switched off for Vi compatibility. We mention the effect of
+'nomagic' here for completeness, but we recommend against using that.
*/\m* */\M*
Use of "\m" makes the pattern after it be interpreted as if 'magic' is set,
ignoring the actual value of the 'magic' option.
@@ -411,30 +415,28 @@
Use of "\v" means that after it, all ASCII characters except '0'-'9', 'a'-'z',
'A'-'Z' and '_' have special meaning: "very magic"
-Use of "\V" means that after it, only a backslash and terminating character
-(usually / or ?) have special meaning: "very nomagic"
+Use of "\V" means that after it, only a backslash and the terminating
+character (usually / or ?) have special meaning: "very nomagic"
Examples:
after: \v \m \M \V matches ~
'magic' 'nomagic'
- $ $ $ \$ matches end-of-line
- . . \. \. matches any character
+ a a a a literal 'a'
+ \a \a \a \a any alphabetic character
+ . . \. \. any character
+ \. \. . . literal dot
+ $ $ $ \$ end-of-line
* * \* \* any number of the previous atom
~ ~ \~ \~ latest substitute string
- () \(\) \(\) \(\) grouping into an atom
- | \| \| \| separating alternatives
- \a \a \a \a alphabetic character
+ () \(\) \(\) \(\) group as an atom
+ | \| \| \| nothing: separates alternatives
\\ \\ \\ \\ literal backslash
- \. \. . . literal dot
- \{ { { { literal '{'
- a a a a literal 'a'
+ \{ { { { literal curly brace
{only Vim supports \m, \M, \v and \V}
-It is recommended to always keep the 'magic' option at the default setting,
-which is 'magic'. This avoids portability problems. To make a pattern immune
-to the 'magic' option being set or not, put "\m" or "\M" at the start of the
-pattern.
+If you want to you can make a pattern immune to the 'magic' option being set
+or not by putting "\m" or "\M" at the start of the pattern.
==============================================================================
4. Overview of pattern items *pattern-overview*
diff --git a/runtime/doc/repeat.txt b/runtime/doc/repeat.txt
index f6c96d0..fc699a1 100644
--- a/runtime/doc/repeat.txt
+++ b/runtime/doc/repeat.txt
@@ -1,4 +1,4 @@
-*repeat.txt* For Vim version 8.2. Last change: 2020 Oct 09
+*repeat.txt* For Vim version 8.2. Last change: 2021 Jan 02
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -354,6 +354,14 @@
Vim version, or update Vim to a newer version. See
|vimscript-version| for what changed between versions.
+:vim9script [noclear] *:vim9* *:vim9script*
+ Marks a script file as containing |Vim9-script|
+ commands. Also see |vim9-namespace|.
+ Must be the first command in the file.
+ For [noclear] see |vim9-reload|.
+ Without the |+eval| feature this changes the syntax
+ for some commands.
+
*:scr* *:scriptnames*
:scr[iptnames] List all sourced script names, in the order they were
first sourced. The number is used for the script ID
diff --git a/runtime/doc/tags b/runtime/doc/tags
index 18e3d98..a32731d 100644
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -2072,6 +2072,11 @@
:_#< cmdline.txt /*:_#<*
:_#n cmdline.txt /*:_#n*
:_% cmdline.txt /*:_%*
+:_%% cmdline.txt /*:_%%*
+:_%%% cmdline.txt /*:_%%%*
+:_%%0 cmdline.txt /*:_%%0*
+:_%%< cmdline.txt /*:_%%<*
+:_%%n cmdline.txt /*:_%%n*
:_%: cmdline.txt /*:_%:*
:_%< cmdline.txt /*:_%<*
:a insert.txt /*:a*
@@ -3389,8 +3394,8 @@
:vie editing.txt /*:vie*
:view editing.txt /*:view*
:vim quickfix.txt /*:vim*
-:vim9 vim9.txt /*:vim9*
-:vim9script vim9.txt /*:vim9script*
+:vim9 repeat.txt /*:vim9*
+:vim9script repeat.txt /*:vim9script*
:vimgrep quickfix.txt /*:vimgrep*
:vimgrepa quickfix.txt /*:vimgrepa*
:vimgrepadd quickfix.txt /*:vimgrepadd*
@@ -5152,6 +5157,7 @@
Vi intro.txt /*Vi*
View starting.txt /*View*
Vim9 vim9.txt /*Vim9*
+Vim9-script vim9.txt /*Vim9-script*
VimEnter autocmd.txt /*VimEnter*
VimLeave autocmd.txt /*VimLeave*
VimLeavePre autocmd.txt /*VimLeavePre*
@@ -5563,6 +5569,10 @@
c_#< cmdline.txt /*c_#<*
c_#n cmdline.txt /*c_#n*
c_% cmdline.txt /*c_%*
+c_%% cmdline.txt /*c_%%*
+c_%%%# cmdline.txt /*c_%%%#*
+c_%%< cmdline.txt /*c_%%<*
+c_%%n cmdline.txt /*c_%%n*
c_<BS> cmdline.txt /*c_<BS>*
c_<C-Left> cmdline.txt /*c_<C-Left>*
c_<C-R> cmdline.txt /*c_<C-R>*
@@ -5748,6 +5758,7 @@
charclass() eval.txt /*charclass()*
charconvert_from-variable eval.txt /*charconvert_from-variable*
charconvert_to-variable eval.txt /*charconvert_to-variable*
+charidx() eval.txt /*charidx()*
charity uganda.txt /*charity*
charset mbyte.txt /*charset*
charset-conversion mbyte.txt /*charset-conversion*
@@ -7147,6 +7158,7 @@
hebrew.txt hebrew.txt /*hebrew.txt*
help helphelp.txt /*help*
help-context help.txt /*help-context*
+help-curwin tips.txt /*help-curwin*
help-summary usr_02.txt /*help-summary*
help-tags tags 1
help-translated helphelp.txt /*help-translated*
@@ -10058,6 +10070,7 @@
vim.vim syntax.txt /*vim.vim*
vim7 version7.txt /*vim7*
vim8 version8.txt /*vim8*
+vim9 vim9.txt /*vim9*
vim9-classes vim9.txt /*vim9-classes*
vim9-const vim9.txt /*vim9-const*
vim9-declaration vim9.txt /*vim9-declaration*
@@ -10067,9 +10080,10 @@
vim9-final vim9.txt /*vim9-final*
vim9-gotchas vim9.txt /*vim9-gotchas*
vim9-import vim9.txt /*vim9-import*
+vim9-namespace vim9.txt /*vim9-namespace*
vim9-rationale vim9.txt /*vim9-rationale*
+vim9-reload vim9.txt /*vim9-reload*
vim9-scopes vim9.txt /*vim9-scopes*
-vim9-script vim9.txt /*vim9-script*
vim9-script-intro usr_46.txt /*vim9-script-intro*
vim9-types vim9.txt /*vim9-types*
vim9.txt vim9.txt /*vim9.txt*
diff --git a/runtime/doc/term.txt b/runtime/doc/term.txt
index 0093a96..5b7850f 100644
--- a/runtime/doc/term.txt
+++ b/runtime/doc/term.txt
@@ -1,4 +1,4 @@
-*term.txt* For Vim version 8.2. Last change: 2020 Apr 12
+*term.txt* For Vim version 8.2. Last change: 2020 Dec 29
VIM REFERENCE MANUAL by Bram Moolenaar
diff --git a/runtime/doc/terminal.txt b/runtime/doc/terminal.txt
index 08815ef..1951229 100644
--- a/runtime/doc/terminal.txt
+++ b/runtime/doc/terminal.txt
@@ -1,4 +1,4 @@
-*terminal.txt* For Vim version 8.2. Last change: 2020 Nov 25
+*terminal.txt* For Vim version 8.2. Last change: 2020 Dec 28
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -742,6 +742,9 @@
The default is "Tapi_". When {expr} is an empty string then
no |terminal-api| function can be used for {buf}.
+ When used as a method the base is used for {buf}: >
+ GetBufnr()->term_setapi({expr})
+
term_setansicolors({buf}, {colors}) *term_setansicolors()*
Set the ANSI color palette used by terminal {buf}.
{colors} must be a List of 16 valid color names or hexadecimal
diff --git a/runtime/doc/tips.txt b/runtime/doc/tips.txt
index a66de91..af78965 100644
--- a/runtime/doc/tips.txt
+++ b/runtime/doc/tips.txt
@@ -1,4 +1,4 @@
-*tips.txt* For Vim version 8.2. Last change: 2009 Nov 07
+*tips.txt* For Vim version 8.2. Last change: 2020 Dec 29
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -30,6 +30,7 @@
Hex editing |hex-editing|
Using <> notation in autocommands |autocmd-<>|
Highlighting matching parens |match-parens|
+Opening help in the current window |help-curwin|
==============================================================================
Editing C programs *C-editing*
@@ -530,4 +531,28 @@
autocmd InsertEnter * match none
<
+==============================================================================
+Opening help in the current window *help-curwin*
+
+By default, help is displayed in a split window. If you prefer it opens in
+the current window, try this custom `:HelpCurwin` command:
+>
+ command -bar -nargs=? -complete=help HelpCurwin execute s:HelpCurwin(<q-args>)
+ let s:did_open_help = v:false
+
+ function s:HelpCurwin(subject) abort
+ let mods = 'silent noautocmd keepalt'
+ if !s:did_open_help
+ execute mods .. ' help'
+ execute mods .. ' helpclose'
+ let s:did_open_help = v:true
+ endif
+ if !getcompletion(a:subject, 'help')->empty()
+ execute mods .. ' edit ' .. &helpfile
+ endif
+ return 'help ' .. a:subject
+ endfunction
+<
+
+
vim:tw=78:ts=8:noet:ft=help:norl:
diff --git a/runtime/doc/todo.txt b/runtime/doc/todo.txt
index 7a87de0..07779b4 100644
--- a/runtime/doc/todo.txt
+++ b/runtime/doc/todo.txt
@@ -1,4 +1,4 @@
-*todo.txt* For Vim version 8.2. Last change: 2020 Dec 22
+*todo.txt* For Vim version 8.2. Last change: 2021 Jan 02
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -38,17 +38,11 @@
*known-bugs*
-------------------- Known bugs and current work -----------------------
-Rewrite the section on "magic". Say that 'magic' is normally on, then this
-happens... If 'magic' is off, then this is different..
+Reload: How to make sure type of script function hasn't changed?
-test_vim9_cmd: uses uninitialized var
+Valgrind: test_vim9_cmd: uses uninitialized var
Vim9 - Make everything work:
-- For an :autocmd and :command argument defined in Vim9 script, if a following
- line starts with "|" append it. It's like line continuation. (#6702)
-- The syntax of a range list[a:b] is ambiguous, is this one "a:b" variable or
- a range from "a" to "b"? To avoid confusion, require white space before
- (and after) the colon? #7409
- Implement "export {one, two three}".
- Use "null" for v:null, like true and false? #7495
- ISN_CHECKTYPE could use check_argtype()
@@ -59,7 +53,18 @@
- If a :def function is called with a function reference, compile it to get
the function type.
def Filter(x: string, Cond: func(string): bool)
- Filter(x, { v -> v =~ '^b' })
+ Filter(x, (v) => v =~ '^b')
+- Make inline function work, to be used as a funcref:
+ let Ref = (arg: type): type => {
+ statement
+ return expr
+ }
+ let Ref = (arg: type) => {
+ statement
+ statement
+ }
+- implement { cmd } compiled
+- implement { cmd } at script level
- Expand `=expr` in :next, :argedit, :argadd, :argdelete, :drop
- Expand `=expr` in :vimgrep, :vimgrepadd, :lvimgrep, :lvimgrepadd
- Expand `=expr` in :mkspell
@@ -68,8 +73,11 @@
map(list, SomeFunc)
- For builtin functions using tv_get_string*() use check_for_string() to be
more strict about the argument type.
+- Implement :lockvar and :unlockvar. How about local variables? Perhaps only
+ allow this for global variables. Use :final or :const otherwise.
- Allow function names that will be script-local to start with lower case
- letter?
+ letter? Or also require names with s: prefix to use upper case?
+ Also apply this function references "var ref = SomeFunc"
- Support passing v:none to use the default argument value. (#6504)
- Make map() give an error if the resulting type of the first argument is
wrong. Only works if the type is known? Is this slow (need to go over all
@@ -98,7 +106,7 @@
- Implement using imported items at script level from "import * as X" in
eval_variable(). Should pass the ".xxx" that follows and return that.
- Disallow unlet for local/script/imported vars
-- Make "++nr" work.
+- Make "++nr" work. "++g:count" doesn't work, thinks it is a range.
- Make closures work:
- Create closure in a loop. Need to make a list of them.
- nested closure only uses one context, not all (#7150)
@@ -144,10 +152,6 @@
- compile options that are an expression, e.g. "expr:" in 'spellsuggest',
'foldexpr', 'foldtext', 'printexpr', 'diffexpr', 'patchexpr', 'charconvert',
'balloonexpr', 'includeexpr', 'indentexpr', 'formatexpr'.
-- Make inline function work, to be used as a funcref:
- let ref = def(arg: type): rettype
- body
- enddef
- compile get_lambda_tv() in popup_add_timeout()
- inline call to map() and filter()
- compile "skip" argument of searchpair()
@@ -224,6 +228,7 @@
with another Vim instance.
Terminal emulator window:
+- Can escape a terminal popup with win_gotoid(), should be an error
- No support for underline color, t_8u.
- When in terminal-Normal mode when the job finishes, the cursor jumps to the
end but the window is not updated. This only happens when typing "a".
@@ -276,6 +281,8 @@
Patch to implement the vimtutor with a plugin: #6414
Was originally written by Felipe Morales.
+Patch to find Python dll using registry key. (#7540)
+
Remove SPACE_IN_FILENAME ? It is only used for completion.
Making breakat support multibyte characters (Yasuhiro Matsumoto, #6598)
@@ -663,6 +670,38 @@
'sessionoptions', making it impossible to have a session with a relative path.
(#4450)
+Session file only contains local option values for buffers that are in a
+window, not other buffers. (#7532)
+
+Script generated by :mksession does not work well if there are windows with
+modified buffers
+ change "silent only" into "silent only!"
+ change "edit fname" of first buffer to "hide edit fname"
+ skip "badd fname" if "fname" is already in the buffer list
+ remove remark about unloading buffers from documentation
+
+When session file has name in argument list but the buffer was deleted, the
+buffer is not deleted when using the session file. (#1393)
+Should add the buffer in hidden state.
+
+When a session file is created and there are "nofile" buffers, these are not
+filled. Need to trigger BufReadCmd autocommands. Also handle deleting the
+initial empty buffer better. (ZyX, 2015 March 8)
+
+Setting the spell file in a session only reads the local additions, not the
+normal spell file. (Enno Nagel, 2014 Mar 29)
+
+Directory wrong in session file, caused by ":lcd" in BufEnter autocommand.
+(Felix Kater, 2009 Mar 3)
+
+Something wrong with session that has "cd" commands and "badd", in such a way
+that Vim doesn't find the edited file in the buffer list, causing the
+ATTENTION message? (Tony Mechelynck, 2008 Dec 1)
+Also: swap files are in ~/tmp/ One has relative file name ".mozilla/...".
+
+'foldcolumn' in modeline applied to wrong window when using a session. (Teemu
+Likonen, March 19)
+
When using a timer callback vgetc_busy is reset, allowing for using input().
But in a channel callback this does not happen. We need to do something
similar to check_due_timer(). Also see #3809.
@@ -852,13 +891,6 @@
Win32 key codes are messy. Mike Williams tried to fix that, but now old
mappings no longer work. Create a new terminal for the better solution?
-Script generated by :mksession does not work well if there are windows with
-modified buffers
- change "silent only" into "silent only!"
- change "edit fname" of first buffer to "hide edit fname"
- skip "badd fname" if "fname" is already in the buffer list
- remove remark about unloading buffers from documentation
-
Compiler warnings (geeknik, 2017 Oct 26):
- signed integer overflow in do_sub() (#2249)
- signed integer overflow in get_address() (#2248)
@@ -1120,7 +1152,7 @@
#2089) Patch with possible solution by Björn Linse.
The change list index is local to a buffer, but it doesn't make sense using it
-for another buffer. (lacygoll) Copy w_changelistidx to wininfo_S and back.
+for another buffer. (lacygolil) Copy w_changelistidx to wininfo_S and back.
X11: Putting more than about 262040 characters of text on the clipboard and
pasting it in another Vim doesn't work. (Dominique Pelle, 2008 Aug 21-23)
@@ -1227,10 +1259,6 @@
import can't be used in define option when include matches too.
(Romain Lafourcade, 2017 Jun 18, #1519)
-When session file has name in argument list but the buffer was deleted, the
-buffer is not deleted when using the session file. (#1393)
-Should add the buffer in hidden state.
-
Wrong diff highlighting with three files. (2016 Oct 20, #1186)
Also get E749 on exit.
Another example in #1309
@@ -1689,10 +1717,6 @@
Patch to add a "literal" argument to bufnr(). (Olaf Dabrunz, 2015 Aug 4)
-When a session file is created and there are "nofile" buffers, these are not
-filled. Need to trigger BufReadCmd autocommands. Also handle deleting the
-initial empty buffer better. (ZyX, 2015 March 8)
-
Extended file attributes lost on write (backupcopy=no). Issue 306.
Patch to add :lockjumps. (Carlo Baldassi, 2015 May 25)
@@ -1821,9 +1845,6 @@
- Development work on plugins (although diff with distributed version would be
useful).
-Setting the spell file in a session only reads the local additions, not the
-normal spell file. (Enno Nagel, 2014 Mar 29)
-
When typing the first character of a command, e.g. "f", then using a menu, the
menu item doesn't work. Clear typeahead when using a menu?
@@ -2472,9 +2493,6 @@
height. Also happens when there is another window in the frame, if it's not
very high. (Yegappan Lakshmanan, 2010 Jul 22, Michael Peeters, 2010 Jul 22)
-Directory wrong in session file, caused by ":lcd" in BufEnter autocommand.
-(Felix Kater, 2009 Mar 3)
-
Session file generates error upon loading, cause by --remote-silent-tab.
(7tommm (ytommm) 2010 Nov 24)
@@ -2534,11 +2552,6 @@
"gqip" in Insert mode has an off-by-one error, causing it to reflow text.
(Raul Coronado, 2009 Nov 2)
-Something wrong with session that has "cd" commands and "badd", in such a way
-that Vim doesn't find the edited file in the buffer list, causing the
-ATTENTION message? (Tony Mechelynck, 2008 Dec 1)
-Also: swap files are in ~/tmp/ One has relative file name ".mozilla/...".
-
MS-Windows: editing the first, empty buffer, 'ffs' set to "unix,dos", ":enew"
doesn't set 'ff' to "unix". (Ben Fritz, 2008 Dec 5) Reusing the old buffer
probably causes this.
@@ -2735,9 +2748,6 @@
":echoe" in catch block stops processing, while this doesn't happen outside of
a catch block. (ZyX, 2011 Jun 2)
-'foldcolumn' in modeline applied to wrong window when using a session. (Teemu
-Likonen, March 19)
-
Test 54 uses shell commands, that doesn't work on non-Unix systems. Use some
other way to test buffer-local autocommands.
diff --git a/runtime/doc/version8.txt b/runtime/doc/version8.txt
index f7dc1fc..161527c 100644
--- a/runtime/doc/version8.txt
+++ b/runtime/doc/version8.txt
@@ -1,4 +1,4 @@
-*version8.txt* For Vim version 8.2. Last change: 2020 Oct 25
+*version8.txt* For Vim version 8.2. Last change: 2020 Dec 24
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -3282,7 +3282,7 @@
Files: src/os_mswin.c
Patch 7.4.472
-Problem: The "precedes" entry in 'listchar' will be drawn when 'showbreak'
+Problem: The "precedes" entry in 'listchars' will be drawn when 'showbreak'
is set and 'list' is not.
Solution: Only draw this character when 'list' is on. (Christian Brabandt)
Files: src/screen.c
@@ -35835,7 +35835,7 @@
Patch 8.1.1592
Problem: May start file dialog while exiting.
Solution: Ignore the "browse" modifier when exiting. (Ozaki Kiichi,
- closes #4582
+ closes #4582)
Files: src/ex_cmds.c, src/terminal.c
Patch 8.1.1593
@@ -46431,7 +46431,7 @@
Patch 8.2.0854
Problem: Xxd cannot show offset as a decimal number.
-Solution: Add the "-d" flag. (Aapo Rantalainen, closes #5616
+Solution: Add the "-d" flag. (Aapo Rantalainen, closes #5616)
Files: src/testdir/test_xxd.vim, src/xxd/xxd.c
Patch 8.2.0855
@@ -46661,7 +46661,7 @@
Files: src/gui_xim.c
Patch 8.2.0890
-Problem: No color in terminal window when 'termguicolor' is set.
+Problem: No color in terminal window when 'termguicolors' is set.
Solution: Clear the underline color. (closes #6186)
Files: src/highlight.c
@@ -46728,7 +46728,7 @@
Patch 8.2.0902
Problem: Using searchcount() in 'statusline' causes an error.
-Solution: Avoid saving/restoring the search patten recursively.
+Solution: Avoid saving/restoring the search pattern recursively.
(closes #6194)
Files: src/search.c, src/testdir/test_search_stat.vim,
src/testdir/dumps/Test_searchstat_4.dump
@@ -48832,7 +48832,7 @@
Patch 8.2.1260
Problem: There is no good test for CursorHold.
Solution: Add a test. Remove duplicated test. (Yegappan Lakshmanan,
- closes #6503
+ closes #6503)
Files: src/testdir/test_autocmd.vim, src/testdir/test_buffer.vim,
src/testdir/test_normal.vim
diff --git a/runtime/doc/vim9.txt b/runtime/doc/vim9.txt
index b21b7bf..e13863a 100644
--- a/runtime/doc/vim9.txt
+++ b/runtime/doc/vim9.txt
@@ -1,4 +1,4 @@
-*vim9.txt* For Vim version 8.2. Last change: 2020 Dec 24
+*vim9.txt* For Vim version 8.2. Last change: 2021 Jan 02
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -14,7 +14,7 @@
THIS IS STILL UNDER DEVELOPMENT - ANYTHING CAN BREAK - ANYTHING CAN CHANGE
-1. What is Vim9 script? |vim9-script|
+1. What is Vim9 script? |Vim9-script|
2. Differences |vim9-differences|
3. New style functions |fast-functions|
4. Types |vim9-types|
@@ -565,6 +565,13 @@
White space is required around most operators.
+White space is required in a sublist (list slice) around the ":", except at
+the start and end: >
+ otherlist = mylist[v : count] # v:count has a different meaning
+ otherlist = mylist[:] # make a copy of the List
+ otherlist = mylist[v :]
+ otherlist = mylist[: v]
+
White space is not allowed:
- Between a function name and the "(": >
call Func (arg) # Error!
@@ -595,7 +602,7 @@
empty list and dict is falsy:
type truthy when ~
- bool v:true or 1
+ bool true, v:true or 1
number non-zero
float non-zero
string non-empty
@@ -603,11 +610,11 @@
list non-empty (different from JavaScript)
dictionary non-empty (different from JavaScript)
func when there is a function name
- special v:true
+ special true or v:true
job when not NULL
channel when not NULL
class when not NULL
- object when not NULL (TODO: when isTrue() returns v:true)
+ object when not NULL (TODO: when isTrue() returns true)
The boolean operators "||" and "&&" expect the values to be boolean, zero or
one: >
@@ -629,12 +636,15 @@
When using "`.."` for string concatenation arguments of simple types are
always converted to string: >
'hello ' .. 123 == 'hello 123'
- 'hello ' .. v:true == 'hello v:true'
+ 'hello ' .. v:true == 'hello true'
Simple types are string, float, special and bool. For other types |string()|
can be used.
*false* *true*
-In Vim9 script one can use "true" for v:true and "false" for v:false.
+In Vim9 script one can use "true" for v:true and "false" for v:false. When
+converting a boolean to a string "false" and "true" are used, not "v:false"
+and "v:true" like in legacy script. "v:none" and "v:null" are not changed,
+they are only used in JSON.
Indexing a string with [idx] or [idx, idx] uses character indexes instead of
byte indexes. Example: >
diff --git a/runtime/filetype.vim b/runtime/filetype.vim
index d624e2b..dddb6d1 100644
--- a/runtime/filetype.vim
+++ b/runtime/filetype.vim
@@ -1,7 +1,7 @@
" Vim support file to detect file types
"
" Maintainer: Bram Moolenaar <Bram@vim.org>
-" Last Change: 2020 Dec 07
+" Last Change: 2020 Dec 24
" Listen very carefully, I will say this only once
if exists("did_load_filetypes")
diff --git a/runtime/ftplugin/dune.vim b/runtime/ftplugin/dune.vim
index 8b1f8b4..86c99c0 100644
--- a/runtime/ftplugin/dune.vim
+++ b/runtime/ftplugin/dune.vim
@@ -1,7 +1,7 @@
" Language: Dune buildsystem
" Maintainer: Markus Mottl <markus.mottl@gmail.com>
" Anton Kochkov <anton.kochkov@gmail.com>
-" URL: https://github.com/rgrinberg/vim-ocaml
+" URL: https://github.com/ocaml/vim-ocaml
" Last Change:
" 2018 Nov 3 - Added commentstring (Markus Mottl)
" 2017 Sep 6 - Initial version (Etienne Millon)
diff --git a/runtime/ftplugin/fstab.vim b/runtime/ftplugin/fstab.vim
new file mode 100644
index 0000000..3e7af9f
--- /dev/null
+++ b/runtime/ftplugin/fstab.vim
@@ -0,0 +1,19 @@
+" Vim ftplugin file
+" Language: fstab file
+" Maintainer: Radu Dineiu <radu.dineiu@gmail.com>
+" URL: https://raw.github.com/rid9/vim-fstab/master/ftplugin/fstab.vim
+" Last Change: 2020 Dec 29
+" Version: 1.0
+"
+" Credits:
+" Subhaditya Nath <sn03.general@gmail.com>
+
+if exists("b:did_ftplugin")
+ finish
+endif
+let b:did_ftplugin = 1
+
+setlocal commentstring=#%s
+let b:undo_ftplugin = "setlocal commentstring<"
+
+" vim: ts=8 ft=vim
\ No newline at end of file
diff --git a/runtime/ftplugin/ocaml.vim b/runtime/ftplugin/ocaml.vim
index e0d7efe..793b887 100644
--- a/runtime/ftplugin/ocaml.vim
+++ b/runtime/ftplugin/ocaml.vim
@@ -5,7 +5,7 @@
" Pierre Vittet <pierre-vittet@pvittet.com>
" Stefano Zacchiroli <zack@bononia.it>
" Vincent Aravantinos <firstname.name@imag.fr>
-" URL: https://github.com/rgrinberg/vim-ocaml
+" URL: https://github.com/ocaml/vim-ocaml
" Last Change:
" 2013 Oct 27 - Added commentstring (MM)
" 2013 Jul 26 - load default compiler settings (MM)
@@ -38,7 +38,8 @@
set cpo&vim
" Comment string
-setlocal comments=
+setlocal comments=sr:(*\ ,mb:\ ,ex:*)
+setlocal comments^=sr:(**,mb:\ \ ,ex:*)
setlocal commentstring=(*%s*)
" Add mappings, unless the user didn't want this.
@@ -391,9 +392,9 @@
endif
endfun
- " This variable contain a dictionnary of list. Each element of the dictionnary
- " represent an annotation system. An annotation system is a list with :
- " - annotation file name as it's key
+ " This variable contains a dictionary of lists. Each element of the dictionary
+ " represents an annotation system. An annotation system is a list with:
+ " - annotation file name as its key
" - annotation file path as first element of the contained list
" - build path as second element of the contained list
" - annot_file_last_mod (contain the date of .annot file) as third element
@@ -521,7 +522,7 @@
"c. link this stuff with what the user wants
" ie. get the expression selected/under the cursor
- let s:ocaml_word_char = '\w|[À-ÿ]|'''
+ let s:ocaml_word_char = '\w|[\xc0-\xff]|'''
"In: the current mode (eg. "visual", "normal", etc.)
"Out: the borders of the expression we are looking for the type
diff --git a/runtime/ftplugin/sexplib.vim b/runtime/ftplugin/sexplib.vim
new file mode 100644
index 0000000..27e1b28
--- /dev/null
+++ b/runtime/ftplugin/sexplib.vim
@@ -0,0 +1,15 @@
+" Vim filetype plugin file
+" Language: Sexplib
+" Maintainer: Markus Mottl <markus.mottl@gmail.com>
+" URL: https://github.com/ocaml/vim-ocaml
+" Last Change:
+" 2017 Apr 12 - First version (MM)
+
+if exists("b:did_ftplugin")
+ finish
+endif
+let b:did_ftplugin=1
+
+" Comment string
+setl commentstring=;\ %s
+setl comments=:;
diff --git a/runtime/indent/dune.vim b/runtime/indent/dune.vim
new file mode 100644
index 0000000..0590d66
--- /dev/null
+++ b/runtime/indent/dune.vim
@@ -0,0 +1,13 @@
+" Vim indent file
+" Language: dune
+" Maintainers: Markus Mottl <markus.mottl@gmail.com>
+" URL: https://github.com/ocaml/vim-ocaml
+" Last Change: 2021 Jan 01
+
+if exists("b:did_indent")
+ finish
+endif
+let b:did_indent = 1
+
+" dune format-dune-file uses 1 space to indent
+setlocal softtabstop=1 shiftwidth=1 expandtab
diff --git a/runtime/indent/ocaml.vim b/runtime/indent/ocaml.vim
index 8fe9de3..19c81f4 100644
--- a/runtime/indent/ocaml.vim
+++ b/runtime/indent/ocaml.vim
@@ -3,7 +3,7 @@
" Maintainers: Jean-Francois Yuen <jfyuen@happycoders.org>
" Mike Leary <leary@nwlink.com>
" Markus Mottl <markus.mottl@gmail.com>
-" URL: http://www.ocaml.info/vim/indent/ocaml.vim
+" URL: https://github.com/ocaml/vim-ocaml
" Last Change: 2017 Jun 13
" 2005 Jun 25 - Fixed multiple bugs due to 'else\nreturn ind' working
" 2005 May 09 - Added an option to not indent OCaml-indents specially (MM)
@@ -30,7 +30,8 @@
" Comment formatting
if !exists("no_ocaml_comments")
if (has("comments"))
- setlocal comments=sr:(*,mb:*,ex:*)
+ setlocal comments=sr:(*\ ,mb:\ ,ex:*)
+ setlocal comments^=sr:(**,mb:\ \ ,ex:*)
setlocal fo=cqort
endif
endif
diff --git a/runtime/syntax/diff.vim b/runtime/syntax/diff.vim
index ac43d66..408556a 100644
--- a/runtime/syntax/diff.vim
+++ b/runtime/syntax/diff.vim
@@ -2,7 +2,7 @@
" Language: Diff (context or unified)
" Maintainer: Bram Moolenaar <Bram@vim.org>
" Translations by Jakson Alves de Aquino.
-" Last Change: 2020 Dec 07
+" Last Change: 2020 Dec 30
" Quit when a (custom) syntax file was already loaded
if exists("b:current_syntax")
@@ -348,11 +348,16 @@
syn match diffFile "^diff\>.*"
syn match diffFile "^Index: .*"
syn match diffFile "^==== .*"
-" Old style diff uses *** for old and --- for new.
-" Unified diff uses --- for old and +++ for new; names are wrong but it works.
-syn match diffOldFile "^+++ .*"
-syn match diffOldFile "^\*\*\* .*"
-syn match diffNewFile "^--- .*"
+
+if search('^@@ -\S\+ +\S\+ @@', 'nw', '', 100)
+ " unified
+ syn match diffOldFile "^--- .*"
+ syn match diffNewFile "^+++ .*"
+else
+ " context / old style
+ syn match diffOldFile "^\*\*\* .*"
+ syn match diffNewFile "^--- .*"
+endif
" Used by git
syn match diffIndexLine "^index \x\x\x\x.*"
diff --git a/runtime/syntax/dune.vim b/runtime/syntax/dune.vim
index f901813..b425405 100644
--- a/runtime/syntax/dune.vim
+++ b/runtime/syntax/dune.vim
@@ -1,7 +1,8 @@
+" Vim syntax file
" Language: Dune buildsystem
" Maintainer: Markus Mottl <markus.mottl@gmail.com>
" Anton Kochkov <anton.kochkov@gmail.com>
-" URL: https://github.com/rgrinberg/vim-ocaml
+" URL: https://github.com/ocaml/vim-ocaml
" Last Change:
" 2019 Feb 27 - Add newer keywords to the syntax (Simon Cruanes)
" 2018 May 8 - Check current_syntax (Kawahara Satoru)
@@ -28,7 +29,7 @@
syn keyword lispKey javascript_files flags ocamlc_flags ocamlopt_flags pps staged_pps
syn keyword lispKey library_flags c_flags c_library_flags kind package action
syn keyword lispKey deps targets locks fallback
-syn keyword lispKey inline_tests tests names
+syn keyword lispKey inline_tests tests test names
syn keyword lispAtom true false
diff --git a/runtime/syntax/fstab.vim b/runtime/syntax/fstab.vim
index 6b17b5a..3184887 100644
--- a/runtime/syntax/fstab.vim
+++ b/runtime/syntax/fstab.vim
@@ -1,8 +1,8 @@
" Vim syntax file
" Language: fstab file
" Maintainer: Radu Dineiu <radu.dineiu@gmail.com>
-" URL: https://raw.github.com/rid9/vim-fstab/master/fstab.vim
-" Last Change: 2020 Aug 06
+" URL: https://raw.github.com/rid9/vim-fstab/master/syntax/fstab.vim
+" Last Change: 2020 Dec 30
" Version: 1.4
"
" Credits:
diff --git a/runtime/syntax/gift.vim b/runtime/syntax/gift.vim
new file mode 100644
index 0000000..3f8d631
--- /dev/null
+++ b/runtime/syntax/gift.vim
@@ -0,0 +1,216 @@
+" Vim syntax file
+"
+" Language: Moodle GIFT (General Import Format Template)
+" Maintainer: Selim Temizer (http://selimtemizer.com)
+" Creation: November 28, 2020
+" Latest Revision: December 21, 2020
+" Note: The order of entities in this file is important!
+
+if version < 600
+ syntax clear
+elseif exists("b:current_syntax")
+ finish
+endif
+
+
+setlocal conceallevel=1
+
+"-----------------------------------------------
+" GIFT entities
+
+syn match giftS "\~" contained "GIFT special characters
+syn match giftS "=" contained
+syn match giftS "#" contained
+syn match giftS "{" contained
+syn match giftS "}" contained
+syn match giftS ":" contained
+
+syn match giftES "\\\~" contained conceal cchar=~ "GIFT escaped special characters
+syn match giftES "\\=" contained conceal cchar==
+syn match giftES "\\#" contained conceal cchar=#
+syn match giftES "\\{" contained conceal cchar={
+syn match giftES "\\}" contained conceal cchar=}
+syn match giftES "\\:" contained conceal cchar=:
+
+syn match giftEN "\\n" contained conceal cchar=n "GIFT escaped newline
+
+syn match giftFormat "\[html]" contained "GIFT formats
+syn match giftFormat "\[plain]" contained
+syn match giftFormat "\[moodle]" contained
+syn match giftFormat "\[markdown]" contained
+
+"--------------------------------------------------------
+" HTML entities
+
+syn match giftH "<" contained "HTML characters that might need to be handled/escaped
+syn match giftH ">" contained
+syn match giftH "&" contained
+
+syn match giftEH "<" contained conceal cchar=< "HTML escaped characters
+syn match giftEH ">" contained conceal cchar=>
+syn match giftEH "&" contained conceal cchar=&
+syn match giftEH " " contained conceal cchar=_
+
+"-------------------------------------------------------
+" Answer components: Feedback and general feedback
+
+syn match giftFB "#\_.\{-}\(\_^\|[^\\]\)\ze\(=\|\~\|#\|####\|}\)" contained contains=giftF "Feedback block
+syn match giftF "#\zs\_.\{-}\(\_^\|[^\\]\)\ze\(=\|\~\|#\|####\|}\)" contained contains=@giftCEF "Feedback
+
+syn match giftGFB "####\_.\{-}\(\_^\|[^\\]\)\ze}" contained contains=giftGF "General feedback block
+syn match giftGF "####\zs\_.\{-}\(\_^\|[^\\]\)\ze}" contained contains=@giftCEF "General feedback
+
+"------------------------------------------------------
+" Answer components: Other components
+
+syn keyword giftTF T TRUE F FALSE contained
+
+syn match giftNum1 "[-+]\=[.0-9]\+" contained "Something matching a number
+
+syn match giftNum2 "[-+]\=[.0-9]\+\s*:\s*[-+]\=[.0-9]\+" contained contains=giftNum2D "Number with error margin
+syn match giftNum2D ":" contained "Associated delimiter
+
+syn match giftNum3 "[-+]\=[.0-9]\+\s*\.\.\s*[-+]\=[.0-9]\+" contained contains=giftNum3D "Number as min/max range
+syn match giftNum3D "\.\." contained "Associated delimiter
+
+syn match giftWeightB "%-*[0-9]\{1,2}\.\?[0-9]*%" contained contains=giftWeight "Weight block
+syn match giftWeight "%\zs-*[0-9]\{1,2}\.\?[0-9]*\ze%" contained "Weight
+
+"-----------------------------------------------------
+" Answer choices
+
+syn match giftWrongNum "\~\zs\_.\{-}\(\_^\|[^\\]\)\ze\(####\|}\)" contained contains=@giftCEFF "Wrong numeric choice
+syn match giftRightNum "=\zs\_.\{-}\(\_^\|[^\\]\)\ze\(=\|\~\|####\|}\)" contained contains=@giftCEFFW,@giftNums "Right numeric choice
+
+syn match giftWrong "\~\zs\_.\{-}\(\_^\|[^\\]\)\ze\(=\|\~\|####\|}\)" contained contains=@giftCEFFW "Wrong choice
+syn match giftRight "=\zs\_.\{-}\(\ze->\|\(\_^\|[^\\]\)\ze\(=\|\~\|####\|}\)\)" contained contains=@giftCEFFW "Right choice
+syn match giftMatchB "->\_.\{-}\(\_^\|[^\\]\)\ze\(=\|\~\|####\|}\)" contained contains=giftMatch "Match choice block
+syn match giftMatch "->\zs\_.\{-}\(\_^\|[^\\]\)\ze\(=\|\~\|####\|}\)" contained contains=@giftCE "Match choice
+
+"----------------------------------------------------
+" Answer
+
+syn match giftAnswer "{\_.\{-}\(\_^\|[^\\]\)}" contained keepend contains=@giftA "General answer
+syn match giftAnswer "{}" contained "Minimal answer
+
+syn match giftAnswerNum "{\_[[:space:]]*#\_[^#]\_.\{-}\(\_^\|[^\\]\)}" contained keepend contains=@giftANum "Numeric answer
+syn match giftAnswerNumD "{\zs\_[[:space:]]*#" contained "Associated delimiter
+
+"---------------------------------------------------
+" Question
+
+" The first pattern matches the last question at the end of the file (in case there is no empty line coming after).
+" However, it slows down parsing (and especially scrolling up), therefore it is commented out.
+
+"syn match giftQuestion "[^{[:space:]]\_.\{-}\%$" keepend contains=@giftCEF,giftAnswer,giftAnswerNum
+ syn match giftQuestion "[^{[:space:]]\_.\{-}\n\(\s*\n\)\+" keepend contains=@giftCEF,giftAnswer,giftAnswerNum
+
+"--------------------------------------------------
+" Question name
+
+syn match giftName "::\_.\{-}::" contains=@giftCE,giftNameD "Question name
+syn match giftNameD "::" contained "Associated delimiter
+
+"-------------------------------------------------
+" Category
+
+syn match giftCategoryB "^\s*\$CATEGORY:.*\n\+" contains=giftCategory "Category block
+syn match giftCategory "^\s*\$CATEGORY:\zs.*\ze\n" contained "Category
+
+"------------------------------------------------
+" Comments (may need to be the last entity)
+
+syn keyword giftTodo FIXME TODO NOTE FIX XXX contained
+
+syn match giftIdB "\[id:\(\\]\|[^][:cntrl:]]\)\+]" contained contains=giftId "Id block
+syn match giftId "\[id:\zs\(\\]\|[^][:cntrl:]]\)\+\ze]" contained "Id
+
+syn match giftTagB "\[tag:\(\\]\|[^]<>`[:cntrl:]]\)\+]" contained contains=giftTag "Tag block
+syn match giftTag "\[tag:\zs\(\\]\|[^]<>`[:cntrl:]]\)\+\ze]" contained "Tag
+
+syn match giftComment "^\s*//.*" contains=giftTodo,giftIdB,giftTagB
+
+"-----------------------------------------------
+" Clusters
+
+"Comments and entities (to be escaped)
+syn cluster giftCE contains=giftComment,giftS,giftES,giftEN,giftH,giftEH
+
+"The above plus format
+syn cluster giftCEF contains=@giftCE,giftFormat
+
+"The above plus feedback block
+syn cluster giftCEFF contains=@giftCEF,giftFB
+
+"The above plus weight block
+syn cluster giftCEFFW contains=@giftCEFF,giftWeightB
+
+"Possible numerical representations
+syn cluster giftNums contains=giftNum1,giftNum2,giftNum3
+
+"Possible contents of answers
+syn cluster giftA contains=giftComment,giftTF,giftWrong,giftRight,giftMatchB,giftFB,giftGFB
+
+"Possible contents of numerical answers
+syn cluster giftANum contains=giftAnswerNumD,giftComment,@giftNums,giftWrongNum,giftRightNum,giftFB,giftGFB
+
+"-----------------------------------------------
+
+let b:current_syntax = "gift"
+
+"-----------------------------------------------
+
+hi Conceal ctermbg=NONE ctermfg=Blue guibg=NONE guifg=Blue
+hi Feedback ctermbg=NONE ctermfg=DarkCyan guibg=NONE guifg=DarkCyan
+hi GFeedback ctermbg=NONE ctermfg=DarkGreen guibg=NONE guifg=DarkGreen
+hi WeightB ctermbg=NONE ctermfg=DarkYellow guibg=NONE guifg=DarkYellow
+
+"-----------------------------------------------
+
+hi def link giftS Error
+hi def link giftES Conceal
+hi def link giftEN Conceal
+hi def link giftFormat LineNr
+
+hi def link giftH Error
+hi def link giftEH Conceal
+
+hi def link giftFB PreProc
+hi def link giftF Feedback
+hi def link giftGFB Title
+hi def link giftGF GFeedback
+
+hi def link giftTF Question
+hi def link giftNum1 Question
+hi def link giftNum2 Question
+hi def link giftNum2D Special
+hi def link giftNum3 Question
+hi def link giftNum3D Special
+hi def link giftWeightB WeightB
+hi def link giftWeight Identifier
+
+hi def link giftWrongNum Constant
+hi def link giftRightNum Question
+hi def link giftWrong Constant
+hi def link giftRight Question
+hi def link giftMatchB ModeMsg
+hi def link giftMatch Constant
+
+hi def link giftAnswer MoreMsg
+hi def link giftAnswerNum MoreMsg
+hi def link giftAnswerNumD Identifier
+
+hi def link giftQuestion Identifier
+
+hi def link giftName PreProc
+hi def link giftNameD Directory
+
+hi def link giftCategoryB LineNr
+hi def link giftCategory Directory
+
+hi def link giftTodo Todo
+hi def link giftIdB LineNr
+hi def link giftId Title
+hi def link giftTagB LineNr
+hi def link giftTag Constant
+hi def link giftComment Comment
diff --git a/runtime/syntax/ocaml.vim b/runtime/syntax/ocaml.vim
index 42913f2..af3efd3 100644
--- a/runtime/syntax/ocaml.vim
+++ b/runtime/syntax/ocaml.vim
@@ -4,7 +4,7 @@
" Maintainers: Markus Mottl <markus.mottl@gmail.com>
" Karl-Heinz Sylla <Karl-Heinz.Sylla@gmd.de>
" Issac Trotts <ijtrotts@ucdavis.edu>
-" URL: https://github.com/rgrinberg/vim-ocaml
+" URL: https://github.com/ocaml/vim-ocaml
" Last Change:
" 2018 Nov 08 - Improved highlighting of operators (Maëlan)
" 2018 Apr 22 - Improved support for PPX (Andrey Popp)
@@ -18,14 +18,20 @@
" can be distinguished from begin/end, which is used for indentation,
" and folding. (David Baelde)
-" quit when a syntax file was already loaded
+" Quit when a syntax file was already loaded
if exists("b:current_syntax") && b:current_syntax == "ocaml"
finish
endif
+let s:keepcpo = &cpo
+set cpo&vim
+
" ' can be used in OCaml identifiers
setlocal iskeyword+='
+" ` is part of the name of polymorphic variants
+setlocal iskeyword+=`
+
" OCaml is case sensitive.
syn case match
@@ -123,7 +129,7 @@
syn region ocamlModSpec matchgroup=ocamlKeyword start="\<module\>" matchgroup=ocamlModule end="\<\u\(\w\|'\)*\>" contained contains=@ocamlAllErrs,ocamlComment skipwhite skipempty nextgroup=ocamlModTRWith,ocamlMPRestr
" "open"
-syn region ocamlNone matchgroup=ocamlKeyword start="\<open\>" matchgroup=ocamlModule end="\<\u\(\w\|'\)*\( *\. *\u\(\w\|'\)*\)*\>" contains=@ocamlAllErrs,ocamlComment
+syn match ocamlKeyword "\<open\>" skipwhite skipempty nextgroup=ocamlFullMod
" "include"
syn match ocamlKeyword "\<include\>" skipwhite skipempty nextgroup=ocamlModParam,ocamlFullMod
@@ -225,7 +231,18 @@
syn match ocamlAngle "<"
syn match ocamlAngle ">"
" Custom indexing operators:
-syn match ocamlIndexingOp "\.[~?!:|&$%=>@^/*+-][~?!.:|&$%<=>@^*/+-]*\(()\|\[]\|{}\)\(<-\)\?"
+syn region ocamlIndexing matchgroup=ocamlIndexingOp
+ \ start="\.[~?!:|&$%=>@^/*+-][~?!.:|&$%<=>@^*/+-]*\_s*("
+ \ end=")\(\_s*<-\)\?"
+ \ contains=ALLBUT,@ocamlContained,ocamlParenErr
+syn region ocamlIndexing matchgroup=ocamlIndexingOp
+ \ start="\.[~?!:|&$%=>@^/*+-][~?!.:|&$%<=>@^*/+-]*\_s*\["
+ \ end="]\(\_s*<-\)\?"
+ \ contains=ALLBUT,@ocamlContained,ocamlBrackErr
+syn region ocamlIndexing matchgroup=ocamlIndexingOp
+ \ start="\.[~?!:|&$%=>@^/*+-][~?!.:|&$%<=>@^*/+-]*\_s*{"
+ \ end="}\(\_s*<-\)\?"
+ \ contains=ALLBUT,@ocamlContained,ocamlBraceErr
" Extension operators (has to be declared before regular infix operators):
syn match ocamlExtensionOp "#[#~?!.:|&$%<=>@^*/+-]\+"
" Infix and prefix operators:
@@ -283,7 +300,6 @@
syn sync match ocamlSigSync groupthere ocamlSig "\<end\>"
" Define the default highlighting.
-" Only when an item doesn't have highlighting yet
hi def link ocamlBraceErr Error
hi def link ocamlBrackErr Error
@@ -308,14 +324,17 @@
hi def link ocamlObject Include
hi def link ocamlModule Include
hi def link ocamlModParam1 Include
+hi def link ocamlGenMod Include
hi def link ocamlModType Include
hi def link ocamlMPRestr3 Include
hi def link ocamlFullMod Include
+hi def link ocamlFuncWith Include
+hi def link ocamlModParam Include
hi def link ocamlModTypeRestr Include
hi def link ocamlWith Include
hi def link ocamlMTDef Include
-hi def link ocamlSigEncl ocamlModule
-hi def link ocamlStructEncl ocamlModule
+hi def link ocamlSigEncl ocamlModule
+hi def link ocamlStructEncl ocamlModule
hi def link ocamlScript Include
@@ -326,24 +345,25 @@
hi def link ocamlMPRestr2 Keyword
hi def link ocamlKeyword Keyword
hi def link ocamlMethod Include
+hi def link ocamlArrow Keyword
hi def link ocamlKeyChar Keyword
hi def link ocamlAnyVar Keyword
hi def link ocamlTopStop Keyword
-hi def link ocamlRefAssign ocamlKeyChar
-hi def link ocamlEqual ocamlKeyChar
-hi def link ocamlStar ocamlInfixOp
-hi def link ocamlAngle ocamlInfixOp
-hi def link ocamlCons ocamlInfixOp
+hi def link ocamlRefAssign ocamlKeyChar
+hi def link ocamlEqual ocamlKeyChar
+hi def link ocamlStar ocamlInfixOp
+hi def link ocamlAngle ocamlInfixOp
+hi def link ocamlCons ocamlInfixOp
-hi def link ocamlPrefixOp ocamlOperator
-hi def link ocamlInfixOp ocamlOperator
-hi def link ocamlExtensionOp ocamlOperator
-hi def link ocamlIndexingOp ocamlOperator
+hi def link ocamlPrefixOp ocamlOperator
+hi def link ocamlInfixOp ocamlOperator
+hi def link ocamlExtensionOp ocamlOperator
+hi def link ocamlIndexingOp ocamlOperator
if exists("ocaml_highlight_operators")
hi def link ocamlInfixOpKeyword ocamlOperator
- hi def link ocamlOperator Operator
+ hi def link ocamlOperator Operator
else
hi def link ocamlInfixOpKeyword Keyword
endif
@@ -353,7 +373,7 @@
hi def link ocamlNumber Number
hi def link ocamlFloat Float
hi def link ocamlString String
-hi def link ocamlQuotedStringDelim Identifier
+hi def link ocamlQuotedStringDelim Identifier
hi def link ocamlLabel Identifier
@@ -363,8 +383,11 @@
hi def link ocamlEncl Keyword
-hi def link ocamlPpxEncl ocamlEncl
+hi def link ocamlPpxEncl ocamlEncl
let b:current_syntax = "ocaml"
+let &cpo = s:keepcpo
+unlet s:keepcpo
+
" vim: ts=8
diff --git a/runtime/syntax/opam.vim b/runtime/syntax/opam.vim
new file mode 100644
index 0000000..9ac1d41
--- /dev/null
+++ b/runtime/syntax/opam.vim
@@ -0,0 +1,38 @@
+" Vim syntax file
+" Language: OPAM - OCaml package manager
+" Maintainer: Markus Mottl <markus.mottl@gmail.com>
+" URL: https://github.com/ocaml/vim-ocaml
+" Last Change:
+" 2020 Dec 31 - Added header (Markus Mottl)
+
+if exists("b:current_syntax")
+ finish
+endif
+
+" need %{vars}%
+" env: [[CAML_LD_LIBRARY_PATH = "%{lib}%/stublibs"]]
+syn keyword opamKeyword1 remove depends pin-depends depopts conflicts env packages patches version maintainer tags license homepage authors doc install author available name depexts substs synopsis description
+syn match opamKeyword2 "\v(bug-reports|post-messages|ocaml-version|opam-version|dev-repo|build-test|build-doc|build)"
+
+syn keyword opamTodo FIXME NOTE NOTES TODO XXX contained
+syn match opamComment "#.*$" contains=opamTodo,@Spell
+syn match opamOperator ">\|<\|=\|<=\|>="
+
+syn region opamInterpolate start=/%{/ end=/}%/ contained
+syn region opamString start=/"/ end=/"/ contains=opamInterpolate
+syn region opamSeq start=/\[/ end=/\]/ contains=ALLBUT,opamKeyword1,opamKeyword2
+syn region opamExp start=/{/ end=/}/ contains=ALLBUT,opamKeyword1,opamKeyword2
+
+hi link opamKeyword1 Keyword
+hi link opamKeyword2 Keyword
+
+hi link opamString String
+hi link opamExp Function
+hi link opamSeq Statement
+hi link opamOperator Operator
+hi link opamComment Comment
+hi link opamInterpolate Identifier
+
+let b:current_syntax = "opam"
+
+" vim: ts=2 sw=2
diff --git a/runtime/syntax/sexplib.vim b/runtime/syntax/sexplib.vim
new file mode 100644
index 0000000..55dd3fb
--- /dev/null
+++ b/runtime/syntax/sexplib.vim
@@ -0,0 +1,88 @@
+" Vim syntax file
+" Language: S-expressions as used in Sexplib
+" Filenames: *.sexp
+" Maintainers: Markus Mottl <markus.mottl@gmail.com>
+" URL: https://github.com/ocaml/vim-ocaml
+" Last Change: 2020 Dec 31 - Updated header for Vim contribution (MM)
+" 2017 Apr 11 - Improved matching of negative numbers (MM)
+" 2012 Jun 20 - Fixed a block comment highlighting bug (MM)
+
+" For version 5.x: Clear all syntax items
+" For version 6.x: Quit when a syntax file was already loaded
+if version < 600
+ syntax clear
+elseif exists("b:current_syntax") && b:current_syntax == "sexplib"
+ finish
+endif
+
+" Sexplib is case sensitive.
+syn case match
+
+" Comments
+syn keyword sexplibTodo contained TODO FIXME XXX NOTE
+syn region sexplibBlockComment matchgroup=sexplibComment start="#|" matchgroup=sexplibComment end="|#" contains=ALLBUT,sexplibQuotedAtom,sexplibUnquotedAtom,sexplibEncl,sexplibComment
+syn match sexplibSexpComment "#;" skipwhite skipempty nextgroup=sexplibQuotedAtomComment,sexplibUnquotedAtomComment,sexplibListComment,sexplibComment
+syn region sexplibQuotedAtomComment start=+"+ skip=+\\\\\|\\"+ end=+"+ contained
+syn match sexplibUnquotedAtomComment /\([^;()" \t#|]\|#[^;()" \t|]\||[^;()" \t#]\)[^;()" \t]*/ contained
+syn region sexplibListComment matchgroup=sexplibComment start="(" matchgroup=sexplibComment end=")" contained contains=ALLBUT,sexplibEncl,sexplibString,sexplibQuotedAtom,sexplibUnquotedAtom,sexplibTodo,sexplibNumber,sexplibFloat
+syn match sexplibComment ";.*" contains=sexplibTodo
+
+" Atoms
+syn match sexplibUnquotedAtom /\([^;()" \t#|]\|#[^;()" \t|]\||[^;()" \t#]\)[^;()" \t]*/
+syn region sexplibQuotedAtom start=+"+ skip=+\\\\\|\\"+ end=+"+
+syn match sexplibNumber "-\=\<\d\(_\|\d\)*[l|L|n]\?\>"
+syn match sexplibNumber "-\=\<0[x|X]\(\x\|_\)\+[l|L|n]\?\>"
+syn match sexplibNumber "-\=\<0[o|O]\(\o\|_\)\+[l|L|n]\?\>"
+syn match sexplibNumber "-\=\<0[b|B]\([01]\|_\)\+[l|L|n]\?\>"
+syn match sexplibFloat "-\=\<\d\(_\|\d\)*\.\?\(_\|\d\)*\([eE][-+]\=\d\(_\|\d\)*\)\=\>"
+
+" Lists
+syn region sexplibEncl transparent matchgroup=sexplibEncl start="(" matchgroup=sexplibEncl end=")" contains=ALLBUT,sexplibParenErr
+
+" Errors
+syn match sexplibUnquotedAtomErr /\([^;()" \t#|]\|#[^;()" \t|]\||[^;()" \t#]\)[^;()" \t]*\(#|\||#\)[^;()" \t]*/
+syn match sexplibParenErr ")"
+
+" Synchronization
+syn sync minlines=50
+syn sync maxlines=500
+
+" Define the default highlighting.
+" For version 5.7 and earlier: only when not done already
+" For version 5.8 and later: only when an item doesn't have highlighting yet
+if version >= 508 || !exists("did_sexplib_syntax_inits")
+ if version < 508
+ let did_sexplib_syntax_inits = 1
+ command -nargs=+ HiLink hi link <args>
+ else
+ command -nargs=+ HiLink hi def link <args>
+ endif
+
+ HiLink sexplibParenErr Error
+ HiLink sexplibUnquotedAtomErr Error
+
+ HiLink sexplibComment Comment
+ HiLink sexplibSexpComment Comment
+ HiLink sexplibQuotedAtomComment Include
+ HiLink sexplibUnquotedAtomComment Comment
+ HiLink sexplibBlockComment Comment
+ HiLink sexplibListComment Comment
+
+ HiLink sexplibBoolean Boolean
+ HiLink sexplibCharacter Character
+ HiLink sexplibNumber Number
+ HiLink sexplibFloat Float
+ HiLink sexplibUnquotedAtom Identifier
+ HiLink sexplibEncl Identifier
+ HiLink sexplibQuotedAtom Keyword
+
+ HiLink sexplibTodo Todo
+
+ HiLink sexplibEncl Keyword
+
+ delcommand HiLink
+endif
+
+let b:current_syntax = "sexplib"
+
+" vim: ts=8
diff --git a/runtime/syntax/sml.vim b/runtime/syntax/sml.vim
index fa4524f..afff530 100644
--- a/runtime/syntax/sml.vim
+++ b/runtime/syntax/sml.vim
@@ -3,13 +3,16 @@
" Filenames: *.sml *.sig
" Maintainers: Markus Mottl <markus.mottl@gmail.com>
" Fabrizio Zeno Cornelli <zeno@filibusta.crema.unimi.it>
-" URL: http://www.ocaml.info/vim/syntax/sml.vim
-" Last Change: 2006 Oct 23 - Fixed character highlighting bug (MM)
-" 2002 Jun 02 - Fixed small typo (MM)
-" 2001 Nov 20 - Fixed small highlighting bug with modules (MM)
+" Last Change: 2019 Oct 01 - Only spell check strings & comments (Chuan Wei Foo)
+" 2015 Aug 31 - Fixed opening of modules (Ramana Kumar)
+" 2006 Oct 23 - Fixed character highlighting bug (MM)
" quit when a syntax file was already loaded
if exists("b:current_syntax")
+
+" Disable spell checking of syntax.
+syn spell notoplevel
+
finish
endif
@@ -52,7 +55,7 @@
" Comments
-syn region smlComment start="(\*" end="\*)" contains=smlComment,smlTodo
+syn region smlComment start="(\*" end="\*)" contains=smlComment,smlTodo,@Spell
syn keyword smlTodo contained TODO FIXME XXX
@@ -82,7 +85,7 @@
syn region smlModSpec matchgroup=smlKeyword start="\<structure\>" matchgroup=smlModule end="\<\u\(\w\|'\)*\>" contained contains=@smlAllErrs,smlComment skipwhite skipempty nextgroup=smlModTRWith,smlMPRestr
" "open"
-syn region smlNone matchgroup=smlKeyword start="\<open\>" matchgroup=smlModule end="\<\u\(\w\|'\)*\(\.\u\(\w\|'\)*\)*\>" contains=@smlAllErrs,smlComment
+syn region smlNone matchgroup=smlKeyword start="\<open\>" matchgroup=smlModule end="\<\w\(\w\|'\)*\(\.\w\(\w\|'\)*\)*\>" contains=@smlAllErrs,smlComment
" "structure" - somewhat complicated stuff ;-)
syn region smlModule matchgroup=smlKeyword start="\<\(structure\|functor\)\>" matchgroup=smlModule end="\<\u\(\w\|'\)*\>" contains=@smlAllErrs,smlComment skipwhite skipempty nextgroup=smlPreDef
@@ -136,7 +139,7 @@
syn match smlCharacter +#"\\""\|#"."\|#"\\\d\d\d"+
syn match smlCharErr +#"\\\d\d"\|#"\\\d"+
-syn region smlString start=+"+ skip=+\\\\\|\\"+ end=+"+
+syn region smlString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=@Spell
syn match smlFunDef "=>"
syn match smlRefAssign ":="
@@ -149,9 +152,9 @@
syn match smlKeyChar "\*"
syn match smlKeyChar "="
-syn match smlNumber "\<-\=\d\+\>"
-syn match smlNumber "\<-\=0[x|X]\x\+\>"
-syn match smlReal "\<-\=\d\+\.\d*\([eE][-+]\=\d\+\)\=[fl]\=\>"
+syn match smlNumber "\<-\=\d\+\>"
+syn match smlNumber "\<-\=0[x|X]\x\+\>"
+syn match smlReal "\<-\=\d\+\.\d*\([eE][-+]\=\d\+\)\=[fl]\=\>"
" Synchronization
syn sync minlines=20
@@ -167,49 +170,49 @@
" Define the default highlighting.
" Only when an item doesn't have highlighting yet
-hi def link smlBraceErr Error
-hi def link smlBrackErr Error
-hi def link smlParenErr Error
+hi def link smlBraceErr Error
+hi def link smlBrackErr Error
+hi def link smlParenErr Error
-hi def link smlCommentErr Error
+hi def link smlCommentErr Error
-hi def link smlEndErr Error
-hi def link smlThenErr Error
+hi def link smlEndErr Error
+hi def link smlThenErr Error
-hi def link smlCharErr Error
+hi def link smlCharErr Error
-hi def link smlComment Comment
+hi def link smlComment Comment
-hi def link smlModPath Include
-hi def link smlModule Include
-hi def link smlModParam1 Include
-hi def link smlModType Include
-hi def link smlMPRestr3 Include
-hi def link smlFullMod Include
+hi def link smlModPath Include
+hi def link smlModule Include
+hi def link smlModParam1 Include
+hi def link smlModType Include
+hi def link smlMPRestr3 Include
+hi def link smlFullMod Include
hi def link smlModTypeRestr Include
-hi def link smlWith Include
-hi def link smlMTDef Include
+hi def link smlWith Include
+hi def link smlMTDef Include
hi def link smlConstructor Constant
-hi def link smlModPreRHS Keyword
-hi def link smlMPRestr2 Keyword
-hi def link smlKeyword Keyword
-hi def link smlFunDef Keyword
-hi def link smlRefAssign Keyword
-hi def link smlKeyChar Keyword
-hi def link smlAnyVar Keyword
-hi def link smlTopStop Keyword
-hi def link smlOperator Keyword
+hi def link smlModPreRHS Keyword
+hi def link smlMPRestr2 Keyword
+hi def link smlKeyword Keyword
+hi def link smlFunDef Keyword
+hi def link smlRefAssign Keyword
+hi def link smlKeyChar Keyword
+hi def link smlAnyVar Keyword
+hi def link smlTopStop Keyword
+hi def link smlOperator Keyword
-hi def link smlBoolean Boolean
-hi def link smlCharacter Character
-hi def link smlNumber Number
-hi def link smlReal Float
-hi def link smlString String
-hi def link smlType Type
-hi def link smlTodo Todo
-hi def link smlEncl Keyword
+hi def link smlBoolean Boolean
+hi def link smlCharacter Character
+hi def link smlNumber Number
+hi def link smlReal Float
+hi def link smlString String
+hi def link smlType Type
+hi def link smlTodo Todo
+hi def link smlEncl Keyword
let b:current_syntax = "sml"