]> granicus.if.org Git - vim/commitdiff
Updated runtime files.
authorBram Moolenaar <Bram@vim.org>
Tue, 10 Nov 2015 20:15:48 +0000 (21:15 +0100)
committerBram Moolenaar <Bram@vim.org>
Tue, 10 Nov 2015 20:15:48 +0000 (21:15 +0100)
14 files changed:
runtime/doc/diff.txt
runtime/doc/if_pyth.txt
runtime/doc/options.txt
runtime/doc/quickref.txt
runtime/doc/syntax.txt
runtime/doc/tags
runtime/doc/todo.txt
runtime/doc/vi_diff.txt
runtime/indent/yaml.vim
runtime/syntax/cpp.vim
runtime/syntax/remind.vim
runtime/syntax/sh.vim
runtime/syntax/tex.vim
runtime/syntax/vim.vim

index beb0137dbc7c66572cf94fd5b21807ecdd1ac85e..db7e4e859ae32324ff534551a7126e9372fcd17d 100644 (file)
@@ -1,4 +1,4 @@
-*diff.txt*      For Vim version 7.4.  Last change: 2015 Jul 03
+*diff.txt*      For Vim version 7.4.  Last change: 2015 Nov 01
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -182,8 +182,8 @@ hidden buffers.  You can use ":hide" to close a window without unloading the
 buffer.  If you don't want a buffer to remain used for the diff do ":set
 nodiff" before hiding it.
 
-                                                       *:diffu* *:diffupdate*
-:diffu[pdate][!]               Update the diff highlighting and folds.
+                                                       *:dif* *:diffupdate*
+:dif[fupdate][!]               Update the diff highlighting and folds.
 
 Vim attempts to keep the differences updated when you make changes to the
 text.  This mostly takes care of inserted and deleted lines.  Changes within a
index 3d066e33ee462cb9d689c9962f29d98f23885c5c..cc47beb27eb5596d9f000dddb2817b7d041d6676 100644 (file)
@@ -1,4 +1,4 @@
-*if_pyth.txt*   For Vim version 7.4.  Last change: 2015 Oct 16
+*if_pyth.txt*   For Vim version 7.4.  Last change: 2015 Nov 10
 
 
                  VIM REFERENCE MANUAL    by Paul Moore
@@ -693,7 +693,7 @@ The name of the DLL must match the Python version Vim was compiled with.
 Currently the name is "python24.dll".  That is for Python 2.4.  To know for
 sure edit "gvim.exe" and search for "python\d*.dll\c".
 
-On Unix the 'pythondll' or 'python3dll' option can be used to specify the
+On Unix the 'pythondll' or 'pythonthreedll' option can be used to specify the
 Python shared library file instead of DYNAMIC_PYTHON_DLL or
 DYNAMIC_PYTHON3_DLL file what were specified at compile time.  The version of
 the shared library must match the Python 2.x or Python 3 version Vim was
index c987545eaef49a683c703eefca144377e08fef04..413353c4263bb4d43f0ec6f9f5ff525f7e11e746 100644 (file)
@@ -1,4 +1,4 @@
-*options.txt*  For Vim version 7.4.  Last change: 2015 Nov 01
+*options.txt*  For Vim version 7.4.  Last change: 2015 Nov 10
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -5698,25 +5698,25 @@ A jump table for the options with a short description can be found at |Q_op|.
        Insert mode completion.  When zero as much space as available is used.
        |ins-completion-menu|.
 
-                                               *'pythonthreedll'*
-'pythonthreedll'       string  (default empty)
+                                               *'pythondll'*
+'pythondll'            string  (default empty)
                        global
                        {not in Vi} {only for Unix}
