diff options
author | Bram Moolenaar <Bram@vim.org> | 2021-01-02 16:39:53 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2021-01-02 16:39:53 +0100 |
commit | 7e6a515ed14e204fafb3dd6e98f2fb543e64aedd (patch) | |
tree | 75163fe37994ee84b512bbd8d833453583fd3bd8 /runtime | |
parent | 02faa944c69ea22a7a5338135b686dac2c946ca1 (diff) | |
download | vim-git-7e6a515ed14e204fafb3dd6e98f2fb543e64aedd.tar.gz |
Update runtime files.
Diffstat (limited to 'runtime')
31 files changed, 704 insertions, 184 deletions
diff --git a/runtime/compiler/ocaml.vim b/runtime/compiler/ocaml.vim index 7f8a7eab6..faa8af1f5 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 @@ let s:cpo_save = &cpo 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 e536dac71..990380f04 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 @@ function |expand()|. 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 8b85dad9c..304322541 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 @@ searchcount([{options}]) *searchcount()* 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 @@ timer_start({time}, {callback} [, {options}]) 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 @@ text... :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 c724923e4..3a06baf66 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 @@ When no argument is given to |:help| the file given with the 'helpfile' option 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 c555dc29c..7d68399cb 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 from any other mode. This can be used to make sure Vim is in 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 9ce649db4..fbf4ce24c 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 @@ and the screen is about to be redrawn: -> 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 b69f650b4..f5c48590e 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 @@ See the file [.SRC]INSTALLVMS.TXT. 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 @@ GNU_TOOLS.ZIP package downloadable from http://www.polarhome.com/vim/ 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 4a574e35d..177a652b7 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 @@ the pattern will not match. This is only useful when debugging Vim. ============================================================================== 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 "\M" makes the pattern after it be interpreted as if 'nomagic' is used. 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 f6c96d027..fc699a1d7 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 @@ For writing a Vim script, see chapter 41 of the user manual |usr_41.txt|. 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 18e3d98af..a32731db8 100644 --- a/runtime/doc/tags +++ b/runtime/doc/tags @@ -2072,6 +2072,11 @@ $VIM_POSIX vi_diff.txt /*$VIM_POSIX* :_#< 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 @@ $VIM_POSIX vi_diff.txt /*$VIM_POSIX* :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 @@ VMS os_vms.txt /*VMS* 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_#< 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 @@ characterwise-visual visual.txt /*characterwise-visual* 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 hebrew.txt /*hebrew* 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-variable eval.txt /*vim-variable* 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-export vim9.txt /*vim9-export* 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 0093a9679..5b7850fe3 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 08815ef8c..195122910 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 @@ term_setapi({buf}, {expr}) *term_setapi()* 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 a66de919a..af78965e9 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 @@ Executing shell commands in a window |shell-window| 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 @@ A slightly more advanced version is used in the |matchparen| plugin. 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 7a87de060..07779b470 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 @@ browser use: https://github.com/vim/vim/issues/1234 *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 @@ Vim9 - Make everything work: - 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 @@ Vim9 - Make everything work: 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 @@ Vim9 - Make everything work: - 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 @@ Further improvements: - 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 @@ Terminal debugger: 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 @@ Have another look at the implementation. 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 @@ Session file contains absolute paths when "curdir" is removed form '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 @@ when adding a sign for every quickfix entry. (#4557) 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 @@ Overlong utf-8 sequence is displayed wrong. (Harm te Hennepe, 2017 Sep 14, #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 @@ Json string with trailing \u should be an error. (Lcd) 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 @@ Doesn't work completely (Dominique Orban) 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 @@ Out of scope: - 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 @@ opening/closing window causes other window with 'winfixheight' to change 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 @@ still delete them. Also convert all buffer file names? "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 @@ New PHP syntax file, use it? (Peter Hodge) ":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 f7dc1fc07..161527c82 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 @@ Solution: Convert the printer name from the active codepage to 'encoding'. 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 @@ Files: src/ex_cmds2.c, src/getchar.c, src/testdir/test_mapping.vim, 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 @@ Files: src/buffer.c, src/change.c, src/diff.c, src/evalbuffer.c, 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 @@ Solution: Use // comments. (Yegappan Lakshmanan, closes #6190) 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 @@ Files: runtime/doc/change.txt, src/mbyte.c, src/ops.c, src/option.h, 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 @@ Files: src/buffer.c, src/testdir/test_tabline.vim 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 b21b7bfad..e13863a02 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 @@ features in Vim9 script. 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 @@ command: > 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 @@ is either falsy or truthy. This is mostly like JavaScript, except that an 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 @@ empty list and dict is falsy: 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 @@ result is a boolean. "!!" can be used to turn any value into boolean: > 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 d624e2b34..dddb6d11c 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 8b1f8b412..86c99c097 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 000000000..3e7af9fb3 --- /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 e0d7efe99..793b887af 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 @@ let s:cposet=&cpoptions 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 @@ endfunction 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 @@ endfunction "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 000000000..27e1b2837 --- /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 000000000..0590d66d1 --- /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 8fe9de3d6..19c81f49c 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 @@ setlocal nosmartindent " 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 ac43d6650..408556ac1 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 diffLine "^\d\+\(,\d\+\)\=[cda]\d\+\>.*" 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 f901813d2..b4254057c 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 ppx_runtime_libraries virtual_deps js_of_ocaml link_flags 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 6b17b5a35..318488713 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 000000000..3f8d631ec --- /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 42913f228..af3efd3da 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 ocamlSig matchgroup=ocamlSigEncl start="\<sig\>" matchgroup=ocamlSi 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 ocamlStar "*" 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 grouphere ocamlSig "\<sig\>" 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 ocamlModPath Include 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 ocamlModPreRHS Keyword 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 ocamlCharacter Character 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 ocamlTodo Todo 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 000000000..9ac1d41ce --- /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 000000000..55dd3fb49 --- /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 fa4524f93..afff5304e 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 @@ syn region smlEncl transparent matchgroup=smlKeyword start="#\[" matchgroup=sm " 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 smlSig matchgroup=smlModule start="\<sig\>" matchgroup=smlModule en 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 smlModPath "\u\(\w\|'\)*\."he=e-1 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 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 @@ syn sync match smlSigSync groupthere smlSig "\<end\>" " 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 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 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 let b:current_syntax = "sml" |