-                       {only available when compiled with the |+python3/dyn|
+                       {only available when compiled with the |+python/dyn|
                        feature}
-       Specifies the path of the Python 3 shared library instead of
-       DYNAMIC_PYTHON3_DLL what was specified at compile time.
+       Specifies the path of the Python 2.x shared library instead of
+       DYNAMIC_PYTHON_DLL what was specified at compile time.
        This option cannot be set from a |modeline| or in the |sandbox|, for
        security reasons.
 
-                                               *'pythondll'*
-'pythondll'            string  (default empty)
+                                               *'pythonthreedll'*
+'pythonthreedll'       string  (default empty)
                        global
                        {not in Vi} {only for Unix}
-                       {only available when compiled with the |+python/dyn|
+                       {only available when compiled with the |+python3/dyn|
                        feature}
-       Specifies the path of the Python 2.x shared library instead of
-       DYNAMIC_PYTHON_DLL what was specified at compile time.
+       Specifies the path of the Python 3 shared library instead of
+       DYNAMIC_PYTHON3_DLL what was specified at compile time.
        This option cannot be set from a |modeline| or in the |sandbox|, for
        security reasons.
 
index a2128297f9001b38e121ff753b74fc9535c8b946..e275c4383debe7ca24b807339190211853755df9 100644 (file)
@@ -1,4 +1,4 @@
-*quickref.txt*  For Vim version 7.4.  Last change: 2015 Jul 21
+*quickref.txt*  For Vim version 7.4.  Last change: 2015 Nov 10
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -777,6 +777,7 @@ Short explanation of each option:           *option-list*
 'list'                     show <Tab> and <EOL>
 'listchars'      'lcs'     characters for displaying in list mode
 'loadplugins'    'lpl'     load plugin scripts when starting up
+'luadll'                   name of the Lua dynamic library
 'macatsui'                 Mac GUI: use ATSUI text drawing
 'magic'                            changes special characters in search patterns
 'makeef'         'mef'     name of the errorfile for ":make"
@@ -816,6 +817,7 @@ Short explanation of each option:           *option-list*
 'patchexpr'      'pex'     expression used to patch a file
 'patchmode'      'pm'      keep the oldest version of a file
 'path'           'pa'      list of directories searched with "gf" et.al.
+'perldll'                  name of the Perl dynamic library
 'preserveindent'  'pi'     preserve the indent structure when reindenting
 'previewheight'   'pvh'     height of the preview window
 'previewwindow'   'pvw'     identifies the preview window
@@ -828,6 +830,8 @@ Short explanation of each option:           *option-list*
 'printmbfont'    'pmbfn'   font names to be used for CJK output of :hardcopy
 'printoptions'   'popt'    controls the format of :hardcopy output
 'pumheight'      'ph'      maximum height of the popup menu
+'pythondll'                name of the Python 2 dynamic library
+'pythonthreedll'           name of the Python 3 dynamic library
 'quoteescape'    'qe'      escape characters used in a string
 'readonly'       'ro'      disallow writing the buffer
 'redrawtime'     'rdt'     timeout for 'hlsearch' and |:match| highlighting
@@ -840,6 +844,7 @@ Short explanation of each option:           *option-list*
 'revins'         'ri'      inserting characters will work backwards
 'rightleft'      'rl'      window is right-to-left oriented
 'rightleftcmd'   'rlc'     commands for which editing works right-to-left
+'rubydll'                  name of the Ruby dynamic library
 'ruler'                  'ru'      show cursor line and column in the status line
 'rulerformat'    'ruf'     custom format for the ruler
 'runtimepath'    'rtp'     list of directories used for runtime files
index 0e71a39e8659e5e263fd5d21401d2e306c3790f5..7c676db99dabb0af94fc4fd1d820d9292685b1d2 100644 (file)
@@ -1,4 +1,4 @@
-*syntax.txt*   For Vim version 7.4.  Last change: 2015 Oct 17
+*syntax.txt*   For Vim version 7.4.  Last change: 2015 Nov 05
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -1082,6 +1082,7 @@ Most of things are same as |ft-c-syntax|.
 
 Variable               Highlight ~
 cpp_no_cpp11           don't highlight C++11 standard items
+cpp_no_cpp14           don't highlight C++14 standard items
 
 
 CSH                                            *csh.vim* *ft-csh-syntax*
@@ -4165,7 +4166,7 @@ example, for instance, can be done like this: >
 
 As can be seen here, the \z actually does double duty. In the start pattern,
 it marks the "\(\I\i*\)" sub-expression as external; in the end pattern, it
-changes the \1 back-reference into an external reference referring to the
+changes the \z1 back-reference into an external reference referring to the
 first external sub-expression in the start pattern.  External references can
 also be used in skip patterns: >
   :syn region foo start="start \(\I\i*\)" skip="not end \z1" end="end \z1"
index 9b2a73b35a7a3b9aa73a25711b10db727ab32828..fb6d5aa4ebc8dd8e9ea178bbd0fc36d90bf3ae2e 100644 (file)
@@ -415,6 +415,7 @@ $VIMRUNTIME starting.txt    /*$VIMRUNTIME*
 'lpl'  options.txt     /*'lpl'*
 'ls'   options.txt     /*'ls'*
 'lsp'  options.txt     /*'lsp'*
+'luadll'       options.txt     /*'luadll'*
 'lw'   options.txt     /*'lw'*
 'lz'   options.txt     /*'lz'*
 'ma'   options.txt     /*'ma'*
@@ -499,6 +500,8 @@ $VIMRUNTIME starting.txt    /*$VIMRUNTIME*
 'nobk' options.txt     /*'nobk'*
 'nobl' options.txt     /*'nobl'*
 'nobomb'       options.txt     /*'nobomb'*
+'nobreakindent'        options.txt     /*'nobreakindent'*
+'nobri'        options.txt     /*'nobri'*
 'nobuflisted'  options.txt     /*'nobuflisted'*
 'nocf' options.txt     /*'nocf'*
 'noci' options.txt     /*'noci'*
@@ -549,6 +552,8 @@ $VIMRUNTIME starting.txt    /*$VIMRUNTIME*
 'nofk' options.txt     /*'nofk'*
 'nofkmap'      options.txt     /*'nofkmap'*
 'nofoldenable' options.txt     /*'nofoldenable'*
+'nofs' options.txt     /*'nofs'*
+'nofsync'      options.txt     /*'nofsync'*
 'nogd' options.txt     /*'nogd'*
 'nogdefault'   options.txt     /*'nogdefault'*
 'noguipty'     options.txt     /*'noguipty'*
@@ -575,11 +580,13 @@ $VIMRUNTIME       starting.txt    /*$VIMRUNTIME*
 'nois' options.txt     /*'nois'*
 'nojoinspaces' options.txt     /*'nojoinspaces'*
 'nojs' options.txt     /*'nojs'*
+'nolangnoremap'        options.txt     /*'nolangnoremap'*
 'nolazyredraw' options.txt     /*'nolazyredraw'*
 'nolbr'        options.txt     /*'nolbr'*
 'nolinebreak'  options.txt     /*'nolinebreak'*
 'nolisp'       options.txt     /*'nolisp'*
 'nolist'       options.txt     /*'nolist'*
+'nolnr'        options.txt     /*'nolnr'*
 'noloadplugins'        options.txt     /*'noloadplugins'*
 'nolpl'        options.txt     /*'nolpl'*
 'nolz' options.txt     /*'nolz'*
@@ -727,6 +734,7 @@ $VIMRUNTIME starting.txt    /*$VIMRUNTIME*
 'path' options.txt     /*'path'*
 'pdev' options.txt     /*'pdev'*
 'penc' options.txt     /*'penc'*
+'perldll'      options.txt     /*'perldll'*
 'pex'  options.txt     /*'pex'*
 'pexpr'        options.txt     /*'pexpr'*
 'pfn'  options.txt     /*'pfn'*
@@ -753,6 +761,8 @@ $VIMRUNTIME starting.txt    /*$VIMRUNTIME*
 'pumheight'    options.txt     /*'pumheight'*
 'pvh'  options.txt     /*'pvh'*
 'pvw'  options.txt     /*'pvw'*
+'pythondll'    options.txt     /*'pythondll'*
+'pythonthreedll'       options.txt     /*'pythonthreedll'*
 'qe'   options.txt     /*'qe'*
 'quote motion.txt      /*'quote*
 'quoteescape'  options.txt     /*'quoteescape'*
@@ -779,6 +789,7 @@ $VIMRUNTIME starting.txt    /*$VIMRUNTIME*
 'rs'   options.txt     /*'rs'*
 'rtp'  options.txt     /*'rtp'*
 'ru'   options.txt     /*'ru'*
+'rubydll'      options.txt     /*'rubydll'*
 'ruf'  options.txt     /*'ruf'*
 'ruler'        options.txt     /*'ruler'*
 'rulerformat'  options.txt     /*'rulerformat'*
@@ -2132,6 +2143,7 @@ $VIMRUNTIME       starting.txt    /*$VIMRUNTIME*
 :delm  motion.txt      /*:delm*
 :delmarks      motion.txt      /*:delmarks*
 :di    change.txt      /*:di*
+:dif   diff.txt        /*:dif*
 :diffg diff.txt        /*:diffg*
 :diffget       diff.txt        /*:diffget*
 :diffo diff.txt        /*:diffo*
@@ -2144,7 +2156,6 @@ $VIMRUNTIME       starting.txt    /*$VIMRUNTIME*
 :diffsplit     diff.txt        /*:diffsplit*
 :difft diff.txt        /*:difft*
 :diffthis      diff.txt        /*:diffthis*
-:diffu diff.txt        /*:diffu*
 :diffupdate    diff.txt        /*:diffupdate*
 :dig   digraph.txt     /*:dig*
 :digraphs      digraph.txt     /*:digraphs*
@@ -6867,6 +6878,7 @@ lua       if_lua.txt      /*lua*
 lua-buffer     if_lua.txt      /*lua-buffer*
 lua-commands   if_lua.txt      /*lua-commands*
 lua-dict       if_lua.txt      /*lua-dict*
+lua-dynamic    if_lua.txt      /*lua-dynamic*
 lua-eval       if_lua.txt      /*lua-eval*
 lua-funcref    if_lua.txt      /*lua-funcref*
 lua-list       if_lua.txt      /*lua-list*
index c0582c12ae2b96518250955c7f5ddb81a1cb7290..1eb377615bd9c0cb356ee28c35845782dd7fa504 100644 (file)
@@ -1,4 +1,4 @@
-*todo.txt*      For Vim version 7.4.  Last change: 2015 Oct 31
+*todo.txt*      For Vim version 7.4.  Last change: 2015 Nov 10
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -35,6 +35,8 @@ not be repeated below, unless there is extra information.
 -------------------- Known bugs and current work -----------------------
 
 Regexp problems:
+- Instructions for reproducing issue #465 (crash in nfa_regtry):
+  https://github.com/mgedmin/vim-bug-465
 - The regexp engines are not reentrant, causing havoc when interrupted by a
   remote expression or something else.  Move global variables onto the stack
   or into an allocated struct.
@@ -75,6 +77,12 @@ Regexp problems:
 - The pattern "\1" with the old engine gives E65, with the new engine it
   matches the empty string. (Dominique Pelle, 2015 Oct 2)
 
+runtime/optwin.vim missing options:
+rubydll
+pythondll
+perldll
+luadll
+
 Still using freed memory after using setloclist(). (lcd, 2014 Jul 23)
 More info Jul 24.  Not clear why.
 
@@ -83,6 +91,20 @@ work. (ZyX, 2013 Sep 28)
 
 Problem using ":try" inside ":execute". (ZyX, 2013 Sep 15)
 
+When running out of memory, lalloc() invokes the garbage collector.
+May cause freeing used memory.  Just remove that call?
+Or add flag to avoid it when undesired.
+
+Installation of .desktop files does not work everywhere.
+It's now fixed, but the target directory probably isn't right.
+Add configure check?
+Should use /usr/local/share/applications or /usr/share/applications.
+Or use $XDG_DATA_DIRS.
+Also need to run update-desktop-database (Kuriyama Kazunobu, 2015 Nov 4)
+
+Access to uninitialized memory in match_backref() regexp_nda.c:4882
+(Dominique Pelle, 2015 Nov 6)
+
 Netrw update. (Charles 2015 Oct 23)
 
 Patch to use local value of 'errorformat' in :cexpr. (Christian Brabandt,
@@ -96,8 +118,6 @@ directory exists. (Sergio Gallelli, 2013 Dec 29)
 
 Updated syntax files. (Charles Campbell, 2015 Oct 19)
 
-Patch to include .desktop files in the distribution.  PR #455.
-
 Better changelog syntax file. (Martin Florian, 2015 Oct 25)
 
 Better readline syntax file. (Raphael Bazaud, 2015 Oct 25)
@@ -112,19 +132,10 @@ changes the window layout and the current window.  Make a variant that saves
 and restores.  Use in the matchparen plugin.
 Perhaps we can use ":silent window"?
 
-Patch for documentation mistakes. (Hirohito Higashi, 2015 Oct 22)
-
 Illegal memory access, requires ASAN to see. (Dominique Pelle, 2015 Jul 28)
 
 Gvim: when both Tab and CTRL-I are mapped, use CTRL-I not for Tab.
 
-Patch for yaml indent, #458.
-
-Patch for Python to add isatty, readable, etc. (PR #464)
-
-Patch to add options for specifying dll names. (Kazuki Sakamoto, 2015 Oct 16)
-PR #452  Check if it's secure (can't set from modeline).
-
 Unexpected delay when using CTRL-O u.  It's not timeoutlen.
 (Gary Johnson, 2015 Aug 28)
 
@@ -133,9 +144,23 @@ Same for src/xxd/Make_cyg.mak
 
 Python: ":py raw_input('prompt')" doesn't work. (Manu Hack)
 
+Patch to fix memory leak. (Dominique Pelle, 2015 Nov 4)
+
+Using uninitialized memory. (Dominique Pelle, 2015 Nov 4)
+
+Patch to recognize string slice for variable followed by colon.
+(Hirohito Higashi, 2015 Nov 3)
+
+Patch to support hangul input with utf-8.
+
+Patch to support UTF-8 for Hangul. (Shawn Y.H. Kim, 2011 May 1)
+Needs more work.  Pinged 2012 Jan 4.
+
 Patch to add debug backtrace. (Alberto Fanjul, 2015 Sep 27)
 Asked for :frame command.
 
+vt52 terminal codes are not correct.  Patch from Random, 2015 Nov 5.
+
 MS-Windows: When editing a file with a leading space, writing it uses the
 wrong name. (Aram, 2014 Nov 7)  Vim 7.4.
 
@@ -143,7 +168,7 @@ Can't recognize the $ProgramFiles(x86) environment variable.  Recognize it
 specifically?  First try with the parens, then without.
 
 Patch to add 'tagcase' option, whether to ignore case for tags.
-(Gary Johnson, 2015 Oct 17)
+(Gary Johnson, 2015 Nov 6)
 
 Patch to fix "." after CTRL-A in Visual block mode. (Ozaki Kiichi, 2015 Oct
 24)
@@ -196,6 +221,8 @@ Example in editing.txt uses $HOME with the expectating that it ends in a
 slash.  For me it does, but perhaps not for everybody.  Add a function that
 inserts a slash when needed?  pathconcat(dir, path) (Thilo Six, 2015 Aug 12)
 
+Patch to load TCL dynamically. (Ken Takata, 2015 Nov 10)
+
 ml_updatechunk() is slow when retrying for another encoding. (John Little,
 2014 Sep 11)
 
@@ -222,9 +249,6 @@ Is this right?
 Patch to have CTRL-A and CTRL-X update the '[ and '] marks.
 (Yukihiro Nakadaira, 2015 Aug 23)
 
-On MS-Windows viminfo file is always given the hidden attribute? (raulnac,
-2015 Oct 30)
-
 Patch to make getregtype() return the right size for non-linux systems.
 (Yasuhiro Matsumoto, 2014 Jul 8)
 Breaks test_eval.  Inefficient, can we only compute y_width when needed?
@@ -409,8 +433,6 @@ from?
 Problem with upwards search on Windows (works OK on Linux). (Brett Stahlman,
 2014 Jun 8)
 
-Patch to load TCL dynamically. (Ken Takata, 2014 Sep 20)
-
 Include a plugin manager with Vim? Neobundle seems to be the best currently.
 Long message about this from ZyX, 2014 Mar 23.  And following replies.
 Also see http://vim-wiki.mawercer.de/wiki/topic/vim%20plugin%20managment.html
@@ -803,9 +825,6 @@ Only for MS-Windows.  No documentation.  Do we want this?
 
 Patch to support cursor shape in Cygwin console. (Ben bgold, 2011 Dec 27)
 
-Patch to support UTF-8 for Hangul. (Shawn Y.H. Kim, 2011 May 1)
-Needs more work.  Pinged 2012 Jan 4.
-
 Issue 64: when 'incsearch' is on can't paste LF on command line.
 
 On MS-Windows a temp dir with a & init causes system() to fail. (Ben Fritz,
index aadbf9b41925efdf81e598e9914688a414fb8d4b..2a7bbe467255f45c66ff3fc886aa9c131420e0a2 100644 (file)
@@ -1,4 +1,4 @@
-*vi_diff.txt*   For Vim version 7.4.  Last change: 2013 Aug 22
+*vi_diff.txt*   For Vim version 7.4.  Last change: 2015 Nov 01
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
index 95a53b13866fdfaa7b8c6394e0339102e97f80e4..aa4906ce0a3aee2e3c8708857321b3fcd9914012 100644 (file)
@@ -1,7 +1,7 @@
 " Vim indent file
 " Language:         YAML
 " Maintainer:       Nikolai Pavlov <zyx.vim@gmail.com>
-" Last Change:     2015 Sep 25
+" Last Change:     2015 Nov 01
 
 " Only load this indent file when no other was loaded.
 if exists('b:did_indent')
@@ -14,7 +14,7 @@ set cpo&vim
 let b:did_indent = 1
 
 setlocal indentexpr=GetYAMLIndent(v:lnum)
-setlocal indentkeys=!^F,o,O,0#,0},0],<:>,-
+setlocal indentkeys=!^F,o,O,0#,0},0],<:>,0-
 setlocal nosmartindent
 
 let b:undo_indent = 'setlocal indentexpr< indentkeys< smartindent<'
index 135b8c9244ffd2f4ab8ee004a442fd1ae5102b4d..c7a68388beb68bc311c6f701aae054616e569595 100644 (file)
@@ -2,7 +2,7 @@
 " Language:    C++
 " Current Maintainer:  vim-jp (https://github.com/vim-jp/vim-cpp)
 " Previous Maintainer: Ken Shan <ccshan@post.harvard.edu>
-" Last Change: 2015 May 04
+" Last Change: 2015 Nov 10
 
 " For version 5.x: Clear all syntax items
 " For version 6.x: Quit when a syntax file was already loaded
@@ -23,7 +23,8 @@ endif
 " C++ extensions
 syn keyword cppStatement       new delete this friend using
 syn keyword cppAccess          public protected private
-syn keyword cppType            inline virtual explicit export bool wchar_t
+syn keyword cppModifier                inline virtual explicit export
+syn keyword cppType            bool wchar_t
 syn keyword cppExceptions      throw try catch
 syn keyword cppOperator                operator typeid
 syn keyword cppOperator                and bitor or xor compl bitand and_eq or_eq xor_eq not not_eq
@@ -36,7 +37,8 @@ syn keyword cppConstant               __cplusplus
 
 " C++ 11 extensions
 if !exists("cpp_no_cpp11")
-  syn keyword cppType          override final
+  syn keyword cppModifier      override final
+  syn keyword cppType          nullptr_t
   syn keyword cppExceptions    noexcept
   syn keyword cppStorageClass  constexpr decltype thread_local
   syn keyword cppConstant      nullptr
@@ -49,6 +51,11 @@ if !exists("cpp_no_cpp11")
   syn region cppRawString      matchgroup=cppRawStringDelimiter start=+\%(u8\|[uLU]\)\=R"\z([[:alnum:]_{}[\]#<>%:;.?*\+\-/\^&|~!=,"']\{,16}\)(+ end=+)\z1"+ contains=@Spell
 endif
 
+" C++ 14 extensions
+if !exists("cpp_no_cpp14")
+  syn match cppNumber          display "\<0b[01]\+\(u\=l\{0,2}\|ll\=u\)\>"
+endif
+
 " The minimum and maximum operators in GNU C++
 syn match cppMinMax "[<>]?"
 
@@ -65,6 +72,7 @@ if version >= 508 || !exists("did_cpp_syntax_inits")
   HiLink cppExceptions         Exception
   HiLink cppOperator           Operator
   HiLink cppStatement          Statement
+  HiLink cppModifier           Type
   HiLink cppType               Type
   HiLink cppStorageClass       StorageClass
   HiLink cppStructure          Structure
index 93a7178479b7e56b57f17b8aaee0d7e362290f9a..98064e043a7dde79c8b04b473b7cf2741be2b3f6 100644 (file)
@@ -1,13 +1,17 @@
 " Vim syntax file
 " Language:    Remind
-" Maintainer:  Davide Alberani <alberanid@libero.it>
-" Last Change: 18 Sep 2009
-" Version:     0.5
-" URL:         http://erlug.linux.it/~da/vim/syntax/remind.vim
+" Maintainer:  Davide Alberani <da@erlug.linux.it>
+" Last Change: 02 Nov 2015
+" Version:     0.7
+" URL:         http://ismito.it/vim/syntax/remind.vim
 "
-" remind is a sophisticated reminder service
-" you can download remind from:
-"   http://www.roaringpenguin.com/penguin/open_source_remind.php
+" Remind is a sophisticated calendar and alarm program.
+" You can download remind from:
+"   https://www.roaringpenguin.com/products/remind
+"
+" Changelog
+" version 0.7: updated email and link
+" version 0.6: added THROUGH keyword (courtesy of Ben Orchard)
 
 if version < 600
   syntax clear
@@ -19,7 +23,7 @@ endif
 syn case ignore
 
 syn keyword remindCommands     REM OMIT SET FSET UNSET
-syn keyword remindExpiry       UNTIL FROM SCANFROM SCAN WARN SCHED
+syn keyword remindExpiry       UNTIL FROM SCANFROM SCAN WARN SCHED THROUGH
 syn keyword remindTag          PRIORITY TAG
 syn keyword remindTimed                AT DURATION
 syn keyword remindMove         ONCE SKIP BEFORE AFTER
index 60f23d2d83d82b0097a51ba9e1bea6bb4eb17a16..830539428bbf2cc1ae98ddee73ba45c3c717ef02 100644 (file)
@@ -2,11 +2,11 @@
 " Language:            shell (sh) Korn shell (ksh) bash (sh)
 " Maintainer:          Charles E. Campbell  <NdrOchipS@PcampbellAfamily.Mbiz>
 " Previous Maintainer: Lennart Schultz <Lennart.Schultz@ecmwf.int>
-" Last Change:         Oct 09, 2015
-" Version:             139
+" Last Change:         Oct 21, 2015
+" Version:             141
 " URL:         http://www.drchip.org/astronaut/vim/index.html#SYNTAX_SH
 " For options and settings, please use:      :help ft-sh-syntax
-" This file includes many ideas from ?ric Brunet (eric.brunet@ens.fr)
+" This file includes many ideas from Eric Brunet (eric.brunet@ens.fr)
 
 " For version 5.x: Clear all syntax items {{{1
 " For version 6.x: Quit when a syntax file was already loaded
@@ -16,17 +16,6 @@ elseif exists("b:current_syntax")
   finish
 endif
 
-" AFAICT "." should be considered part of the iskeyword for ksh.  Using iskeywords
-" in syntax is dicey, so the following code permits the user to prevent/override
-"  g:sh_isk set to a string    : specify iskeyword.
-"  g:sh_noisk exists   : don't change iskeyword
-"  g:sh_noisk does not exist   : (default) append "." to iskeyword for kornshell
-if exists("g:sh_isk") && type(g:sh_isk) == 1   " user specifying iskeyword
- exe "setl isk=".g:sh_isk
-elseif !exists("g:sh_noisk") && exists("b:is_kornshell") " append '.' to iskeyword
- setl isk+=.
-endif
-
 " trying to answer the question: which shell is /bin/sh, really?
 " If the user has not specified any of g:is_kornshell, g:is_bash, g:is_posix, g:is_sh, then guess.
 if !exists("g:is_kornshell") && !exists("g:is_bash") && !exists("g:is_posix") && !exists("g:is_sh")
@@ -73,6 +62,7 @@ if !exists("b:is_kornshell") && !exists("b:is_bash")
 endif
 
 " set up default g:sh_fold_enabled {{{1
+" ================================
 if !exists("g:sh_fold_enabled")
  let g:sh_fold_enabled= 0
 elseif g:sh_fold_enabled != 0 && !has("folding")
@@ -95,6 +85,24 @@ if g:sh_fold_enabled && &fdm == "manual"
  setl fdm=syntax
 endif
 
+" Set up folding commands for shell {{{1
+" =================================
+if s:sh_fold_functions
+ com! -nargs=* ShFoldFunctions <args> fold
+else
+ com! -nargs=* ShFoldFunctions <args>
+endif
+if s:sh_fold_heredoc
+ com! -nargs=* ShFoldHereDoc <args> fold
+else
+ com! -nargs=* ShFoldHereDoc <args>
+endif
+if s:sh_fold_ifdofor
+ com! -nargs=* ShFoldIfDoFor <args> fold
+else
+ com! -nargs=* ShFoldIfDoFor <args>
+endif
+
 " sh syntax is case sensitive {{{1
 syn case match
 
@@ -126,9 +134,10 @@ syn cluster shHereList     contains=shBeginHere,shHerePayload
 syn cluster shHereListDQ       contains=shBeginHere,@shDblQuoteList,shHerePayload
 syn cluster shIdList   contains=shCommandSub,shWrapLineOperator,shSetOption,shDeref,shDerefSimple,shRedir,shExSingleQuote,shExDoubleQuote,shSingleQuote,shDoubleQuote,shExpr,shCtrlSeq,shStringSpecial,shAtExpr
 syn cluster shIfList   contains=@shLoopList,shDblBrace,shDblParen,shFunctionKey,shFunctionOne,shFunctionTwo
-syn cluster shLoopList contains=@shCaseList,@shErrorList,shCaseEsac,shConditional,shDblBrace,shExpr,shFor,shForPP,shIf,shOption,shSet,shTest,shTestOpr
+syn cluster shLoopList contains=@shCaseList,@shErrorList,shCaseEsac,shConditional,shDblBrace,shExpr,shFor,shForPP,shIf,shOption,shSet,shTest,shTestOpr,shTouch
 syn cluster shSubShList        contains=@shCommandSubList,shCaseEsac,shColon,shCommandSub,shComment,shDo,shEcho,shExpr,shFor,shIf,shRedir,shSetList,shSource,shStatement,shVariable,shCtrlSeq,shOperator
 syn cluster shTestList contains=shCharClass,shCommandSub,shCtrlSeq,shDeref,shDerefSimple,shDoubleQuote,shExDoubleQuote,shExpr,shExSingleQuote,shNumber,shOperator,shSingleQuote,shTest,shTestOpr
+
 " Echo: {{{1
 " ====
 " This one is needed INSIDE a CommandSub, so that `echo bla` be correct
@@ -145,6 +154,11 @@ if exists("b:is_kornshell") || exists("b:is_bash")
  syn match shStatement "\<alias\>"
  syn region shAlias matchgroup=shStatement start="\<alias\>\s\+\(\h[-._[:alnum:]]\+\)\@="  skip="\\$" end="\>\|`"
  syn region shAlias matchgroup=shStatement start="\<alias\>\s\+\(\h[-._[:alnum:]]\+=\)\@=" skip="\\$" end="="
+
+ " Touch: {{{1
+ " =====
+ syn match shTouch     '\<touch\>[^;#]*'       skipwhite nextgroup=shTouchList contains=shTouchCmd
+ syn match shTouchCmd  '\<touch\>'             contained
 endif
 
 " Error Codes: {{{1
@@ -193,15 +207,16 @@ syn region shSubSh transparent matchgroup=shSubShRegion start="[^(]\zs(" end=")"
 "=======
 syn region shExpr      matchgroup=shRange start="\[" skip=+\\\\\|\\$\|\[+ end="\]" contains=@shTestList,shSpecial
 syn region shTest      transparent matchgroup=shStatement start="\<test\s" skip=+\\\\\|\\$+ matchgroup=NONE end="[;&|]"me=e-1 end="$" contains=@shExprList1
+syn region shNoQuote   start='\S'      skip='\%(\\\\\)*\\.'    end='\ze\s'     contained
 syn match  shTestOpr   contained       '[^-+/%]\zs=' skipwhite nextgroup=shTestDoubleQuote,shTestSingleQuote,shTestPattern
-syn match  shTestOpr   contained       "<=\|>=\|!=\|==\|-.\>\|-\(nt\|ot\|ef\|eq\|ne\|lt\|le\|gt\|ge\)\>\|[!<>]"
+syn match  shTestOpr   contained       "<=\|>=\|!=\|==\|=\~\|-.\>\|-\(nt\|ot\|ef\|eq\|ne\|lt\|le\|gt\|ge\)\>\|[!<>]"
 syn match  shTestPattern       contained       '\w\+'
 syn region shTestDoubleQuote   contained       start='\%(\%(\\\\\)*\\\)\@<!"' skip=+\\\\\|\\"+ end='"'
 syn match  shTestSingleQuote   contained       '\\.'
 syn match  shTestSingleQuote   contained       "'[^']*'"
 if exists("b:is_kornshell") || exists("b:is_bash")
- syn region  shDblBrace matchgroup=Delimiter start="\[\[" skip=+\\\\\|\\$+ end="\]\]"  contains=@shTestList,shComment
- syn region  shDblParen matchgroup=Delimiter start="((" skip=+\\\\\|\\$+ end="))"      contains=@shTestList,shComment
+ syn region  shDblBrace matchgroup=Delimiter start="\[\["      skip=+\%(\\\\\)*\\$+ end="\]\]" contains=@shTestList,shNoQuote,shComment
+ syn region  shDblParen matchgroup=Delimiter start="(("        skip=+\%(\\\\\)*\\$+ end="))"   contains=@shTestList,shComment
 endif
 
 " Character Class In Range: {{{1
@@ -210,17 +225,11 @@ syn match   shCharClass   contained       "\[:\(backspace\|escape\|return\|xdigit\|alnum
 
 " Loops: do, if, while, until {{{1
 " ======
-if s:sh_fold_ifdofor
- syn region shDo       fold transparent matchgroup=shConditional start="\<do\>" matchgroup=shConditional end="\<done\>"                        contains=@shLoopList
- syn region shIf       fold transparent matchgroup=shConditional start="\<if\_s" matchgroup=shConditional skip=+-fi\>+ end="\<;\_s*then\>" end="\<fi\>"        contains=@shIfList
- syn region shFor      fold matchgroup=shLoop start="\<for\ze\_s\s*\%(((\)\@!" end="\<in\_s" end="\<do\>"me=e-2                                contains=@shLoopList,shDblParen skipwhite nextgroup=shCurlyIn
- syn region shForPP    fold matchgroup=shLoop start='\<for\>\_s*((' end='))' contains=shTestOpr
-else
- syn region shDo       transparent matchgroup=shConditional start="\<do\>" matchgroup=shConditional end="\<done\>"                     contains=@shLoopList
- syn region shIf       transparent matchgroup=shConditional start="\<if\_s" matchgroup=shConditional skip=+-fi\>+ end="\<;\_s*then\>" end="\<fi\>"     contains=@shIfList
- syn region shFor      matchgroup=shLoop start="\<for\ze\_s\s*\%(((\)\@!" end="\<in\>" end="\<do\>"me=e-2                      contains=@shLoopList,shDblParen skipwhite nextgroup=shCurlyIn
- syn region shForPP    matchgroup=shLoop start='\<for\>\_s*((' end='))' contains=shTestOpr
-endif
+ShFoldIfDoFor syn region shDo  transparent     matchgroup=shConditional start="\<do\>" matchgroup=shConditional end="\<done\>"                 contains=@shLoopList
+ShFoldIfDoFor syn region shIf  transparent     matchgroup=shConditional start="\<if\_s" matchgroup=shConditional skip=+-fi\>+ end="\<;\_s*then\>" end="\<fi\>" contains=@shIfList
+ShFoldIfDoFor syn region shFor         matchgroup=shLoop start="\<for\ze\_s\s*\%(((\)\@!" end="\<in\>" end="\<do\>"me=e-2                      contains=@shLoopList,shDblParen skipwhite nextgroup=shCurlyIn
+ShFoldIfDoFor syn region shForPP       matchgroup=shLoop start='\<for\>\_s*((' end='))' contains=shTestOpr
+
 if exists("b:is_kornshell") || exists("b:is_bash")
  syn cluster shCaseList        add=shRepeat
  syn cluster shFunctionList    add=shRepeat
@@ -238,13 +247,9 @@ syn match  shComma     contained   ","
 " ====
 syn match   shCaseBar  contained skipwhite "\(^\|[^\\]\)\(\\\\\)*\zs|"         nextgroup=shCase,shCaseStart,shCaseBar,shComment,shCaseExSingleQuote,shCaseSingleQuote,shCaseDoubleQuote
 syn match   shCaseStart        contained skipwhite skipnl "("                  nextgroup=shCase,shCaseBar
-if s:sh_fold_ifdofor
- syn region  shCase    fold contained skipwhite skipnl matchgroup=shSnglCase start="\%(\\.\|[^#$()'" \t]\)\{-}\zs)"  end=";;" end="esac"me=s-1 contains=@shCaseList nextgroup=shCaseStart,shCase,shComment
- syn region  shCaseEsac        fold matchgroup=shConditional start="\<case\>" end="\<esac\>"   contains=@shCaseEsacList
-else
- syn region  shCase    contained skipwhite skipnl matchgroup=shSnglCase start="\%(\\.\|[^#$()'" \t]\)\{-}\zs)"  end=";;" end="esac"me=s-1 contains=@shCaseList nextgroup=shCaseStart,shCase,shComment
- syn region  shCaseEsac        matchgroup=shConditional start="\<case\>" end="\<esac\>"        contains=@shCaseEsacList
-endif
+ShFoldIfDoFor syn region  shCase       contained skipwhite skipnl matchgroup=shSnglCase start="\%(\\.\|[^#$()'" \t]\)\{-}\zs)"  end=";;" end="esac"me=s-1 contains=@shCaseList nextgroup=shCaseStart,shCase,shComment
+ShFoldIfDoFor syn region  shCaseEsac   matchgroup=shConditional start="\<case\>" end="\<esac\>"        contains=@shCaseEsacList
+
 syn keyword shCaseIn   contained skipwhite skipnl in                   nextgroup=shCase,shCaseStart,shCaseBar,shComment,shCaseExSingleQuote,shCaseSingleQuote,shCaseDoubleQuote
 if exists("b:is_bash")
  syn region  shCaseExSingleQuote       matchgroup=shQuote start=+\$'+ skip=+\\\\\|\\.+ end=+'+ contains=shStringSpecial,shSpecial      skipwhite skipnl nextgroup=shCaseBar    contained
@@ -286,7 +291,7 @@ if exists("b:is_bash")
  syn cluster shCommandSubList add=bashSpecialVariables,bashStatement
  syn cluster shCaseList add=bashAdminStatement,bashStatement
  syn keyword bashSpecialVariables contained auto_resume BASH BASH_ALIASES BASH_ALIASES BASH_ARGC BASH_ARGC BASH_ARGV BASH_ARGV BASH_CMDS BASH_CMDS BASH_COMMAND BASH_COMMAND BASH_ENV BASH_EXECUTION_STRING BASH_EXECUTION_STRING BASH_LINENO BASH_LINENO BASHOPTS BASHOPTS BASHPID BASHPID BASH_REMATCH BASH_REMATCH BASH_SOURCE BASH_SOURCE BASH_SUBSHELL BASH_SUBSHELL BASH_VERSINFO BASH_VERSION BASH_XTRACEFD BASH_XTRACEFD CDPATH COLUMNS COLUMNS COMP_CWORD COMP_CWORD COMP_KEY COMP_KEY COMP_LINE COMP_LINE COMP_POINT COMP_POINT COMPREPLY COMPREPLY COMP_TYPE COMP_TYPE COMP_WORDBREAKS COMP_WORDBREAKS COMP_WORDS COMP_WORDS COPROC COPROC DIRSTACK EMACS EMACS ENV ENV EUID FCEDIT FIGNORE FUNCNAME FUNCNAME FUNCNEST FUNCNEST GLOBIGNORE GROUPS histchars HISTCMD HISTCONTROL HISTFILE HISTFILESIZE HISTIGNORE HISTSIZE HISTTIMEFORMAT HISTTIMEFORMAT HOME HOSTFILE HOSTNAME HOSTTYPE IFS IGNOREEOF INPUTRC LANG LC_ALL LC_COLLATE LC_CTYPE LC_CTYPE LC_MESSAGES LC_NUMERIC LC_NUMERIC LINENO LINES LINES MACHTYPE MAIL MAILCHECK MAILPATH MAPFILE MAPFILE OLDPWD OPTARG OPTERR OPTIND OSTYPE PATH PIPESTATUS POSIXLY_CORRECT POSIXLY_CORRECT PPID PROMPT_COMMAND PS1 PS2 PS3 PS4 PWD RANDOM READLINE_LINE READLINE_LINE READLINE_POINT READLINE_POINT REPLY SECONDS SHELL SHELL SHELLOPTS SHLVL TIMEFORMAT TIMEOUT TMPDIR TMPDIR UID
- syn keyword bashStatement chmod clear complete du egrep expr fgrep find gnufind gnugrep grep less ls mkdir mv rm rmdir rpm sed sleep sort strip tail touch
+ syn keyword bashStatement chmod clear complete du egrep expr fgrep find gnufind gnugrep grep less ls mkdir mv rm rmdir rpm sed sleep sort strip tail 
  syn keyword bashAdminStatement daemon killall killproc nice reload restart start status stop
  syn keyword bashStatement     command compgen
 endif
@@ -295,7 +300,7 @@ if exists("b:is_kornshell")
  syn cluster shCommandSubList add=kshSpecialVariables,kshStatement
  syn cluster shCaseList add=kshStatement
  syn keyword kshSpecialVariables contained CDPATH COLUMNS EDITOR ENV ERRNO FCEDIT FPATH HISTFILE HISTSIZE HOME IFS LINENO LINES MAIL MAILCHECK MAILPATH OLDPWD OPTARG OPTIND PATH PPID PS1 PS2 PS3 PS4 PWD RANDOM REPLY SECONDS SHELL TMOUT VISUAL
- syn keyword kshStatement cat chmod clear cp du egrep expr fgrep find grep killall less ls mkdir mv nice printenv rm rmdir sed sort strip stty tail touch tput
+ syn keyword kshStatement cat chmod clear cp du egrep expr fgrep find grep killall less ls mkdir mv nice printenv rm rmdir sed sort strip stty tail tput
  syn keyword kshStatement command setgroups setsenv
 endif
 
@@ -323,7 +328,6 @@ syn region  shSingleQuote   matchgroup=shQuote start=+'+ end=+'+            contains=@Spell
 syn region  shDoubleQuote      matchgroup=shQuote start=+\%(\%(\\\\\)*\\\)\@<!"+ skip=+\\"+ end=+"+    contains=@shDblQuoteList,shStringSpecial,@Spell
 syn match   shStringSpecial    "[^[:print:] \t]"               contained
 syn match   shStringSpecial    "\%(\\\\\)*\\[\\"'`$()#]"
-" COMBAK: why is ,shComment on next line???
 syn match   shSpecial  "[^\\]\zs\%(\\\\\)*\\[\\"'`$()#]"
 syn match   shSpecial  "^\%(\\\\\)*\\[\\"'`$()#]"
 syn match   shMoreSpecial      "\%(\\\\\)*\\[\\"'`$()#]"               nextgroup=shMoreSpecial contained
@@ -347,35 +351,22 @@ if version < 600
  syn region shHereDoc matchgroup=shHereDoc05 start="<<\s*\**\.\**"             matchgroup=shHereDoc05 end="^\.$"       contains=@shDblQuoteList
  syn region shHereDoc matchgroup=shHereDoc06 start="<<-\s*\**\.\**"            matchgroup=shHereDoc06 end="^\s*\.$"    contains=@shDblQuoteList
 
-elseif s:sh_fold_heredoc
- syn region shHereDoc matchgroup=shHereDoc07 fold start="<<\s*\z([^ \t|]*\)"           matchgroup=shHereDoc07 end="^\z1\s*$"   contains=@shDblQuoteList
- syn region shHereDoc matchgroup=shHereDoc08 fold start="<<\s*\"\z([^ \t|]*\)\""       matchgroup=shHereDoc08 end="^\z1\s*$"
- syn region shHereDoc matchgroup=shHereDoc09 fold start="<<\s*'\z([^ \t|]*\)'"         matchgroup=shHereDoc09 end="^\z1\s*$"
- syn region shHereDoc matchgroup=shHereDoc10 fold start="<<-\s*\z([^ \t|]*\)"          matchgroup=shHereDoc10 end="^\s*\z1\s*$"        contains=@shDblQuoteList
- syn region shHereDoc matchgroup=shHereDoc11 fold start="<<-\s*\"\z([^ \t|]*\)\""      matchgroup=shHereDoc11 end="^\s*\z1\s*$"
- syn region shHereDoc matchgroup=shHereDoc12 fold start="<<-\s*'\z([^ \t|]*\)'"                matchgroup=shHereDoc12 end="^\s*\z1\s*$"
- syn region shHereDoc matchgroup=shHereDoc13 fold start="<<\s*\\\_$\_s*\z([^ \t|]*\)"  matchgroup=shHereDoc13 end="^\z1\s*$"
- syn region shHereDoc matchgroup=shHereDoc14 fold start="<<\s*\\\_$\_s*\"\z([^ \t|]*\)\""      matchgroup=shHereDoc14 end="^\z1\s*$"
- syn region shHereDoc matchgroup=shHereDoc15 fold start="<<-\s*\\\_$\_s*'\z([^ \t|]*\)'"       matchgroup=shHereDoc15 end="^\s*\z1\s*$"
- syn region shHereDoc matchgroup=shHereDoc16 fold start="<<-\s*\\\_$\_s*\z([^ \t|]*\)" matchgroup=shHereDoc16 end="^\s*\z1\s*$"
- syn region shHereDoc matchgroup=shHereDoc17 fold start="<<-\s*\\\_$\_s*\"\z([^ \t|]*\)\""     matchgroup=shHereDoc17 end="^\s*\z1\s*$"
- syn region shHereDoc matchgroup=shHereDoc18 fold start="<<\s*\\\_$\_s*'\z([^ \t|]*\)'"        matchgroup=shHereDoc18 end="^\z1\s*$"
- syn region shHereDoc matchgroup=shHereDoc19 fold start="<<\\\z([^ \t|]*\)"            matchgroup=shHereDoc19 end="^\z1\s*$"
-
 else
- syn region shHereDoc matchgroup=shHereDoc20 start="<<\s*\\\=\z([^ \t|]*\)"            matchgroup=shHereDoc20 end="^\z1\s*$"    contains=@shDblQuoteList
- syn region shHereDoc matchgroup=shHereDoc21 start="<<\s*\"\z([^ \t|]*\)\""            matchgroup=shHereDoc21 end="^\z1\s*$"
- syn region shHereDoc matchgroup=shHereDoc22 start="<<-\s*\z([^ \t|]*\)"               matchgroup=shHereDoc22 end="^\s*\z1\s*$" contains=@shDblQuoteList
- syn region shHereDoc matchgroup=shHereDoc23 start="<<-\s*'\z([^ \t|]*\)'"             matchgroup=shHereDoc23 end="^\s*\z1\s*$"
- syn region shHereDoc matchgroup=shHereDoc24 start="<<\s*'\z([^ \t|]*\)'"              matchgroup=shHereDoc24 end="^\z1\s*$"
- syn region shHereDoc matchgroup=shHereDoc25 start="<<-\s*\"\z([^ \t|]*\)\""           matchgroup=shHereDoc25 end="^\s*\z1\s*$"
- syn region shHereDoc matchgroup=shHereDoc26 start="<<\s*\\\_$\_s*\z([^ \t|]*\)"       matchgroup=shHereDoc26 end="^\z1\s*$"
- syn region shHereDoc matchgroup=shHereDoc27 start="<<-\s*\\\_$\_s*\z([^ \t|]*\)"      matchgroup=shHereDoc27 end="^\s*\z1\s*$"
- syn region shHereDoc matchgroup=shHereDoc28 start="<<-\s*\\\_$\_s*'\z([^ \t|]*\)'"    matchgroup=shHereDoc28 end="^\s*\z1\s*$"
- syn region shHereDoc matchgroup=shHereDoc29 start="<<\s*\\\_$\_s*'\z([^ \t|]*\)'"     matchgroup=shHereDoc29 end="^\z1\s*$"
- syn region shHereDoc matchgroup=shHereDoc30 start="<<\s*\\\_$\_s*\"\z([^ \t|]*\)\""   matchgroup=shHereDoc30 end="^\z1\s*$"
- syn region shHereDoc matchgroup=shHereDoc31 start="<<-\s*\\\_$\_s*\"\z([^ \t|]*\)\""  matchgroup=shHereDoc31 end="^\s*\z1\s*$"
- syn region shHereDoc matchgroup=shHereDoc32 start="<<\\\z([^ \t|]*\)"         matchgroup=shHereDoc32 end="^\z1\s*$"
+ ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc07 start="<<\s*\\\=\z([^ \t|]\+\)"             matchgroup=shHereDoc07 end="^\z1\s*$"   contains=@shDblQuoteList
+ ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc08 start="<<\s*\"\z([^ \t|]\+\)\""             matchgroup=shHereDoc08 end="^\z1\s*$"
+ ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc09 start="<<-\s*\z([^ \t|]\+\)"                matchgroup=shHereDoc09 end="^\s*\z1\s*$"        contains=@shDblQuoteList
+ ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc10 start="<<-\s*'\z([^ \t|]\+\)'"              matchgroup=shHereDoc10 end="^\s*\z1\s*$"
+ ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc11 start="<<\s*'\z([^ \t|]\+\)'"               matchgroup=shHereDoc11 end="^\z1\s*$"
+ ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc12 start="<<-\s*\"\z([^ \t|]\+\)\""            matchgroup=shHereDoc12 end="^\s*\z1\s*$"
+ ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc13 start="<<\s*\\\_$\_s*\z([^ \t|]\+\)"                matchgroup=shHereDoc13 end="^\z1\s*$"           contains=@shDblQuoteList
+ ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc14 start="<<\s*\\\_$\_s*'\z([^ \t|]\+\)'"      matchgroup=shHereDoc14 end="^\z1\s*$"
+ ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc15 start="<<\s*\\\_$\_s*\"\z([^ \t|]\+\)\""    matchgroup=shHereDoc15 end="^\z1\s*$"
+ ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc16 start="<<-\s*\\\_$\_s*\z([^ \t|]\+\)"       matchgroup=shHereDoc16 end="^\s*\z1\s*$"        
+ ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc17 start="<<-\s*\\\_$\_s*\\\z([^ \t|]\+\)"     matchgroup=shHereDoc17 end="^\s*\z1\s*$"        
+ ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc18 start="<<-\s*\\\_$\_s*'\z([^ \t|]\+\)'"     matchgroup=shHereDoc18 end="^\s*\z1\s*$"
+ ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc19 start="<<-\s*\\\_$\_s*\"\z([^ \t|]\+\)\""   matchgroup=shHereDoc19 end="^\s*\z1\s*$"
+ ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc20 start="<<\\\z([^ \t|]\+\)"          matchgroup=shHereDoc20 end="^\z1\s*$"
+ ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc21 start="<<-\s*\\\z([^ \t|]\+\)"              matchgroup=shHereDoc21 end="^\s*\z1\s*$"
 endif
 
 " Here Strings: {{{1
@@ -407,38 +398,24 @@ if !exists("g:is_posix")
 endif
 
 if exists("b:is_bash")
- if s:sh_fold_functions
-  syn region shFunctionOne     fold    matchgroup=shFunction start="^\s*\h[-a-zA-Z_0-9]*\s*()\_s*{"            end="}" contains=@shFunctionList                        skipwhite skipnl nextgroup=shFunctionStart,shQuickComment
-  syn region shFunctionTwo     fold    matchgroup=shFunction start="\<[^d][^o]\&\h[-a-zA-Z_0-9]*\s*\%(()\)\=\_s*{"     end="}" contains=shFunctionKey,@shFunctionList contained        skipwhite skipnl nextgroup=shFunctionStart,shQuickComment
-  syn region shFunctionThree   fold    matchgroup=shFunction start="^\s*\h[-a-zA-Z_0-9]*\s*()\_s*("            end=")" contains=@shFunctionList                        skipwhite skipnl nextgroup=shFunctionStart,shQuickComment
-  syn region shFunctionFour    fold    matchgroup=shFunction start="\<[^d][^o]\&\h[-a-zA-Z_0-9]*\s*\%(()\)\=\_s*)"     end=")" contains=shFunctionKey,@shFunctionList contained        skipwhite skipnl nextgroup=shFunctionStart,shQuickComment
- else
-  syn region shFunctionOne             matchgroup=shFunction start="^\s*\h[-a-zA-Z_0-9]*\s*()\_s*{"            end="}" contains=@shFunctionList
-  syn region shFunctionTwo             matchgroup=shFunction start="\<[^d][^o]\&\h[-a-zA-Z_0-9]*\s*\%(()\)\=\_s*{"     end="}" contains=shFunctionKey,@shFunctionList contained
-  syn region shFunctionThree           matchgroup=shFunction start="^\s*\h[-a-zA-Z_0-9]*\s*()\_s*("            end=")" contains=@shFunctionList
-  syn region shFunctionFour            matchgroup=shFunction start="\<[^d][^o]\&\h[-a-zA-Z_0-9]*\s*\%(()\)\=\_s*("     end=")" contains=shFunctionKey,@shFunctionList contained
- endif
+ ShFoldFunctions syn region shFunctionOne      matchgroup=shFunction start="^\s*\h[-a-zA-Z_0-9]*\s*()\_s*{"            end="}" contains=@shFunctionList                        skipwhite skipnl nextgroup=shFunctionStart,shQuickComment
+ ShFoldFunctions syn region shFunctionTwo      matchgroup=shFunction start="\<[^d][^o]\&\h[-a-zA-Z_0-9]*\s*\%(()\)\=\_s*{"     end="}" contains=shFunctionKey,@shFunctionList contained        skipwhite skipnl nextgroup=shFunctionStart,shQuickComment
+ ShFoldFunctions syn region shFunctionThree    matchgroup=shFunction start="^\s*\h[-a-zA-Z_0-9]*\s*()\_s*("            end=")" contains=@shFunctionList                        skipwhite skipnl nextgroup=shFunctionStart,shQuickComment
+ ShFoldFunctions syn region shFunctionFour     matchgroup=shFunction start="\<[^d][^o]\&\h[-a-zA-Z_0-9]*\s*\%(()\)\=\_s*)"     end=")" contains=shFunctionKey,@shFunctionList contained        skipwhite skipnl nextgroup=shFunctionStart,shQuickComment
 else
- if s:sh_fold_functions
-  syn region shFunctionOne     fold    matchgroup=shFunction start="^\s*\h\w*\s*()\_s*{"               end="}" contains=@shFunctionList               skipwhite skipnl         nextgroup=shFunctionStart,shQuickComment
-  syn region shFunctionTwo     fold    matchgroup=shFunction start="\<[^d][^o]\&\h\w*\s*\%(()\)\=\_s*{"        end="}" contains=shFunctionKey,@shFunctionList contained skipwhite skipnl       nextgroup=shFunctionStart,shQuickComment
-  syn region shFunctionThree   fold    matchgroup=shFunction start="^\s*\h\w*\s*()\_s*("               end=")" contains=@shFunctionList               skipwhite skipnl         nextgroup=shFunctionStart,shQuickComment
-  syn region shFunctionFour    fold    matchgroup=shFunction start="\<[^d][^o]\&\h\w*\s*\%(()\)\=\_s*("        end=")" contains=shFunctionKey,@shFunctionList contained skipwhite skipnl       nextgroup=shFunctionStart,shQuickComment
- else
-  syn region shFunctionOne             matchgroup=shFunction start="^\s*\h\w*\s*()\_s*{"               end="}" contains=@shFunctionList
-  syn region shFunctionTwo             matchgroup=shFunction start="\<[^d][^o]\&\h\w*\s*\%(()\)\=\_s*{"        end="}" contains=shFunctionKey,@shFunctionList contained
-  syn region shFunctionThree           matchgroup=shFunction start="^\s*\h\w*\s*()\_s*("               end=")" contains=@shFunctionList
-  syn region shFunctionFour            matchgroup=shFunction start="\<[^d][^o]\&\h\w*\s*\%(()\)\=\_s*("        end=")" contains=shFunctionKey,@shFunctionList contained
- endif
+ ShFoldFunctions syn region shFunctionOne      matchgroup=shFunction start="^\s*\h\w*\s*()\_s*{"               end="}" contains=@shFunctionList               skipwhite skipnl         nextgroup=shFunctionStart,shQuickComment
+ ShFoldFunctions syn region shFunctionTwo      matchgroup=shFunction start="\<[^d][^o]\&\h\w*\s*\%(()\)\=\_s*{"        end="}" contains=shFunctionKey,@shFunctionList contained skipwhite skipnl       nextgroup=shFunctionStart,shQuickComment
+ ShFoldFunctions syn region shFunctionThree    matchgroup=shFunction start="^\s*\h\w*\s*()\_s*("               end=")" contains=@shFunctionList               skipwhite skipnl         nextgroup=shFunctionStart,shQuickComment
+ ShFoldFunctions syn region shFunctionFour     matchgroup=shFunction start="\<[^d][^o]\&\h\w*\s*\%(()\)\=\_s*("        end=")" contains=shFunctionKey,@shFunctionList contained skipwhite skipnl       nextgroup=shFunctionStart,shQuickComment
 endif
 
 " Parameter Dereferencing: {{{1
 " ========================
-syn match  shDerefSimple       "\$\%(\k\+\|\d\)"
-syn region shDeref     matchgroup=PreProc start="\${" end="}"  contains=@shDerefList,shDerefVarArray
 if !exists("g:sh_no_error")
  syn match  shDerefWordError   "[^}$[]"        contained
 endif
+syn match  shDerefSimple       "\$\k\+\|\d"
+syn region shDeref     matchgroup=PreProc start="\${" end="}"  contains=@shDerefList,shDerefVarArray
 syn match  shDerefSimple       "\$[-#*@!?]"
 syn match  shDerefSimple       "\$\$"
 if exists("b:is_bash") || exists("b:is_kornshell")
@@ -446,16 +423,28 @@ if exists("b:is_bash") || exists("b:is_kornshell")
  syn region shDeref    matchgroup=PreProc start="\${\$\$" end="}"      contains=@shDerefList
 endif
 
+" ksh: ${!var[*]} array index list syntax: {{{1
+" ========================================
+if exists("b:is_kornshell")
+ syn region shDeref    matchgroup=PreProc start="\${!" end="}" contains=@shDerefVarArray
+endif
+
 " bash: ${!prefix*} and ${#parameter}: {{{1
 " ====================================
 if exists("b:is_bash")
  syn region shDeref    matchgroup=PreProc start="\${!" end="\*\=}"     contains=@shDerefList,shDerefOp
  syn match  shDerefVar contained       "{\@<=!\k\+"            nextgroup=@shDerefVarList
 endif
+if exists("b:is_kornshell")
+ syn match  shDerefVar contained       "{\@<=!\k[[:alnum:]_.]*"        nextgroup=@shDerefVarList
+endif
 
 syn match  shDerefSpecial      contained       "{\@<=[-*@?0]"          nextgroup=shDerefOp,shDerefOpError
 syn match  shDerefSpecial      contained       "\({[#!]\)\@<=[[:alnum:]*@_]\+" nextgroup=@shDerefVarList,shDerefOp
 syn match  shDerefVar  contained       "{\@<=\k\+"             nextgroup=@shDerefVarList
+if exists("b:is_kornshell")
+  syn match  shDerefVar        contained       "{\@<=\k[[:alnum:]_.]*" nextgroup=@shDerefVarList
+endif
 
 " sh ksh bash : ${var[... ]...}  array reference: {{{1
 syn region  shDerefVarArray   contained        matchgroup=shDeref start="\[" end="]"   contains=@shCommandSubList nextgroup=shDerefOp,shDerefOpError
@@ -594,6 +583,7 @@ hi def link shHereDoc       shString
 hi def link shHerePayload      shHereDoc
 hi def link shLoop     shStatement
 hi def link shMoreSpecial      shSpecial
+hi def link shNoQuote  shDoubleQuote
 hi def link shOption   shCommandSub
 hi def link shPattern  shString
 hi def link shParen    shArithmetic
@@ -611,6 +601,7 @@ hi def link shTestOpr       shConditional
 hi def link shTestPattern      shString
 hi def link shTestDoubleQuote  shString
 hi def link shTestSingleQuote  shString
+hi def link shTouchCmd shStatement
 hi def link shVariable shSetList
 hi def link shWrapLineOperator shOperator
 
@@ -688,17 +679,12 @@ hi def link shHereDoc18           shRedir
 hi def link shHereDoc19                shRedir
 hi def link shHereDoc20                shRedir
 hi def link shHereDoc21                shRedir
-hi def link shHereDoc22                shRedir
-hi def link shHereDoc23                shRedir
-hi def link shHereDoc24                shRedir
-hi def link shHereDoc25                shRedir
-hi def link shHereDoc26                shRedir
-hi def link shHereDoc27                shRedir
-hi def link shHereDoc28                shRedir
-hi def link shHereDoc29                shRedir
-hi def link shHereDoc30                shRedir
-hi def link shHereDoc31                shRedir
-hi def link shHereDoc32                shRedir
+
+" Delete shell folding commands {{{1
+" =============================
+delc ShFoldFunctions
+delc ShFoldHereDoc
+delc ShFoldIfDoFor
 
 " Set Current Syntax: {{{1
 " ===================
index 90848094d7bb4972d0d530d9a37e268da50e5f38..d31e14bed0b718e8e1c05edaf503328bb612f637 100644 (file)
@@ -1,8 +1,8 @@
 " Vim syntax file
 " Language:    TeX
 " Maintainer:  Charles E. Campbell <NdrchipO@ScampbellPfamily.AbizM>
-" Last Change: Oct 19, 2015
-" Version:     89
+" Last Change: Oct 20, 2015
+" Version:     90
 " URL:         http://www.drchip.org/astronaut/vim/index.html#SYNTAX_TEX
 "
 " Notes: {{{1
@@ -62,11 +62,6 @@ if version >= 508 || !exists("did_tex_syntax_inits")
   command -nargs=+ HiLink hi def link <args>
  endif
 endif
-if exists("g:tex_no_error") && g:tex_no_error
- let s:tex_no_error= 1
-else
- let s:tex_no_error= 0
-endif
 
 " by default, enable all region-based highlighting
 let s:tex_fast= "bcmMprsSvV"
@@ -78,8 +73,6 @@ if exists("g:tex_fast")
  else
   let s:tex_fast= g:tex_fast
  endif
-else
- let s:tex_fast= "bcmMprsSvV"
 endif
 
 " let user determine which classes of concealment will be supported
@@ -114,15 +107,17 @@ endif
 
 " handle folding {{{1
 if !exists("g:tex_fold_enabled")
- let g:tex_fold_enabled= 0
+ let s:tex_fold_enabled= 0
 elseif g:tex_fold_enabled && !has("folding")
- let g:tex_fold_enabled= 0
+ let s:tex_fold_enabled= 0
  echomsg "Ignoring g:tex_fold_enabled=".g:tex_fold_enabled."; need to re-compile vim for +fold support"
+else
+ let s:tex_fold_enabled= 1
 endif
-if g:tex_fold_enabled && &fdm == "manual"
+if s:tex_fold_enabled && &fdm == "manual"
  setl fdm=syntax
 endif
-if g:tex_fold_enabled && has("folding")
+if s:tex_fold_enabled && has("folding")
  com! -nargs=* TexFold <args> fold 
 else
  com! -nargs=* TexFold <args> 
@@ -140,41 +135,53 @@ endif
 if b:tex_stylish
   setlocal isk+=@-@
 endif
-if exists("g:tex_nospell") && g:tex_nospell && !exists("g:tex_comment_nospell")
- let g:tex_comment_nospell= 1
+if exists("g:tex_no_error") && g:tex_no_error
+ let s:tex_no_error= 1
+else
+ let s:tex_no_error= 0
+endif
+if exists("g:tex_comment_nospell") && g:tex_comment_nospell
+ let s:tex_comment_nospell= 1
+else
+ let s:tex_comment_nospell= 0
+endif
+if exists("g:tex_nospell") && g:tex_nospell
+ let s:tex_nospell = 1
+else
+ let s:tex_nospell = 0
 endif
 
 " Clusters: {{{1
 " --------
-syn cluster texCmdGroup                contains=texCmdBody,texComment,texDefParm,texDelimiter,texDocType,texInput,texLength,texLigature,texMathDelim,texMathOper,texNewCmd,texNewEnv,texRefZone,texSection,texBeginEnd,texBeginEndName,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle
+syn cluster texCmdGroup                        contains=texCmdBody,texComment,texDefParm,texDelimiter,texDocType,texInput,texLength,texLigature,texMathDelim,texMathOper,texNewCmd,texNewEnv,texRefZone,texSection,texBeginEnd,texBeginEndName,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle
 if !s:tex_no_error
- syn cluster texCmdGroup       add=texMathError
+ syn cluster texCmdGroup               add=texMathError
 endif
-syn cluster texEnvGroup                contains=texMatcher,texMathDelim,texSpecialChar,texStatement
-syn cluster texFoldGroup       contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texInput,texInputFile,texLength,texLigature,texMatcher,texMathZoneV,texMathZoneW,texMathZoneX,texMathZoneY,texMathZoneZ,texNewCmd,texNewEnv,texOnlyMath,texOption,texParen,texRefZone,texSection,texBeginEnd,texSectionZone,texSpaceCode,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texZone,@texMathZones,texTitle,texAbstract,texBoldStyle,texItalStyle,texNoSpell
-syn cluster texBoldGroup       contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texInput,texInputFile,texLength,texLigature,texMatcher,texMathZoneV,texMathZoneW,texMathZoneX,texMathZoneY,texMathZoneZ,texNewCmd,texNewEnv,texOnlyMath,texOption,texParen,texRefZone,texSection,texBeginEnd,texSectionZone,texSpaceCode,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texZone,@texMathZones,texTitle,texAbstract,texBoldStyle,texBoldItalStyle,texNoSpell
-syn cluster texItalGroup       contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texInput,texInputFile,texLength,texLigature,texMatcher,texMathZoneV,texMathZoneW,texMathZoneX,texMathZoneY,texMathZoneZ,texNewCmd,texNewEnv,texOnlyMath,texOption,texParen,texRefZone,texSection,texBeginEnd,texSectionZone,texSpaceCode,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texZone,@texMathZones,texTitle,texAbstract,texItalStyle,texItalBoldStyle,texNoSpell
-if !exists("g:tex_nospell") || !g:tex_nospell
- syn cluster texMatchGroup     contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texInput,texLength,texLigature,texMatcher,texNewCmd,texNewEnv,texOnlyMath,texParen,texRefZone,texSection,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texZone,texInputFile,texOption,@Spell
- syn cluster texStyleGroup     contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texInput,texLength,texLigature,texNewCmd,texNewEnv,texOnlyMath,texParen,texRefZone,texSection,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texZone,texInputFile,texOption,texStyleStatement,@Spell,texStyleMatcher
+syn cluster texEnvGroup                        contains=texMatcher,texMathDelim,texSpecialChar,texStatement
+syn cluster texFoldGroup               contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texInput,texInputFile,texLength,texLigature,texMatcher,texMathZoneV,texMathZoneW,texMathZoneX,texMathZoneY,texMathZoneZ,texNewCmd,texNewEnv,texOnlyMath,texOption,texParen,texRefZone,texSection,texBeginEnd,texSectionZone,texSpaceCode,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texZone,@texMathZones,texTitle,texAbstract,texBoldStyle,texItalStyle,texNoSpell
+syn cluster texBoldGroup               contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texInput,texInputFile,texLength,texLigature,texMatcher,texMathZoneV,texMathZoneW,texMathZoneX,texMathZoneY,texMathZoneZ,texNewCmd,texNewEnv,texOnlyMath,texOption,texParen,texRefZone,texSection,texBeginEnd,texSectionZone,texSpaceCode,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texZone,@texMathZones,texTitle,texAbstract,texBoldStyle,texBoldItalStyle,texNoSpell
+syn cluster texItalGroup               contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texInput,texInputFile,texLength,texLigature,texMatcher,texMathZoneV,texMathZoneW,texMathZoneX,texMathZoneY,texMathZoneZ,texNewCmd,texNewEnv,texOnlyMath,texOption,texParen,texRefZone,texSection,texBeginEnd,texSectionZone,texSpaceCode,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texZone,@texMathZones,texTitle,texAbstract,texItalStyle,texItalBoldStyle,texNoSpell
+if !s:tex_nospell
+ syn cluster texMatchGroup             contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texInput,texLength,texLigature,texMatcher,texNewCmd,texNewEnv,texOnlyMath,texParen,texRefZone,texSection,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texZone,texInputFile,texOption,@Spell
+ syn cluster texStyleGroup             contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texInput,texLength,texLigature,texNewCmd,texNewEnv,texOnlyMath,texParen,texRefZone,texSection,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texZone,texInputFile,texOption,texStyleStatement,@Spell,texStyleMatcher
 else
- syn cluster texMatchGroup     contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texInput,texLength,texLigature,texMatcher,texNewCmd,texNewEnv,texOnlyMath,texParen,texRefZone,texSection,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texZone,texInputFile,texOption
- syn cluster texStyleGroup     contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texInput,texLength,texLigature,texNewCmd,texNewEnv,texOnlyMath,texParen,texRefZone,texSection,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texZone,texInputFile,texOption,texStyleStatement,texStyleMatcher
+ syn cluster texMatchGroup             contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texInput,texLength,texLigature,texMatcher,texNewCmd,texNewEnv,texOnlyMath,texParen,texRefZone,texSection,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texZone,texInputFile,texOption
+ syn cluster texStyleGroup             contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texInput,texLength,texLigature,texNewCmd,texNewEnv,texOnlyMath,texParen,texRefZone,texSection,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texZone,texInputFile,texOption,texStyleStatement,texStyleMatcher
 endif
 syn cluster texPreambleMatchGroup      contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texInput,texLength,texLigature,texMatcher,texNewCmd,texNewEnv,texOnlyMath,texParen,texRefZone,texSection,texSpecialChar,texStatement,texString,texTitle,texTypeSize,texTypeStyle,texZone,texInputFile,texOption,texMathZoneZ
-syn cluster texRefGroup                contains=texMatcher,texComment,texDelimiter
+syn cluster texRefGroup                        contains=texMatcher,texComment,texDelimiter
 if !exists("g:tex_no_math")
-syn cluster texPreambleMatchGroup      contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texInput,texLength,texLigature,texMatcher,texNewCmd,texNewEnv,texOnlyMath,texParen,texRefZone,texSection,texSpecialChar,texStatement,texString,texTitle,texTypeSize,texTypeStyle,texZone,texInputFile,texOption,texMathZoneZ
- syn cluster texMathZones      contains=texMathZoneV,texMathZoneW,texMathZoneX,texMathZoneY,texMathZoneZ
- syn cluster texMatchGroup     add=@texMathZones
- syn cluster texMathDelimGroup contains=texMathDelimBad,texMathDelimKey,texMathDelimSet1,texMathDelimSet2
- syn cluster texMathMatchGroup contains=@texMathZones,texComment,texDefCmd,texDelimiter,texDocType,texInput,texLength,texLigature,texMathDelim,texMathMatcher,texMathOper,texNewCmd,texNewEnv,texRefZone,texSection,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texZone
- syn cluster texMathZoneGroup  contains=texComment,texDelimiter,texLength,texMathDelim,texMathMatcher,texMathOper,texMathSymbol,texMathText,texRefZone,texSpecialChar,texStatement,texTypeSize,texTypeStyle
+ syn cluster texPreambleMatchGroup     contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texInput,texLength,texLigature,texMatcher,texNewCmd,texNewEnv,texOnlyMath,texParen,texRefZone,texSection,texSpecialChar,texStatement,texString,texTitle,texTypeSize,texTypeStyle,texZone,texInputFile,texOption,texMathZoneZ
+ syn cluster texMathZones              contains=texMathZoneV,texMathZoneW,texMathZoneX,texMathZoneY,texMathZoneZ
+ syn cluster texMatchGroup             add=@texMathZones
+ syn cluster texMathDelimGroup         contains=texMathDelimBad,texMathDelimKey,texMathDelimSet1,texMathDelimSet2
+ syn cluster texMathMatchGroup         contains=@texMathZones,texComment,texDefCmd,texDelimiter,texDocType,texInput,texLength,texLigature,texMathDelim,texMathMatcher,texMathOper,texNewCmd,texNewEnv,texRefZone,texSection,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texZone
+ syn cluster texMathZoneGroup          contains=texComment,texDelimiter,texLength,texMathDelim,texMathMatcher,texMathOper,texMathSymbol,texMathText,texRefZone,texSpecialChar,texStatement,texTypeSize,texTypeStyle
  if !s:tex_no_error
-  syn cluster texMathMatchGroup        add=texMathError
-  syn cluster texMathZoneGroup add=texMathError
+  syn cluster texMathMatchGroup                add=texMathError
+  syn cluster texMathZoneGroup         add=texMathError
  endif
- syn cluster texMathZoneGroup add=@NoSpell
+ syn cluster texMathZoneGroup          add=@NoSpell
  " following used in the \part \chapter \section \subsection \subsubsection
  " \paragraph \subparagraph \author \title highlighting
  syn cluster texDocGroup               contains=texPartZone,@texPartGroup
@@ -185,24 +192,24 @@ syn cluster texPreambleMatchGroup contains=texAccent,texBadMath,texComment,texDe
  syn cluster texSubSubSectionGroup     contains=texParaZone
  syn cluster texParaGroup              contains=texSubParaZone
  if has("conceal") && &enc == 'utf-8'
-  syn cluster texMathZoneGroup add=texGreek,texSuperscript,texSubscript,texMathSymbol
-  syn cluster texMathMatchGroup        add=texGreek,texSuperscript,texSubscript,texMathSymbol
+  syn cluster texMathZoneGroup         add=texGreek,texSuperscript,texSubscript,texMathSymbol
+  syn cluster texMathMatchGroup                add=texGreek,texSuperscript,texSubscript,texMathSymbol
  endif
 endif
 
 " Try to flag {} and () mismatches: {{{1
 if s:tex_fast =~ 'm'
   if !s:tex_no_error
-   syn region texMatcher               matchgroup=Delimiter start="{" skip="\\\\\|\\[{}]"      end="}"         contains=@texMatchGroup,texError
-   syn region texMatcher               matchgroup=Delimiter start="\["                         end="]"         contains=@texMatchGroup,texError,@NoSpell
+   syn region texMatcher               matchgroup=Delimiter start="{" skip="\\\\\|\\[{}]"      end="}"         transparent contains=@texMatchGroup,texError
+   syn region texMatcher               matchgroup=Delimiter start="\["                         end="]"         transparent contains=@texMatchGroup,texError,@NoSpell
   else
-   syn region texMatcher               matchgroup=Delimiter start="{" skip="\\\\\|\\[{}]"      end="}"         contains=@texMatchGroup
-   syn region texMatcher               matchgroup=Delimiter start="\["                         end="]"         contains=@texMatchGroup
+   syn region texMatcher               matchgroup=Delimiter start="{" skip="\\\\\|\\[{}]"      end="}"         transparent contains=@texMatchGroup
+   syn region texMatcher               matchgroup=Delimiter start="\["                         end="]"         transparent contains=@texMatchGroup
   endif
-  if !exists("g:tex_nospell") || !g:tex_nospell
-   syn region texParen         start="("                                               end=")"         contains=@texMatchGroup,@Spell
+  if !s:tex_nospell
+   syn region texParen         start="("                                               end=")"         transparent contains=@texMatchGroup,@Spell
   else
-   syn region texParen         start="("                                               end=")"         contains=@texMatchGroup
+   syn region texParen         start="("                                               end=")"         transparent contains=@texMatchGroup
   endif
 endif
 if !s:tex_no_error
@@ -213,7 +220,7 @@ if s:tex_fast =~ 'M'
    if !s:tex_no_error
     syn match  texMathError    "}"     contained
    endif
-   syn region texMathMatcher   matchgroup=Delimiter    start="{"          skip="\\\\\|\\}"     end="}" end="%stopzone\>"       contained contains=@texMathMatchGroup
+   syn region texMathMatcher   matchgroup=Delimiter    start="{"          skip="\%(\\\\\)*\\}"     end="}" end="%stopzone\>"   contained contains=@texMathMatchGroup
   endif
 endif
 
@@ -232,7 +239,6 @@ endif
 " TeX/LaTeX delimiters: {{{1
 syn match texDelimiter         "&"
 syn match texDelimiter         "\\\\"
-" syn match texDelimiter               "[{}]"
 
 " Tex/Latex Options: {{{1
 syn match texOption            "[^\\]\zs#\d\+\|^#\d\+"
@@ -253,7 +259,7 @@ syn match texLigature               "\\\([ijolL]\|ae\|oe\|ss\|AA\|AE\|OE\)$"
 " \begin{}/\end{} section markers: {{{1
 syn match  texBeginEnd         "\\begin\>\|\\end\>" nextgroup=texBeginEndName
 if s:tex_fast =~ 'm'
-  syn region texBeginEndName   matchgroup=Delimiter    start="{"               end="}" contained       nextgroup=texBeginEndModifier   contains=texComment
+  syn region texBeginEndName           matchgroup=Delimiter    start="{"               end="}" contained       nextgroup=texBeginEndModifier   contains=texComment
   syn region texBeginEndModifier       matchgroup=Delimiter    start="\["              end="]" contained       contains=texComment,@NoSpell
 endif
 
@@ -264,7 +270,7 @@ if s:tex_fast =~ 'm'
 endif
 
 " Preamble syntax-based folding support: {{{1
-if g:tex_fold_enabled && has("folding")
+if s:tex_fold_enabled && has("folding")
  syn region texPreamble        transparent fold        start='\zs\\documentclass\>' end='\ze\\begin{document}' contains=texStyle,@texPreambleMatchGroup
 endif
 
@@ -342,28 +348,28 @@ syn match texSpaceCodeChar    "`\\\=.\(\^.\)\==\(\d\|\"\x\{1,6}\|`.\)"    contained
 
 " Sections, subsections, etc: {{{1
 if s:tex_fast =~ 'p'
 if !exists("g:tex_nospell") || !g:tex_nospell
-   TexFold syn region texDocZone               matchgroup=texSection start='\\begin\s*{\s*document\s*}' end='\\end\s*{\s*document\s*}'                                                                                 contains=@texFoldGroup,@texDocGroup,@Spell
-   TexFold syn region texPartZone              matchgroup=texSection start='\\part\>'                   end='\ze\s*\\\%(part\>\|end\s*{\s*document\s*}\)'                                                              contains=@texFoldGroup,@texPartGroup,@Spell
-   TexFold syn region texChapterZone           matchgroup=texSection start='\\chapter\>'                end='\ze\s*\\\%(chapter\>\|part\>\|end\s*{\s*document\s*}\)'                                                   contains=@texFoldGroup,@texChapterGroup,@Spell
-   TexFold syn region texSectionZone           matchgroup=texSection start='\\section\>'                end='\ze\s*\\\%(section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)'                                        contains=@texFoldGroup,@texSectionGroup,@Spell
-   TexFold syn region texSubSectionZone                matchgroup=texSection start='\\subsection\>'             end='\ze\s*\\\%(\%(sub\)\=section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)'                              contains=@texFoldGroup,@texSubSectionGroup,@Spell
-   TexFold syn region texSubSubSectionZone     matchgroup=texSection start='\\subsubsection\>'          end='\ze\s*\\\%(\%(sub\)\{,2}section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)'                           contains=@texFoldGroup,@texSubSubSectionGroup,@Spell
-   TexFold syn region texParaZone              matchgroup=texSection start='\\paragraph\>'              end='\ze\s*\\\%(paragraph\>\|\%(sub\)*section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)'                  contains=@texFoldGroup,@texParaGroup,@Spell
-   TexFold syn region texSubParaZone           matchgroup=texSection start='\\subparagraph\>'           end='\ze\s*\\\%(\%(sub\)\=paragraph\>\|\%(sub\)*section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)'        contains=@texFoldGroup,@Spell
-   TexFold syn region texTitle                 matchgroup=texSection start='\\\%(author\|title\)\>\s*{' end='}'                                                                                                        contains=@texFoldGroup,@Spell
-   TexFold syn region texAbstract              matchgroup=texSection start='\\begin\s*{\s*abstract\s*}' end='\\end\s*{\s*abstract\s*}'                                                                                 contains=@texFoldGroup,@Spell
 else
-   TexFold syn region texDocZone               matchgroup=texSection start='\\begin\s*{\s*document\s*}' end='\\end\s*{\s*document\s*}'                                                                                 contains=@texFoldGroup,@texDocGroup
-   TexFold syn region texPartZone              matchgroup=texSection start='\\part\>'                   end='\ze\s*\\\%(part\>\|end\s*{\s*document\s*}\)'                                                              contains=@texFoldGroup,@texPartGroup
-   TexFold syn region texChapterZone           matchgroup=texSection start='\\chapter\>'                end='\ze\s*\\\%(chapter\>\|part\>\|end\s*{\s*document\s*}\)'                                                   contains=@texFoldGroup,@texChapterGroup
-   TexFold syn region texSectionZone           matchgroup=texSection start='\\section\>'                end='\ze\s*\\\%(section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)'                                        contains=@texFoldGroup,@texSectionGroup
-   TexFold syn region texSubSectionZone                matchgroup=texSection start='\\subsection\>'             end='\ze\s*\\\%(\%(sub\)\=section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)'                              contains=@texFoldGroup,@texSubSectionGroup
-   TexFold syn region texSubSubSectionZone     matchgroup=texSection start='\\subsubsection\>'          end='\ze\s*\\\%(\%(sub\)\{,2}section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)'                           contains=@texFoldGroup,@texSubSubSectionGroup
-   TexFold syn region texParaZone              matchgroup=texSection start='\\paragraph\>'              end='\ze\s*\\\%(paragraph\>\|\%(sub\)*section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)'                  contains=@texFoldGroup,@texParaGroup
-   TexFold syn region texSubParaZone           matchgroup=texSection start='\\subparagraph\>'           end='\ze\s*\\\%(\%(sub\)\=paragraph\>\|\%(sub\)*section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)'        contains=@texFoldGroup
-   TexFold syn region texTitle                 matchgroup=texSection start='\\\%(author\|title\)\>\s*{' end='}'                                                                                                        contains=@texFoldGroup
-   TexFold syn region texAbstract              matchgroup=texSection start='\\begin\s*{\s*abstract\s*}' end='\\end\s*{\s*abstract\s*}'                                                                                 contains=@texFoldGroup
if !s:tex_nospell
+  TexFold syn region texDocZone                        matchgroup=texSection start='\\begin\s*{\s*document\s*}' end='\\end\s*{\s*document\s*}'                                                                                 contains=@texFoldGroup,@texDocGroup,@Spell
+  TexFold syn region texPartZone               matchgroup=texSection start='\\part\>'                   end='\ze\s*\\\%(part\>\|end\s*{\s*document\s*}\)'                                                              contains=@texFoldGroup,@texPartGroup,@Spell
+  TexFold syn region texChapterZone            matchgroup=texSection start='\\chapter\>'                end='\ze\s*\\\%(chapter\>\|part\>\|end\s*{\s*document\s*}\)'                                                   contains=@texFoldGroup,@texChapterGroup,@Spell
+  TexFold syn region texSectionZone            matchgroup=texSection start='\\section\>'                end='\ze\s*\\\%(section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)'                                        contains=@texFoldGroup,@texSectionGroup,@Spell
+  TexFold syn region texSubSectionZone         matchgroup=texSection start='\\subsection\>'             end='\ze\s*\\\%(\%(sub\)\=section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)'                              contains=@texFoldGroup,@texSubSectionGroup,@Spell
+  TexFold syn region texSubSubSectionZone      matchgroup=texSection start='\\subsubsection\>'          end='\ze\s*\\\%(\%(sub\)\{,2}section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)'                           contains=@texFoldGroup,@texSubSubSectionGroup,@Spell
+  TexFold syn region texParaZone               matchgroup=texSection start='\\paragraph\>'              end='\ze\s*\\\%(paragraph\>\|\%(sub\)*section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)'                  contains=@texFoldGroup,@texParaGroup,@Spell
+  TexFold syn region texSubParaZone            matchgroup=texSection start='\\subparagraph\>'           end='\ze\s*\\\%(\%(sub\)\=paragraph\>\|\%(sub\)*section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)'        contains=@texFoldGroup,@Spell
+  TexFold syn region texTitle                  matchgroup=texSection start='\\\%(author\|title\)\>\s*{' end='}'                                                                                                        contains=@texFoldGroup,@Spell
+  TexFold syn region texAbstract               matchgroup=texSection start='\\begin\s*{\s*abstract\s*}' end='\\end\s*{\s*abstract\s*}'                                                                                 contains=@texFoldGroup,@Spell
+ else
+  TexFold syn region texDocZone                        matchgroup=texSection start='\\begin\s*{\s*document\s*}' end='\\end\s*{\s*document\s*}'                                                                                 contains=@texFoldGroup,@texDocGroup
+  TexFold syn region texPartZone               matchgroup=texSection start='\\part\>'                   end='\ze\s*\\\%(part\>\|end\s*{\s*document\s*}\)'                                                              contains=@texFoldGroup,@texPartGroup
+  TexFold syn region texChapterZone            matchgroup=texSection start='\\chapter\>'                end='\ze\s*\\\%(chapter\>\|part\>\|end\s*{\s*document\s*}\)'                                                   contains=@texFoldGroup,@texChapterGroup
+  TexFold syn region texSectionZone            matchgroup=texSection start='\\section\>'                end='\ze\s*\\\%(section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)'                                        contains=@texFoldGroup,@texSectionGroup
+  TexFold syn region texSubSectionZone         matchgroup=texSection start='\\subsection\>'             end='\ze\s*\\\%(\%(sub\)\=section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)'                              contains=@texFoldGroup,@texSubSectionGroup
+  TexFold syn region texSubSubSectionZone      matchgroup=texSection start='\\subsubsection\>'          end='\ze\s*\\\%(\%(sub\)\{,2}section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)'                           contains=@texFoldGroup,@texSubSubSectionGroup
+  TexFold syn region texParaZone               matchgroup=texSection start='\\paragraph\>'              end='\ze\s*\\\%(paragraph\>\|\%(sub\)*section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)'                  contains=@texFoldGroup,@texParaGroup
+  TexFold syn region texSubParaZone            matchgroup=texSection start='\\subparagraph\>'           end='\ze\s*\\\%(\%(sub\)\=paragraph\>\|\%(sub\)*section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)'        contains=@texFoldGroup
+  TexFold syn region texTitle                  matchgroup=texSection start='\\\%(author\|title\)\>\s*{' end='}'                                                                                                        contains=@texFoldGroup
+  TexFold syn region texAbstract               matchgroup=texSection start='\\begin\s*{\s*abstract\s*}' end='\\end\s*{\s*abstract\s*}'                                                                                 contains=@texFoldGroup
   endif
 endif
 
@@ -400,7 +406,7 @@ if !exists("g:tex_no_math")
  fun! TexNewMathZone(sfx,mathzone,starform)
    let grpname  = "texMathZone".a:sfx
    let syncname = "texSyncMathZone".a:sfx
-   if g:tex_fold_enabled
+   if s:tex_fold_enabled
     let foldcmd= " fold"
    else
     let foldcmd= ""
@@ -449,7 +455,7 @@ if !exists("g:tex_no_math")
   else
    syn region texMathZoneV     matchgroup=Delimiter start="\\("                        matchgroup=Delimiter    end="\\)\|%stopzone\>"                  keepend contains=@texMathZoneGroup
    syn region texMathZoneW     matchgroup=Delimiter start="\\\["                       matchgroup=Delimiter    end="\\]\|%stopzone\>"                  keepend contains=@texMathZoneGroup
-   syn region texMathZoneX     matchgroup=Delimiter start="\$" skip="\\\\\|\\\$"       matchgroup=Delimiter    end="\$"        end="%stopzone\>"               contains=@texMathZoneGroup
+   syn region texMathZoneX     matchgroup=Delimiter start="\$" skip="\%(\\\\\)*\\\$"   matchgroup=Delimiter    end="\$"        end="%stopzone\>"               contains=@texMathZoneGroup
    syn region texMathZoneY     matchgroup=Delimiter start="\$\$"                       matchgroup=Delimiter    end="\$\$"      end="%stopzone\>"       keepend contains=@texMathZoneGroup
   endif
   syn region texMathZoneZ      matchgroup=texStatement start="\\ensuremath\s*{"        matchgroup=texStatement end="}"         end="%stopzone\>"       contains=@texMathZoneGroup
@@ -544,7 +550,7 @@ endif
 " Comments: {{{1
 "    Normal TeX LaTeX     :   %....
 "    Documented TeX Format:  ^^A...    -and-   leading %s (only)
-if !exists("g:tex_comment_nospell") || !g:tex_comment_nospell
+if !s:tex_comment_nospell
  syn cluster texCommentGroup   contains=texTodo,@Spell
 else
  syn cluster texCommentGroup   contains=texTodo,@NoSpell
@@ -556,18 +562,18 @@ if s:extfname == "dtx"
  syn match texComment          "\^\^A.*$"      contains=@texCommentGroup
  syn match texComment          "^%\+"          contains=@texCommentGroup
 else
- if g:tex_fold_enabled
+ if s:tex_fold_enabled
   " allows syntax-folding of 2 or more contiguous comment lines
   " single-line comments are not folded
-  syn match  texComment        "%.*$"                  contains=@texCommentGroup
+  syn match  texComment        "%.*$"                          contains=@texCommentGroup
   if s:tex_fast =~ 'c'
-   TexFold syn region texComment                                               start="^\zs\s*%.*\_s*%" skip="^\s*%"    end='^\ze\s*[^%]'
-   TexFold syn region texNoSpell       contained       matchgroup=texComment   start="%\s*nospell\s*{" end="%\s*nospell\s*}"   contains=@texFoldGroup,@NoSpell
+   TexFold syn region texComment                                               start="^\zs\s*%.*\_s*%" skip="^\s*%"    end='^\ze\s*[^%]'       contains=@texCommentGroup
+   TexFold syn region texNoSpell       contained       matchgroup=texComment   start="%\s*nospell\s*{" end="%\s*nospell\s*}"                   contains=@texFoldGroup,@NoSpell
   endif
  else
   syn match texComment         "%.*$"                  contains=@texCommentGroup
   if s:tex_fast =~ 'c'
-   syn region texNoSpell       contained               matchgroup=texComment start="%\s*nospell\s*{"   end="%\s*nospell\s*}"   contains=@texFoldGroup,@NoSpell
+   syn region texNoSpell               contained       matchgroup=texComment start="%\s*nospell\s*{"   end="%\s*nospell\s*}"   contains=@texFoldGroup,@NoSpell
   endif
  endif
 endif
index d90d8843b6ed51fd641ecd3c09b3f2ebc1875189..beb955ca0d059a08d5b75500ae1cb30c4f10d8b5 100644 (file)
@@ -2,7 +2,7 @@
 " Language:    Vim 7.4 script
 " Maintainer:  Charles E. Campbell <NdrOchipS@PcampbellAfamily.Mbiz>
 " Last Change: October 19, 2015
-" Version:     7.4-35
+" Version:     7.4-36
 " Automatically generated keyword lists: {{{1
 
 " Quit when a syntax file was already loaded {{{2
@@ -157,7 +157,7 @@ syn match vimNumber "\<0[xX]\x\+"
 syn match vimNumber    "\%(^\|[^a-zA-Z]\)\zs#\x\{6}"
 
 " All vimCommands are contained by vimIsCommands. {{{2
-syn match vimCmdSep    "[:|]\+"        skipwhite nextgroup=vimAddress,vimAutoCmd,vimCommand,vimExtCmd,vimFilter,vimLet,vimMap,vimMark,vimSet,vimSyntax,vimUserCmd
+syn match vimCmdSep    "[:|]\+"        skipwhite nextgroup=vimAddress,vimAutoCmd,vimIsCommand,vimExtCmd,vimFilter,vimLet,vimMap,vimMark,vimSet,vimSyntax,vimUserCmd
 syn match vimIsCommand "\<\h\w*\>"     contains=vimCommand
 syn match vimVar        contained      "\<\h[a-zA-Z0-9#_]*\>"
 syn match vimVar               "\<[bwglsav]:\h[a-zA-Z0-9#_]*\>"
@@ -190,8 +190,12 @@ syn keyword vimFTOption contained  detect indent off on plugin
 " Augroup : vimAugroupError removed because long augroups caused sync'ing problems. {{{2
 " ======= : Trade-off: Increasing synclines with slower editing vs augroup END error checking.
 syn cluster vimAugroupList     contains=vimAugroup,vimIsCommand,vimCommand,vimUserCmd,vimExecute,vimNotFunc,vimFuncName,vimFunction,vimFunctionError,vimLineComment,vimMap,vimSpecFile,vimOper,vimNumber,vimOperParen,vimComment,vimString,vimSubst,vimMark,vimRegister,vimAddress,vimFilter,vimCmplxRepeat,vimComment,vimLet,vimSet,vimAutoCmd,vimRegion,vimSynLine,vimNotation,vimCtrlChar,vimFuncVar,vimContinue
-VimFolda syn region  vimAugroup        matchgroup=vimStatement start="\<aug\%[roup]\ze\s\+\%([eE][nN][dD]\>\)\@3<!\h\w*" matchgroup=vimStatement end="\<aug\%[roup]\>\s\+[eE][nN][dD]\>"       contains=vimAutoCmd,@vimAugroupList
-syn match   vimAugroup "aug\%[roup]!" contains=vimAugroupKey
+if exists("g:vimsyn_folding") && g:vimsyn_folding =~ 'a'
+ syn region  vimAugroup        fold matchgroup=vimAugroupKey start="\<aug\%[roup]\>\ze\s\+\K\k*" end="\<aug\%[roup]\>\ze\s\+[eE][nN][dD]\>"    contains=vimAutoCmd,@vimAugroupList
+else
+ syn region  vimAugroup        matchgroup=vimAugroupKey start="\<aug\%[roup]\>\ze\s\+\K\k*" end="\<aug\%[roup]\>\ze\s\+[eE][nN][dD]\>" contains=vimAutoCmd,@vimAugroupList
+endif
+syn match   vimAugroup "aug\%[roup]!"  contains=vimAugroupKey
 if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_noaugrouperror")
  syn match   vimAugroupError   "\<aug\%[roup]\>\s\+[eE][nN][dD]\>"
 endif
@@ -199,12 +203,11 @@ syn keyword vimAugroupKey contained       aug[roup]
 
 " Operators: {{{2
 " =========
-" COMBAK: vimOperParen used to have "oneline"
 syn cluster    vimOperGroup    contains=vimEnvvar,vimFunc,vimFuncVar,vimOper,vimOperParen,vimNumber,vimString,vimRegister,vimContinue
 syn match      vimOper "\(==\|!=\|>=\|<=\|=\~\|!\~\|>\|<\|=\)[?#]\{0,2}"       skipwhite nextgroup=vimString,vimSpecFile
 syn match      vimOper "||\|&&\|[-+.]" skipwhite nextgroup=vimString,vimSpecFile
 syn region     vimOperParen    matchgroup=vimParenSep  start="(" end=")" contains=@vimOperGroup
-syn region     vimOperParen    matchgroup=vimSep       start="{" end="}" contains=@vimOperGroup nextgroup=vimVar,vimFuncVar
+syn region     vimOperParen    matchgroup=vimSep               start="{" end="}" contains=@vimOperGroup nextgroup=vimVar,vimFuncVar
 if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_noopererror")
  syn match     vimOperError    ")"
 endif
@@ -212,11 +215,15 @@ endif
 " Functions : Tag is provided for those who wish to highlight tagged functions {{{2
 " =========
 syn cluster    vimFuncList     contains=vimCommand,vimFunctionError,vimFuncKey,Tag,vimFuncSID
-syn cluster    vimFuncBodyList contains=vimAbb,vimAddress,vimAugroupKey,vimAutoCmd,vimCmplxRepeat,vimComment,vimComment,vimContinue,vimCtrlChar,vimEcho,vimEchoHL,vimExecute,vimIf,vimIsCommand,vimFBVar,vimFunc,vimFunction,vimFuncVar,vimHighlight,vimIsCommand,vimLet,vimLineComment,vimMap,vimMark,vimNorm,vimNotation,vimNotFunc,vimNumber,vimOper,vimOperParen,vimRegion,vimRegister,vimSearch,vimSet,vimSpecFile,vimString,vimSubst,vimSynLine,vimUnmap,vimUserCommand
+syn cluster    vimFuncBodyList contains=vimAbb,vimAddress,vimAugroupKey,vimAutoCmd,vimCmplxRepeat,vimComment,vimComment,vimContinue,vimCtrlChar,vimEcho,vimEchoHL,vimExecute,vimIf,vimIsCommand,vimFBVar,vimFunc,vimFunction,vimFuncVar,vimGlobal,vimHighlight,vimIsCommand,vimLet,vimLineComment,vimMap,vimMark,vimNorm,vimNotation,vimNotFunc,vimNumber,vimOper,vimOperParen,vimRegion,vimRegister,vimSet,vimSpecFile,vimString,vimSubst,vimSynLine,vimUnmap,vimUserCommand
 syn match      vimFunction     "\<fu\%[nction]!\=\s\+\%(<[sS][iI][dD]>\|[sSgGbBwWtTlL]:\)\=\%(\i\|[#.]\|{.\{-1,}}\)*\ze\s*("   contains=@vimFuncList nextgroup=vimFuncBody
 
-VimFoldf syn region    vimFuncBody  contained  start="\ze("    matchgroup=vimCommand end="\<\(endf\>\|endfu\%[nction]\>\)"             contains=@vimFuncBodyList
-syn match      vimFuncVar   contained  "a:\(\h\w*\|\d\+\)"
+if exists("g:vimsyn_folding") && g:vimsyn_folding =~ 'f'
+ syn region    vimFuncBody  contained  fold start="\ze\s*("    matchgroup=vimCommand end="\<\(endf\>\|endfu\%[nction]\>\)"             contains=@vimFuncBodyList
+else
+ syn region    vimFuncBody  contained  start="\ze\s*(" matchgroup=vimCommand end="\<\(endf\>\|endfu\%[nction]\>\)"             contains=@vimFuncBodyList
+endif
+syn match      vimFuncVar   contained  "a:\(\K\k*\|\d\+\)"
 syn match      vimFuncSID   contained  "\c<sid>\|\<s:"
 syn keyword    vimFuncKey   contained  fu[nction]
 syn match      vimFuncBlank contained  "\s\+"
@@ -237,14 +244,16 @@ syn match vimSpecFileMod  "\(:[phtre]\)\+"        contained
 " =======================
 syn cluster    vimUserCmdList  contains=vimAddress,vimSyntax,vimHighlight,vimAutoCmd,vimCmplxRepeat,vimComment,vimCtrlChar,vimEscapeBrace,vimFilter,vimFunc,vimFuncName,vimFunction,vimFunctionError,vimIsCommand,vimMark,vimNotation,vimNumber,vimOper,vimRegion,vimRegister,vimLet,vimSet,vimSetEqual,vimSetString,vimSpecFile,vimString,vimSubst,vimSubstRep,vimSubstRange,vimSynLine
 syn keyword    vimUserCommand  contained       com[mand]
-syn match      vimUserCmd      "\<com\%[mand]!\=\>.*$" contains=vimUserAttrb,vimUserCommand,@vimUserCmdList
-syn match      vimUserAttrb    contained       "-n\%[args]=[01*?+]"    contains=vimUserAttrbKey,vimOper
-syn match      vimUserAttrb    contained       "-com\%[plete]="        contains=vimUserAttrbKey,vimOper nextgroup=vimUserAttrbCmplt,vimUserCmdError
-syn match      vimUserAttrb    contained       "-ra\%[nge]\(=%\|=\d\+\)\="     contains=vimNumber,vimOper,vimUserAttrbKey
-syn match      vimUserAttrb    contained       "-cou\%[nt]=\d\+"       contains=vimNumber,vimOper,vimUserAttrbKey
-syn match      vimUserAttrb    contained       "-bang\=\>"     contains=vimOper,vimUserAttrbKey
-syn match      vimUserAttrb    contained       "-bar\>"        contains=vimOper,vimUserAttrbKey
-syn match      vimUserAttrb    contained       "-re\%[gister]\>"       contains=vimOper,vimUserAttrbKey
+syn match      vimUserCmd      "\<com\%[mand]!\=\>.*$" contains=vimUserAttrb,vimUserAttrbError,vimUserCommand,@vimUserCmdList
+syn match      vimUserAttrbError       contained       "-\a\+\ze\s"
+syn match      vimUserAttrb    contained       "-nargs=[01*?+]"        contains=vimUserAttrbKey,vimOper
+syn match      vimUserAttrb    contained       "-complete="            contains=vimUserAttrbKey,vimOper nextgroup=vimUserAttrbCmplt,vimUserCmdError
+syn match      vimUserAttrb    contained       "-range\(=%\|=\d\+\)\=" contains=vimNumber,vimOper,vimUserAttrbKey
+syn match      vimUserAttrb    contained       "-count\(=\d\+\)\="     contains=vimNumber,vimOper,vimUserAttrbKey
+syn match      vimUserAttrb    contained       "-bang\>"               contains=vimOper,vimUserAttrbKey
+syn match      vimUserAttrb    contained       "-bar\>"                contains=vimOper,vimUserAttrbKey
+syn match      vimUserAttrb    contained       "-buffer\>"             contains=vimOper,vimUserAttrbKey
+syn match      vimUserAttrb    contained       "-register\>"           contains=vimOper,vimUserAttrbKey
 if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_nousercmderror")
  syn match     vimUserCmdError contained       "\S\+\>"
 endif
@@ -318,7 +327,7 @@ syn match   vimMark "\<norm\%[al]\s\zs'[a-zA-Z0-9]" nextgroup=vimOper,vimMarkNumbe
 syn match      vimMarkNumber   "[-+]\d\+"              nextgroup=vimSubst contained contains=vimOper
 syn match      vimPlainMark contained  "'[a-zA-Z0-9]"
 
-syn match      vimRegister     '[^,;[{]\zs"[a-zA-Z0-9.%#:_\-/]\ze[^a-zA-Z_":0-9]'
+syn match      vimRegister     '[^,;[{: \t]\zs"[a-zA-Z0-9.%#:_\-/]\ze[^a-zA-Z_":0-9]'
 syn match      vimRegister     '\<norm\s\+\zs"[a-zA-Z0-9]'
 syn match      vimRegister     '\<normal\s\+\zs"[a-zA-Z0-9]'
 syn match      vimRegister     '@"'
@@ -338,7 +347,7 @@ syn match   vimCmplxRepeat  '@[0-9a-z".=@:]\ze\($\|[^a-zA-Z]\>\)'
 syn region     vimSet          matchgroup=vimCommand start="\<\%(setl\%[ocal]\|setg\%[lobal]\|se\%[t]\)\>" skip="\%(\\\\\)*\\." end="$" matchgroup=vimNotation end="<[cC][rR]>" keepend oneline contains=vimSetEqual,vimOption,vimErrSetting,vimComment,vimSetString,vimSetMod
 syn region     vimSetEqual     contained       start="[=:]\|[-+^]=" skip="\\\\\|\\\s" end="[| \t]\|$"me=e-1 contains=vimCtrlChar,vimSetSep,vimNotation,vimEnvvar oneline
 syn region     vimSetString    contained       start=+="+hs=s+1        skip=+\\\\\|\\"+  end=+"+       contains=vimCtrlChar
-syn match      vimSetSep       contained       "[,:]"
+syn match      vimSetSep       contained       "[,:]" skipwhite nextgroup=vimCommand
 syn match      vimSetMod       contained       "&vim\=\|[!&?<]\|all&"
 
 " Let {{{2
@@ -373,11 +382,11 @@ syn keyword       vimMap          mapc[lear] smapc[lear]
 syn keyword    vimUnmap                cu[nmap] iu[nmap] lu[nmap] nun[map] ou[nmap] sunm[ap] unm[ap] unm[ap] vu[nmap] xu[nmap] skipwhite nextgroup=vimMapBang,vimMapMod,vimMapLhs
 syn match      vimMapLhs       contained       "\S\+"                  contains=vimNotation,vimCtrlChar skipwhite nextgroup=vimMapRhs
 syn match      vimMapBang      contained       "!"                     skipwhite nextgroup=vimMapMod,vimMapLhs
-syn match      vimMapMod       contained       "\c<\(buffer\|expr\|\(local\)\=leader\|plug\|script\|sid\|unique\|silent\)\+>" contains=vimMapModKey,vimMapModErr skipwhite nextgroup=vimMapMod,vimMapLhs
+syn match      vimMapMod       contained       "\c<\(buffer\|expr\|\(local\)\=leader\|nowait\|plug\|script\|sid\|unique\|silent\)\+>" contains=vimMapModKey,vimMapModErr skipwhite nextgroup=vimMapMod,vimMapLhs
 syn match      vimMapRhs       contained       ".*" contains=vimNotation,vimCtrlChar   skipnl nextgroup=vimMapRhsExtend
-syn match      vimMapRhsExtend contained       "^\s*\\.*$"                     contains=vimNotation,vimCtrlChar,vimContinue    skipnl nextgroup=vimMapRhsExtend
+syn match      vimMapRhsExtend contained       "^\s*\\.*$"                     contains=vimContinue
 syn case ignore
-syn keyword    vimMapModKey    contained       buffer  expr    leader  localleader     plug    script  sid     silent  unique
+syn keyword    vimMapModKey    contained       buffer  expr    leader  localleader     nowait  plug    script  sid     silent  unique
 syn case match
 
 " Menus {{{2
@@ -597,12 +606,12 @@ syn region        vimGlobal       matchgroup=Statement start='\<v\%[global]!\=/' skip='\\.' e
 " Allows users to specify the type of embedded script highlighting
 " they want:  (perl/python/ruby/tcl support)
 "   g:vimsyn_embed == 0   : don't embed any scripts
-"   g:vimsyn_embed ~= 'l' : embed lua      (but only if vim supports it)
-"   g:vimsyn_embed ~= 'm' : embed mzscheme (but only if vim supports it)
-"   g:vimsyn_embed ~= 'p' : embed perl     (but only if vim supports it)
-"   g:vimsyn_embed ~= 'P' : embed python   (but only if vim supports it)
-"   g:vimsyn_embed ~= 'r' : embed ruby     (but only if vim supports it)
-"   g:vimsyn_embed ~= 't' : embed tcl      (but only if vim supports it)
+"   g:vimsyn_embed =~ 'l' : embed lua      (but only if vim supports it)
+"   g:vimsyn_embed =~ 'm' : embed mzscheme (but only if vim supports it)
+"   g:vimsyn_embed =~ 'p' : embed perl     (but only if vim supports it)
+"   g:vimsyn_embed =~ 'P' : embed python   (but only if vim supports it)
+"   g:vimsyn_embed =~ 'r' : embed ruby     (but only if vim supports it)
+"   g:vimsyn_embed =~ 't' : embed tcl      (but only if vim supports it)
 if !exists("g:vimsyn_embed")
  let g:vimsyn_embed= "lmpPr"
 endif
@@ -688,6 +697,8 @@ if g:vimsyn_embed =~ 'P' && (has("python") || has("python3")) && filereadable(s:
  exe "syn include @vimPythonScript ".s:pythonpath
  VimFoldP syn region vimPythonRegion matchgroup=vimScriptDelim start=+py\%[thon]3\=\s*<<\s*\z(.*\)$+ end=+^\z1$+       contains=@vimPythonScript
  VimFoldP syn region vimPythonRegion matchgroup=vimScriptDelim start=+py\%[thon]3\=\s*<<\s*$+ end=+\.$+                contains=@vimPythonScript
+ VimFoldP syn region vimPythonRegion matchgroup=vimScriptDelim start=+Py\%[thon]2or3\s*<<\s*\z(.*\)$+ end=+^\z1$+              contains=@vimPythonScript
+ VimFoldP syn region vimPythonRegion matchgroup=vimScriptDelim start=+Py\%[thon]2or3\=\s*<<\s*$+ end=+\.$+             contains=@vimPythonScript
  syn cluster vimFuncBodyList   add=vimPythonRegion
 else
  syn region vimEmbedError start=+py\%[thon]3\=\s*<<\s*\z(.*\)$+ end=+^\z1$+
@@ -770,7 +781,6 @@ syn sync match vimAugroupSyncA      groupthere NONE "\<aug\%[roup]\>\s\+[eE][nN][dD]"
 " Highlighting Settings {{{2
 " ====================
 
-
 if !exists("g:vimsyn_noerror")
  hi def link vimBehaveError    vimError
  hi def link vimCollClassErr   vimError
@@ -925,6 +935,7 @@ hi def link vimUserAttrbCmpltFunc   Special
 hi def link vimUserAttrbCmplt  vimSpecial
 hi def link vimUserAttrbKey    vimOption
 hi def link vimUserAttrb       vimSpecial
+hi def link vimUserAttrbError  Error
 hi def link vimUserCmdError    Error
 hi def link vimUserCommand     vimCommand
 hi def link vimUserFunc        Normal