]> granicus.if.org Git - vim/commitdiff
Updated runtime files.
authorBram Moolenaar <Bram@vim.org>
Wed, 24 Feb 2016 23:00:01 +0000 (00:00 +0100)
committerBram Moolenaar <Bram@vim.org>
Wed, 24 Feb 2016 23:00:01 +0000 (00:00 +0100)
16 files changed:
runtime/doc/channel.txt
runtime/doc/eval.txt
runtime/doc/help.txt
runtime/doc/index.txt
runtime/doc/options.txt
runtime/doc/quickref.txt
runtime/doc/repeat.txt
runtime/doc/syntax.txt
runtime/doc/tags
runtime/doc/todo.txt
runtime/ftplugin/eiffel.vim [new file with mode: 0644]
runtime/indent/sh.vim
runtime/syntax/sh.vim
runtime/syntax/tex.vim
runtime/syntax/vim.vim
runtime/syntax/zsh.vim

index aa31816fcb778071279c3b87b9230bd2947698a4..0f329648a3f9399211c12452f81fb99d23f3b848 100644 (file)
@@ -1,4 +1,4 @@
-*channel.txt*      For Vim version 7.4.  Last change: 2016 Feb 21
+*channel.txt*      For Vim version 7.4.  Last change: 2016 Feb 23
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -160,9 +160,13 @@ Use |ch_status()| to see if the channel could be opened.
        func MyCloseHandler(channel)
 <                                                      *waittime*
 "waittime"     The time to wait for the connection to be made in
-               milliseconds.  The default is zero, don't wait, which is
-               useful if the server is supposed to be running already.  A
-               negative number waits forever.
+               milliseconds.  A negative number waits forever.
+
+               The default is zero, don't wait, which is useful if a local
+               server is supposed to be running already.  On Unix Vim
+               actually uses a 1 msec timeout, that is required on many
+               systems.  Use a larger value for a remote server, e.g.  10
+               msec at least.
 
 "timeout"      The time to wait for a request when blocking, E.g. when using
                ch_sendexpr().  In milliseconds.  The default is 2000 (2
@@ -253,7 +257,8 @@ Then channel handler will then get {response} converted to Vim types.  If the
 channel does not have a handler the message is dropped.
 
 On read error or ch_close(), when using a socket, the string "DETACH" is sent,
-if still possible.  The channel will then be inactive.
+if still possible.  The channel will then be inactive. For a JSON and JS mode
+channel quotes are used around DETACH, otherwise there are no quotes.
 
 It is also possible to use ch_sendraw() on a JSON or JS channel.  The caller
 is then completely responsible for correct encoding and decoding.
index abc022d39276d26dc416fb0e8d5b18830d8acd23..8fc0d1ef050e8175291a1153cacea88695950745 100644 (file)
@@ -1,4 +1,4 @@
-*eval.txt*     For Vim version 7.4.  Last change: 2016 Feb 21
+*eval.txt*     For Vim version 7.4.  Last change: 2016 Feb 23
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -1961,6 +1961,7 @@ insert( {list}, {item} [, {idx}]) List    insert {item} in {list} [before {idx}]
 invert( {expr})                        Number  bitwise invert
 isdirectory( {directory})      Number  TRUE if {directory} is a directory
 islocked( {expr})              Number  TRUE if {expr} is locked
+isnan( {expr})                 Number  TRUE if {expr} is NaN
 items( {dict})                 List    key-value pairs in {dict}
 job_getchannel( {job})         Channel get the channel handle for {job}
 job_setoptions( {job}, {options}) none set options for {job}
@@ -4397,6 +4398,13 @@ islocked({expr})                                 *islocked()* *E786*
 <              When {expr} is a variable that does not exist you get an error
                message.  Use |exists()| to check for existence.
 
+isnan({expr})                                          *isnan()*
+               Return non-zero if {expr} is a float with value NaN. >
+                       echo isnan(0.0 / 0.0)
+<                      1 ~
+
+               {only available when compiled with the |+float| feature}
+
 items({dict})                                          *items()*
                Return a |List| with all the key-value pairs of {dict}.  Each
                |List| item is a list with two items: the key of a {dict}
index 23ad1dc9a323c162aa6168896f0f513c447ffdb8..968636379dbd9e858514737f0b550696faf4ee19 100644 (file)
@@ -1,4 +1,4 @@
-*help.txt*     For Vim version 7.4.  Last change: 2016 Jan 10
+*help.txt*     For Vim version 7.4.  Last change: 2016 Feb 22
 
                        VIM - main help file
                                                                         k
@@ -155,7 +155,6 @@ Special issues ~
 
 GUI ~
 |gui.txt|      Graphical User Interface (GUI)
-|gui_w16.txt|  Windows 3.1 GUI
 |gui_w32.txt|  Win32 GUI
 |gui_x11.txt|  X11 GUI
 
index d23edd019606ea28dc51f5ebbf2b9253daac4b93..fe4184aea3a0586ad2d05275b155d6d3a56d493b 100644 (file)
@@ -1,4 +1,4 @@
-*index.txt*     For Vim version 7.4.  Last change: 2016 Jan 19
+*index.txt*     For Vim version 7.4.  Last change: 2016 Feb 24
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -1324,6 +1324,7 @@ tag             command         action ~
 |:lnfile|      :lnf[ile]       go to first location in next file
 |:lnoremap|    :ln[oremap]     like ":noremap!" but includes Lang-Arg mode
 |:loadkeymap|  :loadk[eymap]   load the following keymaps until EOF
+|:loadplugin|  :loadp[lugin]   load a plugin from 'packpath'
 |:loadview|    :lo[adview]     load view for current window from a file
 |:lockmarks|   :loc[kmarks]    following command keeps marks where they are
 |:lockvar|     :lockv[ar]      lock variables
index 2378aa9c336be7f68e030e56d5eba796d266e0f9..09518c0578e7475f48a19410b510e1b098f8be48 100644 (file)
@@ -1,4 +1,4 @@
-*options.txt*  For Vim version 7.4.  Last change: 2016 Feb 21
+*options.txt*  For Vim version 7.4.  Last change: 2016 Feb 24
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -1211,10 +1211,7 @@ A jump table for the options with a short description can be found at |Q_op|.
 'bioskey' 'biosk'      boolean (default on)
                        global
                        {not in Vi}  {only for MS-DOS}
-       When on the BIOS is called to obtain a keyboard character.  This works
-       better to detect CTRL-C, but only works for the console.  When using a
-       terminal over a serial port reset this option.
-       Also see |'conskey'|.
+       This was for MS-DOS and is no longer supported.
 
                                                        *'bomb'* *'nobomb'*
 'bomb'                 boolean (default off)
@@ -1946,13 +1943,7 @@ A jump table for the options with a short description can be found at |Q_op|.
 'conskey' 'consk'      boolean (default off)
                        global
                        {not in Vi}  {only for MS-DOS}
-       When on direct console I/O is used to obtain a keyboard character.
-       This should work in most cases.  Also see |'bioskey'|.  Together,
-       three methods of console input are available:
-       'conskey'   'bioskey'       action ~
-          on        on or off      direct console input
-          off          on          BIOS
-          off          off         STDIN
+       This was for MS-DOS and is no longer supported.
 
                        *'copyindent'* *'ci'* *'nocopyindent'* *'noci'*
 'copyindent' 'ci'      boolean (default off)
@@ -5412,7 +5403,6 @@ A jump table for the options with a short description can be found at |Q_op|.
                                *'packpath'* *'pp'*
 'packpath' 'pp'                string  (default: see 'runtimepath')
                        {not in Vi}
-                       {not available without the |+packages| feature}
        Directories used to find packages.  See |packages|.
 
 
index 8450cdd89cae93599e8aad15b71c1d3e692a2576..8d415ae82d17877feab1c5235c7be3326c8c7cec 100644 (file)
@@ -1,4 +1,4 @@
-*quickref.txt*  For Vim version 7.4.  Last change: 2015 Nov 10
+*quickref.txt*  For Vim version 7.4.  Last change: 2016 Feb 24
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -810,7 +810,8 @@ Short explanation of each option:           *option-list*
 'omnifunc'       'ofu'     function for filetype-specific completion
 'opendevice'     'odev'    allow reading/writing devices on MS-Windows
 'operatorfunc'   'opfunc'  function to be called for |g@| operator
-'osfiletype'     'oft'     no longer supported
+'osfiletype'     'oft'     no longer supported
+'packpath'       'pp'      list of directories used for packages
 'paragraphs'     'para'    nroff macros that separate paragraphs
 'paste'                            allow pasting text
 'pastetoggle'    'pt'      key code that causes 'paste' to toggle
index 1ea72536fde1b14581ab9e0202dcdcaea485461c..db1ec9bad0b9f916acf1e33e53a616793be4d836 100644 (file)
@@ -1,4 +1,4 @@
-*repeat.txt*    For Vim version 7.4.  Last change: 2016 Feb 21
+*repeat.txt*    For Vim version 7.4.  Last change: 2016 Feb 24
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -227,8 +227,6 @@ For writing a Vim script, see chapter 41 of the user manual |usr_41.txt|.
 
                        Also see |load-plugin|.
 
-                       {not available without the |+packages| feature}
-
 :scripte[ncoding] [encoding]           *:scripte* *:scriptencoding* *E167*
                        Specify the character encoding used in the script.
                        The following lines will be converted from [encoding]
index 45d4a08c42835a00db9db682d0e09fc4bd047eaf..59caa1ad7c334c9f7dc144a8b4715ffa52c3efa5 100644 (file)
@@ -1,4 +1,4 @@
-*syntax.txt*   For Vim version 7.4.  Last change: 2016 Jan 28
+*syntax.txt*   For Vim version 7.4.  Last change: 2016 Feb 24
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -3361,6 +3361,13 @@ Note that schemas are not actually limited to plain scalars, but this is the
 only difference between schemas defined in YAML specification and the only 
 difference defined in the syntax file.
 
+
+ZSH                                                *zsh.vim* *ft-zsh-syntax*
+
+The syntax script for zsh allows for syntax-based folding: >
+
+       :let g:zsh_fold_enable = 1
+
 ==============================================================================
 5. Defining a syntax                                   *:syn-define* *E410*
 
index af27b78861b06072662fabc8db64b2313a0d8c65..e28ee718157f71251dc5346b27a4f0e2d45e4beb 100644 (file)
@@ -2446,6 +2446,8 @@ $VIM_POSIX        vi_diff.txt     /*$VIM_POSIX*
 :lo    starting.txt    /*:lo*
 :loadk mbyte.txt       /*:loadk*
 :loadkeymap    mbyte.txt       /*:loadkeymap*
+:loadp repeat.txt      /*:loadp*
+:loadplugin    repeat.txt      /*:loadplugin*
 :loadview      starting.txt    /*:loadview*
 :loc   motion.txt      /*:loc*
 :lockmarks     motion.txt      /*:lockmarks*
@@ -6038,6 +6040,7 @@ ft-xml-omni       insert.txt      /*ft-xml-omni*
 ft-xml-syntax  syntax.txt      /*ft-xml-syntax*
 ft-xpm-syntax  syntax.txt      /*ft-xpm-syntax*
 ft-yaml-syntax syntax.txt      /*ft-yaml-syntax*
+ft-zsh-syntax  syntax.txt      /*ft-zsh-syntax*
 ft_ada.txt     ft_ada.txt      /*ft_ada.txt*
 ft_sql.txt     ft_sql.txt      /*ft_sql.txt*
 ftdetect       filetype.txt    /*ftdetect*
@@ -6829,6 +6832,7 @@ iquote    motion.txt      /*iquote*
 is     motion.txt      /*is*
 isdirectory()  eval.txt        /*isdirectory()*
 islocked()     eval.txt        /*islocked()*
+isnan()        eval.txt        /*isnan()*
 it     motion.txt      /*it*
 italic syntax.txt      /*italic*
 items()        eval.txt        /*items()*
@@ -6950,6 +6954,7 @@ list-repeat       windows.txt     /*list-repeat*
 lite.vim       syntax.txt      /*lite.vim*
 literal-string eval.txt        /*literal-string*
 lnum-variable  eval.txt        /*lnum-variable*
+load-plugin    repeat.txt      /*load-plugin*
 load-plugins   starting.txt    /*load-plugins*
 load-vim-script        repeat.txt      /*load-vim-script*
 local-additions        help.txt        /*local-additions*
@@ -9193,6 +9198,7 @@ zn        fold.txt        /*zn*
 zo     fold.txt        /*zo*
 zr     fold.txt        /*zr*
 zs     scroll.txt      /*zs*
+zsh.vim        syntax.txt      /*zsh.vim*
 zt     scroll.txt      /*zt*
 zuG    spell.txt       /*zuG*
 zuW    spell.txt       /*zuW*
index aece38c271ad483619e7217912ccdb32c11960a6..f8f9104d8c4c6787ef7f2b45c1c0b7d6a6453a8e 100644 (file)
@@ -1,4 +1,4 @@
-*todo.txt*      For Vim version 7.4.  Last change: 2016 Feb 20
+*todo.txt*      For Vim version 7.4.  Last change: 2016 Feb 24
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -35,41 +35,35 @@ not be repeated below, unless there is extra information.
 -------------------- Known bugs and current work -----------------------
 
 +channel:
-- channel needs both stdout and stderr (GUI implementation, queues)
-   - ch_read() for stderr
-- implement TODO items in ":help channel":
-   - implement ch_setoptions(handle, {options})
-   - job_setoptions(job, {options})
-   - ch_close() closes stdin/stdout/stderr
-   - out-cb
-   - err-cb
-   - exit-cb  move code from mch_clear_job()
-   - job argument: killonexit
-   - ch_getjob(handle)
-   - ch_read(handle [, timeout])
-   - ch_readall(handle [, timeout])
-   - job_info() should remove usable info: process ID, run/dead, etc.
-   - job_maystart()
-   - job_gethandle(), job_sethandle()
-   - add ch_status(): Whether channel is open.  Perhaps also mode, timeout.
-   - When channel closes invoke "close-cb".
-- Add "call" to call a function with a list of arguments. (Damien)
-    merge "expr" and "eval", send something back if there is a third arg?
+- don't free channel if there are callbacks.
+    netbeans channel leaks?
+- job_stop() on MS-Windows: "term" should probably do the same as "kill".
+- Make JSON encode and decode NaN and Infinity.
 - A callback on ch_sendraw() should be put at the end of the list of callback
   handlers.  When a message arrives invoke the first one and remove it.
-- Support channel without socket support.  Useful for starting a job with
-  pipes.  Need another feature, +socket ?
+- implement TODO items in ":help channel":
+   - job_start() options:
+       term
+       in-io
+       in-file
+       out-io
+       out-file
+       out-buffer
+       err-io
+       err-file
+       err-buffer
+       existing channel to use
+   - job_maystart()
+   - add job_info(): process ID, run/dead, etc.
+   - add ch_info(): in/out/err mode, timeout, callbacks, etc.
 - Move more details from eval.txt to channel.txt.  Add tags in eval.txt.
 - When receiving malformed json starting with a quote it doesn't get
   discarded.
-- When message in queue but there is no callback, drop it after a while?
-- Crash when closing channel after ch_sendexpr() with callback and outstanding
-  request (Christian Robinson).
+- When a message in the queue but there is no callback, drop it after a while?
+  Add timestamp to queued messages and callbacks with ID, remove after a
+  minute.
 - cleanup on exit?  in mch_getout() and getout().
-- On Mac a 1 msec waittime is needed in ch_open(), why?
 - Add more log calls, basically at every branch, before every callback, etc.
-- Add timestamp to queued messages and callbacks with ID, remove after a
-  minute.
 - add remark about undo sync, is there a way to force it?
 - When starting a job, have an option to open the server socket, so we know
   the port, and pass it to the command with --socket-fd {nr}. (Olaf Dabrunz,
@@ -82,6 +76,8 @@ not be repeated below, unless there is extra information.
 - For connection to server, a "keep open" flag would be useful.  Retry
   connecting in the main loop with zero timeout.
 
+Remove the sniff interface?  Looks like it's dead.
+
 More plugin support:
 - Have a way to install a callback from the main loop.  Called every second or
   so.
@@ -94,9 +90,8 @@ More plugin support:
       gettabnr({id})        tab page nr of {id} or -1 if not open
       gotowin({id})
   Make it so that the window ID can be used where currently a window nr is used
-
-Patch on #608: (Ken Takata)
-https://bitbucket.org/k_takata/vim-ktakata-mq/src/479934b94fd56b064c9e4bd8737585c5df69d56a/fix-gvimext-loadlibrary.patch?fileviewer=file-view-default
+  Patch from Anton Lindqvist, 2016 Feb 21, to make bufwinnr() return a list.
+  Perhaps add bufwinid() instead.
 
 This difference is unexpected:
     echo v:true == 1
@@ -109,25 +104,11 @@ Compiler warnings. (John Marriott, Feb 17)
 
 Compiler warnings in if_ole.cpp.  Patch by Ken Takata, Feb 18.
 
-Add "runtime/bundles" ?
-    runtime/bundles/netrw/spec.vim
-    runtime/bundles/netrw/autoload/netrw.vim
-    runtime/bundles/netrw/syntax/netrw.vim
-    etc.
-Need an alternative for 'runtimepath' that tells where bundles are to be
-found. 'bundlepath' ?
-The plugins under 'bundlepath' would always be loaded.  Also have a path for
-optional plugins?  'optbundlepath'?  Or have directories "bundlesdef" and
-"bundlesopt"?
-Then use a command "loadplugin" to find a plugin in "optional".
-"bundles" is used by some plugin managers, need another name. "packages"?
-Add a "requires" / "provides" mechanism?
-    if my_feature_enabled
-      require +python
-    endif
-    require my_other_plugin
-~/vim/packages/netrw/def/netrw/plugin/netrw.vim
-~/vim/packages/netrw/opt/nwdebug/plugin/nwdebug.vim
+When running "make install" don't overwrite the doc/tags file, generate it
+elsewhere, so that the distributed file doesn't change.
+
+Fix to support --nofork for Windows batch files. (Kevin Cantú, 2016 Feb 23,
+#658)
 
 Patch to add GTK 3 support. (Kazunobu Kuriyama, 2016 Feb 13)
 
@@ -199,6 +180,14 @@ Patch for test86 and test87. (Roland Puntaier, #622)
 Patch for Python: #622. (Roland Puntaier, 2016 Feb 2)
 What does it change?
 
+Win32: patch to use 64 bit stat() if possible. (Ken Takata, 2014 May 12)
+More tests May 14. Update May 29.  Update Aug 10.
+Now part of large file patches. (Ken Takata, 2016 Feb 1)
+Two patches now?  New update Feb 24.
+
+Patch to support 64 bit ints for Number. (Ken Takata, 2016 Jan 21)
+Also in update of Feb 24?
+
 Need to try out instructions in INSSTALLpc.txt about how to install all
 interfaces and how to build Vim with them.
 Appveyor build with self-installing executable, includes getting most
@@ -251,12 +240,7 @@ directory exists. (Sergio Gallelli, 2013 Dec 29)
 Patch to avoid redrawing tabline when the popup menu is visible.
 (Christian Brabandt, 2016 Jan 28)
 
-Win32: patch to use 64 bit stat() if possible. (Ken Takata, 2014 May 12)
-More tests May 14. Update May 29.  Update Aug 10.
-Now part of large file patches. (Ken Takata, 2016 Feb 1)
-Two patches now?
-
-Patch to support 64 bit ints for Number. (Ken Takata, 2016 Jan 21)
+Patch to add {skip} argument to search(). (Christian Brabandt, 2016 Feb 24)
 
 7   Add a watchpoint in the debug mode: An expression that breaks execution
     when evaluating to non-zero.  Add the "watchadd expr" command, stop when
diff --git a/runtime/ftplugin/eiffel.vim b/runtime/ftplugin/eiffel.vim
new file mode 100644 (file)
index 0000000..216fdde
--- /dev/null
@@ -0,0 +1,96 @@
+" Vim filetype plugin
+" Language:    Eiffel
+" Maintainer:  Doug Kearns <dougkearns@gmail.com>
+" Last Change: 2010 Aug 29
+
+if (exists("b:did_ftplugin"))
+  finish
+endif
+let b:did_ftplugin = 1
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+setlocal comments=:--
+setlocal commentstring=--\ %s
+
+setlocal formatoptions-=t formatoptions+=croql
+
+if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter")
+  let b:browsefilter = "Eiffel Source Files (*.e)\t*.e\n" .
+                    \ "Eiffel Control Files (*.ecf, *.ace, *.xace)\t*.ecf;*.ace;*.xace\n" .
+                    \ "All Files (*.*)\t*.*\n"
+endif
+
+if exists("loaded_matchit") && !exists("b:match_words")
+  let b:match_ignorecase = 0
+  " Silly \%^ trick to match note at head of pair and in middle prevents
+  " 'g%' wrapping from 'note' to 'end'
+  let b:match_words = '\%^:' .
+                 \     '\<\%(^note\|indexing\|class\|^obsolete\|inherit\|insert\|^create\|convert\|feature\|^invariant\)\>:' .
+                 \   '^end\>,' .
+                 \   '\<\%(do\|deferred\|external\|once\%(\s\+"\)\@!\|check\|debug\|if\|inspect\|from\|across\)\>:' .
+                 \     '\%(\%(^\s\+\)\@<=\%(then\|until\|loop\)\|\%(then\|until\|loop\)\s\+[^ -]\|' .
+                 \     '\<\%(ensure\%(\s\+then\)\=\|rescue\|_then\|elseif\|else\|when\|\s\@<=invariant\|_until\|_loop\|variant\|_as\|alias\)\>\):' .
+                 \   '\s\@<=end\>'
+  let b:match_skip = 's:\<eiffel\%(Comment\|String\|Operator\)\>'
+  noremap  [% <Nop>
+  noremap  ]% <Nop>
+  vnoremap a% <Nop>
+endif
+
+let b:undo_ftplugin = "setl fo< com< cms<" .
+  \ "| unlet! b:browsefilter b:match_ignorecase b:match_words b:match_skip"
+
+if !exists("g:no_plugin_maps") && !exists("g:no_eiffel_maps")
+  function! s:DoMotion(pattern, count, flags) abort
+    normal! m'
+    for i in range(a:count)
+      call search(a:pattern, a:flags)
+    endfor
+  endfunction
+
+  let sections = '^\%(note\|indexing\|' .
+            \   '\%(\%(deferred\|expanded\|external\|frozen\)\s\+\)*class\|' .
+            \   'obsolete\|inherit\|insert\|create\|convert\|feature\|' .
+            \   'invariant\|end\)\>'
+
+  nnoremap <silent> <buffer> ]] :<C-U>call <SID>DoMotion(sections, v:count1, 'W')<CR>
+  xnoremap <silent> <buffer> ]] :<C-U>exe "normal! gv"<Bar>call <SID>DoMotion(sections, v:count1, 'W')<CR>
+  nnoremap <silent> <buffer> [[ :<C-U>call <SID>DoMotion(sections, v:count1, 'Wb')<CR>
+  xnoremap <silent> <buffer> [[ :<C-U>exe "normal! gv"<Bar>call <SID>DoMotion(sections, v:count1, 'Wb')<CR>
+
+  function! s:DoFeatureMotion(count, flags)
+    let view = winsaveview()
+    call cursor(1, 1)
+    let [features_start, _] = searchpos('^feature\>')
+    call search('^\s\+\a') " find the first feature
+    let spaces = indent(line('.'))
+    let [features_end, _] = searchpos('^\%(invariant\|note\|end\)\>')
+    call winrestview(view)
+    call s:DoMotion('\%>' . features_start . 'l\%<' . features_end . 'l^\s*\%' . (spaces + 1) . 'v\zs\a', a:count, a:flags)
+  endfunction
+
+  nnoremap <silent> <buffer> ]m :<C-U>call <SID>DoFeatureMotion(v:count1, 'W')<CR>
+  xnoremap <silent> <buffer> ]m :<C-U>exe "normal! gv"<Bar>call <SID>DoFeatureMotion(v:count1, 'W')<CR>
+  nnoremap <silent> <buffer> [m :<C-U>call <SID>DoFeatureMotion(v:count1, 'Wb')<CR>
+  xnoremap <silent> <buffer> [m :<C-U>exe "normal! gv"<Bar>call <SID>DoFeatureMotion(v:count1, 'Wb')<CR>
+
+  let comment_block_start = '^\%(\s\+--.*\n\)\@<!\s\+--'
+  let comment_block_end = '^\s\+--.*\n\%(\s\+--\)\@!'
+
+  nnoremap <silent> <buffer> ]- :<C-U>call <SID>DoMotion(comment_block_start, 1, 'W')<CR>
+  xnoremap <silent> <buffer> ]- :<C-U>exe "normal! gv"<Bar>call <SID>DoMotion(comment_block_start, 1, 'W')<CR>
+  nnoremap <silent> <buffer> [- :<C-U>call <SID>DoMotion(comment_block_end, 1, 'Wb')<CR>
+  xnoremap <silent> <buffer> [- :<C-U>exe "normal! gv"<Bar>call <SID>DoMotion(comment_block_end, 1, 'Wb')<CR>
+
+  let b:undo_ftplugin = b:undo_ftplugin .
+    \ "| silent! execute 'unmap <buffer> [[' | silent! execute 'unmap <buffer> ]]'" .
+    \ "| silent! execute 'unmap <buffer> [m' | silent! execute 'unmap <buffer> ]m'" .
+    \ "| silent! execute 'unmap <buffer> [-' | silent! execute 'unmap <buffer> ]-'"
+endif
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
+
+" vim: nowrap sw=2 sts=2 ts=8
index 2d603b0afa0a3ff7c7e0cb3f42221ff52515279f..d05bb3770f221217574a49b067ee8b64f7c711ef 100644 (file)
@@ -3,7 +3,7 @@
 " Maintainer:          Christian Brabandt <cb@256bit.org>
 " Previous Maintainer: Peter Aronoff <telemachus@arpinum.org>
 " Original Author:     Nikolai Weibull <now@bitwi.se>
-" Latest Revision:     2016-01-15
+" Latest Revision:     2016-02-15
 " License:             Vim (see :h license)
 " Repository:          https://github.com/chrisbra/vim-sh-indent
 
@@ -12,14 +12,14 @@ if exists("b:did_indent")
 endif
 let b:did_indent = 1
 
-let b:undo_indent = 'setlocal indentexpr< indentkeys< smartindent<'
-
 setlocal indentexpr=GetShIndent()
 setlocal indentkeys+=0=then,0=do,0=else,0=elif,0=fi,0=esac,0=done,0=end,),0=;;,0=;&
 setlocal indentkeys+=0=fin,0=fil,0=fip,0=fir,0=fix
 setlocal indentkeys-=:,0#
 setlocal nosmartindent
 
+let b:undo_indent = 'setlocal indentexpr< indentkeys< smartindent<'
+
 if exists("*GetShIndent")
   finish
 endif
@@ -67,7 +67,7 @@ function! GetShIndent()
     if !s:is_case_ended(line)
       let ind += s:indent_value('case-statements')
     endif
-  elseif line =~ '^\s*\<\k\+\>\s*()\s*{' || line =~ '^\s*{'
+  elseif line =~ '^\s*\<\k\+\>\s*()\s*{' || line =~ '^\s*{' || line =~ '^\s*function\s*\w\S\+\s*\%(()\)\?\s*{'
     if line !~ '}\s*\%(#.*\)\=$'
       let ind += s:indent_value('default')
     endif
index 15a00eb516dec2e5403427def12f5de00ce763c0..3fc236f033e1a1598a12d3da0cf5fd0aec642b2d 100644 (file)
@@ -2,8 +2,8 @@
 " 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:         Feb 16, 2016
-" Version:             144
+" Last Change:         Feb 18, 2016
+" Version:             145
 " 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 Eric Brunet (eric.brunet@ens.fr)
index 40013b5b99acc5e80478cd6d1a2dd1bbef1cc23e..cef28d65edfa2d56497980956fb88fb201b2e683 100644 (file)
@@ -1,8 +1,8 @@
 " Vim syntax file
 " Language:    TeX
 " Maintainer:  Charles E. Campbell <NdrchipO@ScampbellPfamily.AbizM>
-" Last Change: Jan 20, 2016
-" Version:     91
+" Last Change: Feb 18, 2016
+" Version:     92
 " URL:         http://www.drchip.org/astronaut/vim/index.html#SYNTAX_TEX
 "
 " Notes: {{{1
@@ -200,7 +200,7 @@ if !exists("g:tex_no_math")
 endif
 
 " Try to flag {} and () mismatches: {{{1
-if s:tex_fast =~ 'm'
+if s:tex_fast =~# 'm'
   if !s:tex_no_error
    syn region texMatcher               matchgroup=Delimiter start="{" skip="\\\\\|\\[{}]"      end="}"         transparent contains=@texMatchGroup,texError
    syn region texMatcher               matchgroup=Delimiter start="\["                         end="]"         transparent contains=@texMatchGroup,texError,@NoSpell
@@ -217,7 +217,7 @@ endif
 if !s:tex_no_error
  syn match  texError           "[}\])]"
 endif
-if s:tex_fast =~ 'M'
+if s:tex_fast =~# 'M'
   if !exists("g:tex_no_math")
    if !s:tex_no_error
     syn match  texMathError    "}"     contained
@@ -260,14 +260,14 @@ 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'
+if s:tex_fast =~# 'm'
   syn region texBeginEndName           matchgroup=Delimiter    start="{"               end="}" contained       nextgroup=texBeginEndModifier   contains=texComment
   syn region texBeginEndModifier       matchgroup=Delimiter    start="\["              end="]" contained       contains=texComment,@NoSpell
 endif
 
 " \documentclass, \documentstyle, \usepackage: {{{1
 syn match  texDocType          "\\documentclass\>\|\\documentstyle\>\|\\usepackage\>"  nextgroup=texBeginEndName,texDocTypeArgs
-if s:tex_fast =~ 'm'
+if s:tex_fast =~# 'm'
   syn region texDocTypeArgs    matchgroup=Delimiter start="\[" end="]"                 contained       nextgroup=texBeginEndName       contains=texComment,@NoSpell
 endif
 
@@ -281,7 +281,7 @@ syn match texInput          "\\input\s\+[a-zA-Z/.0-9_^]\+"hs=s+7                            contains=texStatemen
 syn match texInputFile         "\\include\(graphics\|list\)\=\(\[.\{-}\]\)\=\s*{.\{-}}"        contains=texStatement,texInputCurlies,texInputFileOpt
 syn match texInputFile         "\\\(epsfig\|input\|usepackage\)\s*\(\[.*\]\)\={.\{-}}"         contains=texStatement,texInputCurlies,texInputFileOpt
 syn match texInputCurlies      "[{}]"                                                          contained
-if s:tex_fast =~ 'm'
+if s:tex_fast =~# 'm'
  syn region texInputFileOpt    matchgroup=Delimiter start="\[" end="\]"                        contained       contains=texComment
 endif
 
@@ -349,7 +349,7 @@ syn match texSpaceCode              "\\\(math\|cat\|del\|lc\|sf\|uc\)code`"me=e-1 nextgroup=
 syn match texSpaceCodeChar    "`\\\=.\(\^.\)\==\(\d\|\"\x\{1,6}\|`.\)" contained
 
 " Sections, subsections, etc: {{{1
-if s:tex_fast =~ 'p'
+if s:tex_fast =~# 'p'
  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
@@ -376,8 +376,8 @@ if s:tex_fast =~ 'p'
 endif
 
 " particular support for bold and italic {{{1
-if s:tex_fast =~ 'b'
-  if s:tex_conceal =~ 'b'
+if s:tex_fast =~# 'b'
+  if s:tex_conceal =~# 'b'
    if !exists("g:tex_nospell") || !g:tex_nospell
     syn region texBoldStyle    matchgroup=texTypeStyle start="\\textbf\s*{" matchgroup=texTypeStyle  end="}" concealends contains=@texBoldGroup,@Spell
     syn region texBoldItalStyle        matchgroup=texTypeStyle start="\\textit\s*{" matchgroup=texTypeStyle  end="}" concealends contains=@texItalGroup,@Spell
@@ -414,7 +414,7 @@ if !exists("g:tex_no_math")
     let foldcmd= ""
    endif
    exe "syn cluster texMathZones add=".grpname
-   if s:tex_fast =~ 'M'
+   if s:tex_fast =~# 'M'
     exe 'syn region '.grpname.' start='."'".'\\begin\s*{\s*'.a:mathzone.'\s*}'."'".' end='."'".'\\end\s*{\s*'.a:mathzone.'\s*}'."'".' keepend contains=@texMathZoneGroup'.foldcmd
     exe 'syn sync match '.syncname.' grouphere '.grpname.' "\\begin\s*{\s*'.a:mathzone.'\*\s*}"'
     exe 'syn sync match '.syncname.' grouphere '.grpname.' "\\begin\s*{\s*'.a:mathzone.'\*\s*}"'
@@ -424,7 +424,7 @@ if !exists("g:tex_no_math")
     let grpname  = "texMathZone".a:sfx.'S'
     let syncname = "texSyncMathZone".a:sfx.'S'
     exe "syn cluster texMathZones add=".grpname
-    if s:tex_fast =~ 'M'
+    if s:tex_fast =~# 'M'
      exe 'syn region '.grpname.' start='."'".'\\begin\s*{\s*'.a:mathzone.'\*\s*}'."'".' end='."'".'\\end\s*{\s*'.a:mathzone.'\*\s*}'."'".' keepend contains=@texMathZoneGroup'.foldcmd
      exe 'syn sync match '.syncname.' grouphere '.grpname.' "\\begin\s*{\s*'.a:mathzone.'\*\s*}"'
      exe 'syn sync match '.syncname.' grouphere '.grpname.' "\\begin\s*{\s*'.a:mathzone.'\*\s*}"'
@@ -448,8 +448,8 @@ if !exists("g:tex_no_math")
  call TexNewMathZone("L","xxalignat",0)
 
  " Inline Math Zones: {{{2
- if s:tex_fast =~ 'M'
-  if has("conceal") && &enc == 'utf-8' && s:tex_conceal =~ 'd'
+ if s:tex_fast =~# 'M'
+  if has("conceal") && &enc == 'utf-8' && s:tex_conceal =~# 'd'
    syn region texMathZoneV     matchgroup=Delimiter start="\\("                        matchgroup=Delimiter    end="\\)\|%stopzone\>"                  keepend concealends contains=@texMathZoneGroup
    syn region texMathZoneW     matchgroup=Delimiter start="\\\["                       matchgroup=Delimiter    end="\\]\|%stopzone\>"                  keepend concealends contains=@texMathZoneGroup
    syn region texMathZoneX     matchgroup=Delimiter start="\$" skip="\\\\\|\\\$"       matchgroup=Delimiter    end="\$"        end="%stopzone\>"               concealends contains=@texMathZoneGroup
@@ -466,7 +466,7 @@ if !exists("g:tex_no_math")
  syn match texMathOper         "[_^=]" contained
 
  " Text Inside Math Zones: {{{2
- if s:tex_fast =~ 'M'
+ if s:tex_fast =~# 'M'
   if !exists("g:tex_nospell") || !g:tex_nospell
    syn region texMathText matchgroup=texStatement start='\\\(\(inter\)\=text\|mbox\)\s*{'      end='}' contains=@texFoldGroup,@Spell
   else
@@ -476,7 +476,7 @@ if !exists("g:tex_no_math")
 
  " \left..something.. and \right..something.. support: {{{2
  syn match   texMathDelimBad   contained               "\S"
- if has("conceal") && &enc == 'utf-8' && s:tex_conceal =~ 'm'
+ if has("conceal") && &enc == 'utf-8' && s:tex_conceal =~# 'm'
   syn match   texMathDelim     contained               "\\left\\{\>"   skipwhite nextgroup=texMathDelimSet1,texMathDelimSet2,texMathDelimBad contains=texMathSymbol cchar={
   syn match   texMathDelim     contained               "\\right\\}\>"  skipwhite nextgroup=texMathDelimSet1,texMathDelimSet2,texMathDelimBad contains=texMathSymbol cchar=}
   let s:texMathDelimList=[
@@ -568,13 +568,13 @@ else
   " allows syntax-folding of 2 or more contiguous comment lines
   " single-line comments are not folded
   syn match  texComment        "%.*$"                          contains=@texCommentGroup
-  if s:tex_fast =~ 'c'
+  if s:tex_fast =~# 'c'
    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'
+  if s:tex_fast =~# 'c'
    syn region texNoSpell               contained       matchgroup=texComment start="%\s*nospell\s*{"   end="%\s*nospell\s*}"   contains=@texFoldGroup,@NoSpell
   endif
  endif
@@ -583,7 +583,7 @@ endif
 " Separate lines used for verb` and verb# so that the end conditions {{{1
 " will appropriately terminate.
 " If g:tex_verbspell exists, then verbatim texZones will permit spellchecking there.
-if s:tex_fast =~ 'v'
+if s:tex_fast =~# 'v'
   if exists("g:tex_verbspell") && g:tex_verbspell
    syn region texZone          start="\\begin{[vV]erbatim}"            end="\\end{[vV]erbatim}\|%stopzone\>"   contains=@Spell
    " listings package:
@@ -614,7 +614,7 @@ if s:tex_fast =~ 'v'
 endif
 
 " Tex Reference Zones: {{{1
-if s:tex_fast =~ 'r'
+if s:tex_fast =~# 'r'
   syn region texZone           matchgroup=texStatement start="@samp{"                  end="}\|%stopzone\>"    contains=@texRefGroup
   syn region texRefZone                matchgroup=texStatement start="\\nocite{"               end="}\|%stopzone\>"    contains=@texRefGroup
   syn region texRefZone                matchgroup=texStatement start="\\bibliography{"         end="}\|%stopzone\>"    contains=@texRefGroup
@@ -628,13 +628,13 @@ syn match  texRefZone             '\\cite\%([tp]\*\=\)\=' nextgroup=texRefOption,texCite
 
 " Handle newcommand, newenvironment : {{{1
 syn match  texNewCmd                           "\\newcommand\>"                        nextgroup=texCmdName skipwhite skipnl
-if s:tex_fast =~ 'V'
+if s:tex_fast =~# 'V'
   syn region texCmdName contained matchgroup=Delimiter start="{"rs=s+1  end="}"                nextgroup=texCmdArgs,texCmdBody skipwhite skipnl
   syn region texCmdArgs contained matchgroup=Delimiter start="\["rs=s+1 end="]"                nextgroup=texCmdBody skipwhite skipnl
   syn region texCmdBody contained matchgroup=Delimiter start="{"rs=s+1 skip="\\\\\|\\[{}]"     matchgroup=Delimiter end="}" contains=@texCmdGroup
 endif
 syn match  texNewEnv                           "\\newenvironment\>"                    nextgroup=texEnvName skipwhite skipnl
-if s:tex_fast =~ 'V'
+if s:tex_fast =~# 'V'
   syn region texEnvName contained matchgroup=Delimiter start="{"rs=s+1  end="}"                nextgroup=texEnvBgn skipwhite skipnl
   syn region texEnvBgn  contained matchgroup=Delimiter start="{"rs=s+1  end="}"                nextgroup=texEnvEnd skipwhite skipnl contains=@texEnvGroup
   syn region texEnvEnd  contained matchgroup=Delimiter start="{"rs=s+1  end="}"                skipwhite skipnl contains=@texEnvGroup
@@ -660,11 +660,11 @@ syn match texString               "\(``\|''\|,,\)"
 
 " makeatletter -- makeatother sections
 if !s:tex_no_error
- if s:tex_fast =~ 'S'
+ if s:tex_fast =~# 'S'
   syn region texStyle                  matchgroup=texStatement start='\\makeatletter' end='\\makeatother'      contains=@texStyleGroup contained
  endif
  syn match  texStyleStatement          "\\[a-zA-Z@]\+" contained
- if s:tex_fast =~ 'S'
+ if s:tex_fast =~# 'S'
   syn region texStyleMatcher           matchgroup=Delimiter start="{" skip="\\\\\|\\[{}]"      end="}"         contains=@texStyleGroup,texError        contained
   syn region texStyleMatcher           matchgroup=Delimiter start="\["                         end="]"         contains=@texStyleGroup,texError        contained
  endif
@@ -675,7 +675,7 @@ if has("conceal") && &enc == 'utf-8'
 
  " Math Symbols {{{2
  " (many of these symbols were contributed by Björn Winckler)
- if s:tex_conceal =~ 'm'
+ if s:tex_conceal =~# 'm'
   let s:texMathList=[
     \ ['|'             , '‖'],
     \ ['aleph'         , 'ℵ'],
@@ -956,7 +956,7 @@ if has("conceal") && &enc == 'utf-8'
 "    \ ['uminus'       , 'X']
 "    \ ['uplus'                , 'X']
   for texmath in s:texMathList
-   if texmath[0] =~ '\w$'
+   if texmath[0] =~# '\w$'
     exe "syn match texMathSymbol '\\\\".texmath[0]."\\>' contained conceal cchar=".texmath[1]
    else
     exe "syn match texMathSymbol '\\\\".texmath[0]."' contained conceal cchar=".texmath[1]
@@ -995,7 +995,7 @@ if has("conceal") && &enc == 'utf-8'
  endif
 
  " Greek {{{2
- if s:tex_conceal =~ 'g'
+ if s:tex_conceal =~# 'g'
   fun! s:Greek(group,pat,cchar)
     exe 'syn match '.a:group." '".a:pat."' contained conceal cchar=".a:cchar
   endfun
@@ -1042,14 +1042,14 @@ if has("conceal") && &enc == 'utf-8'
  endif
 
  " Superscripts/Subscripts {{{2
- if s:tex_conceal =~ 's'
-  if s:tex_fast =~ 's'
+ if s:tex_conceal =~# 's'
+  if s:tex_fast =~# 's'
    syn region texSuperscript   matchgroup=Delimiter start='\^{'        skip="\\\\\|\\[{}]" end='}'     contained concealends contains=texSpecialChar,texSuperscripts,texStatement,texSubscript,texSuperscript,texMathMatcher
    syn region texSubscript     matchgroup=Delimiter start='_{'         skip="\\\\\|\\[{}]" end='}'     contained concealends contains=texSpecialChar,texSubscripts,texStatement,texSubscript,texSuperscript,texMathMatcher
   endif
   " s:SuperSub:
   fun! s:SuperSub(group,leader,pat,cchar)
-    if a:pat =~ '^\\' || (a:leader == '\^' && a:pat =~ g:tex_superscripts) || (a:leader == '_' && a:pat =~ g:tex_subscripts)
+    if a:pat =~# '^\\' || (a:leader == '\^' && a:pat =~# g:tex_superscripts) || (a:leader == '_' && a:pat =~# g:tex_subscripts)
 "     call Decho("SuperSub: group<".a:group."> leader<".a:leader."> pat<".a:pat."> cchar<".a:cchar.">")
      exe 'syn match '.a:group." '".a:leader.a:pat."' contained conceal cchar=".a:cchar
      exe 'syn match '.a:group."s '".a:pat        ."' contained conceal cchar=".a:cchar.' nextgroup='.a:group.'s'
@@ -1154,7 +1154,7 @@ if has("conceal") && &enc == 'utf-8'
  endif
 
  " Accented characters: {{{2
- if s:tex_conceal =~ 'a'
+ if s:tex_conceal =~# 'a'
   if b:tex_stylish
    syn match texAccent         "\\[bcdvuH][^a-zA-Z@]"me=e-1
    syn match texLigature               "\\\([ijolL]\|ae\|oe\|ss\|AA\|AE\|OE\)[^a-zA-Z@]"me=e-1
@@ -1169,7 +1169,7 @@ if has("conceal") && &enc == 'utf-8'
        let i= i + 1
        continue
       endif
-      if accent =~ '\a'
+      if accent =~# '\a'
        exe "syn match texAccent '".'\\'.accent.'\(\s*{'.a:chr.'}\|\s\+'.a:chr.'\)'."' conceal cchar=".a:{i}
       else
        exe "syn match texAccent '".'\\'.accent.'\s*\({'.a:chr.'}\|'.a:chr.'\)'."' conceal cchar=".a:{i}
index 9928051c269fb28bf9fbe75cc1d3cb2b6efb7ad1..0206a61e7873966b7784febaba76879ec3efd236 100644 (file)
@@ -2,7 +2,7 @@
 " Language:    Vim 7.4 script
 " Maintainer:  Charles E. Campbell <NdrOchipS@PcampbellAfamily.Mbiz>
 " Last Change: February 17, 2016
-" Version:     7.4-43
+" Version:     7.4-44
 " Automatically generated keyword lists: {{{1
 
 " Quit when a syntax file was already loaded {{{2
@@ -83,43 +83,43 @@ syn keyword vimFuncName contained   add append arglistid assert_equal assert_false
 " Special Vim Highlighting (not automatic) {{{1
 
 " Set up folding commands
-if exists("g:vimsyn_folding") && g:vimsyn_folding =~ '[aflmpPrt]'
- if g:vimsyn_folding =~ 'a' 
+if exists("g:vimsyn_folding") && g:vimsyn_folding =~# '[aflmpPrt]'
+ if g:vimsyn_folding =~# 'a' 
   com! -nargs=* VimFolda <args> fold 
  else 
   com! -nargs=* VimFolda <args> 
  endif
- if g:vimsyn_folding =~ 'f' 
+ if g:vimsyn_folding =~# 'f' 
   com! -nargs=* VimFoldf <args> fold 
  else 
   com! -nargs=* VimFoldf <args> 
  endif
- if g:vimsyn_folding =~ 'l' 
+ if g:vimsyn_folding =~# 'l' 
   com! -nargs=* VimFoldl <args> fold 
  else 
   com! -nargs=* VimFoldl <args> 
  endif
- if g:vimsyn_folding =~ 'm' 
+ if g:vimsyn_folding =~# 'm' 
   com! -nargs=* VimFoldm <args> fold 
  else 
   com! -nargs=* VimFoldm <args> 
  endif
- if g:vimsyn_folding =~ 'p' 
+ if g:vimsyn_folding =~# 'p' 
   com! -nargs=* VimFoldp <args> fold 
  else 
   com! -nargs=* VimFoldp <args> 
  endif
- if g:vimsyn_folding =~ 'P' 
+ if g:vimsyn_folding =~# 'P' 
   com! -nargs=* VimFoldP <args> fold 
  else 
   com! -nargs=* VimFoldP <args> 
  endif
- if g:vimsyn_folding =~ 'r' 
+ if g:vimsyn_folding =~# 'r' 
   com! -nargs=* VimFoldr <args> fold 
  else 
   com! -nargs=* VimFoldr <args> 
  endif
- if g:vimsyn_folding =~ 't' 
+ if g:vimsyn_folding =~# 't' 
   com! -nargs=* VimFoldt <args> fold 
  else 
   com! -nargs=* VimFoldt <args> 
@@ -190,7 +190,7 @@ 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
-if exists("g:vimsyn_folding") && g:vimsyn_folding =~ 'a'
+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
@@ -218,7 +218,7 @@ syn cluster vimFuncList     contains=vimCommand,vimFunctionError,vimFuncKey,Tag,vimF
 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
 
-if exists("g:vimsyn_folding") && g:vimsyn_folding =~ 'f'
+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
@@ -611,12 +611,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
@@ -631,7 +631,7 @@ if !filereadable(s:luapath)
   endif
  endfor
 endif
-if (g:vimsyn_embed =~ 'l' && has("lua")) && filereadable(s:luapath)
+if (g:vimsyn_embed =~# 'l' && has("lua")) && filereadable(s:luapath)
  unlet! b:current_syntax
  exe "syn include @vimLuaScript ".s:luapath
  VimFoldl syn region vimLuaRegion matchgroup=vimScriptDelim start=+lua\s*<<\s*\z(.*\)$+ end=+^\z1$+    contains=@vimLuaScript
@@ -653,7 +653,7 @@ if !filereadable(s:perlpath)
   endif
  endfor
 endif
-if (g:vimsyn_embed =~ 'p' && has("perl")) && filereadable(s:perlpath)
+if (g:vimsyn_embed =~# 'p' && has("perl")) && filereadable(s:perlpath)
  unlet! b:current_syntax
  exe "syn include @vimPerlScript ".s:perlpath
  VimFoldp syn region vimPerlRegion  matchgroup=vimScriptDelim start=+pe\%[rl]\s*<<\s*\z(.*\)$+ end=+^\z1$+     contains=@vimPerlScript
@@ -675,7 +675,7 @@ if !filereadable(s:rubypath)
   endif
  endfor
 endif
-if (g:vimsyn_embed =~ 'r' && has("ruby")) && filereadable(s:rubypath)
+if (g:vimsyn_embed =~# 'r' && has("ruby")) && filereadable(s:rubypath)
  unlet! b:current_syntax
  exe "syn include @vimRubyScript ".s:rubypath
  VimFoldr syn region vimRubyRegion matchgroup=vimScriptDelim start=+rub[y]\s*<<\s*\z(.*\)$+ end=+^\z1$+        contains=@vimRubyScript
@@ -697,7 +697,7 @@ if !filereadable(s:pythonpath)
   endif
  endfor
 endif
-if g:vimsyn_embed =~ 'P' && (has("python") || has("python3")) && filereadable(s:pythonpath)
+if g:vimsyn_embed =~# 'P' && (has("python") || has("python3")) && filereadable(s:pythonpath)
  unlet! b:current_syntax
  exe "syn include @vimPythonScript ".s:pythonpath
  VimFoldP syn region vimPythonRegion matchgroup=vimScriptDelim start=+py\%[thon]3\=\s*<<\s*\z(.*\)$+ end=+^\z1$+       contains=@vimPythonScript
@@ -728,7 +728,7 @@ if s:trytcl
    endif
   endfor
  endif
- if (g:vimsyn_embed =~ 't' && has("tcl")) && filereadable(s:tclpath)
+ if (g:vimsyn_embed =~# 't' && has("tcl")) && filereadable(s:tclpath)
   unlet! b:current_syntax
   exe "syn include @vimTclScript ".s:tclpath
   VimFoldt syn region vimTclRegion matchgroup=vimScriptDelim start=+tc[l]\=\s*<<\s*\z(.*\)$+ end=+^\z1$+       contains=@vimTclScript
@@ -755,7 +755,7 @@ if !filereadable(s:mzschemepath)
   endif
  endfor
 endif
-if (g:vimsyn_embed =~ 'm' && has("mzscheme")) && filereadable(s:mzschemepath)
+if (g:vimsyn_embed =~# 'm' && has("mzscheme")) && filereadable(s:mzschemepath)
  unlet! b:current_syntax
  let iskKeep= &isk
  exe "syn include @vimMzSchemeScript ".s:mzschemepath
index 25d4cd493652356bdfa740a4e068102e1e7d6d83..0d385a35d03f73f6a5acf39f698d5ce75ec664f0 100644 (file)
@@ -2,7 +2,7 @@
 " Language:             Zsh shell script
 " Maintainer:           Christian Brabandt <cb@256bit.org>
 " Previous Maintainer:  Nikolai Weibull <now@bitwi.se>
-" Latest Revision:      2016-01-25
+" Latest Revision:      2016-02-15
 " License:              Vim (see :h license)
 " Repository:          https://github.com/chrisbra/vim-zsh
 
@@ -13,20 +13,29 @@ endif
 let s:cpo_save = &cpo
 set cpo&vim
 
-setlocal iskeyword+=-
-setlocal foldmethod=syntax
+if v:version > 704 || (v:version == 704 && has("patch1142"))
+    syn iskeyword @,48-57,_,192-255,#,-
+else
+    setlocal iskeyword+=-
+endif
+if get(g:, 'zsh_fold_enable', 0)
+    setlocal foldmethod=syntax
+endif
 
 syn keyword zshTodo             contained TODO FIXME XXX NOTE
 
 syn region  zshComment          oneline start='\%(^\|\s*\)#' end='$'
-                                \ contains=zshTodo,@Spell
+                                \ contains=zshTodo,@Spell fold
+
+syn region  zshComment          start='^\s*#' end='^\%(\s*#\)\@!'
+                                \ contains=zshTodo,@Spell fold
 
 syn match   zshPreProc          '^\%1l#\%(!\|compdef\|autoload\).*$'
 
 syn match   zshQuoted           '\\.'
 syn region  zshString           matchgroup=zshStringDelimiter start=+"+ end=+"+
-                                \ contains=zshQuoted,@zshDerefs,@zshSubst
-syn region  zshString           matchgroup=zshStringDelimiter start=+'+ end=+'+
+                                \ contains=zshQuoted,@zshDerefs,@zshSubst fold
+syn region  zshString           matchgroup=zshStringDelimiter start=+'+ end=+'+ fold
 " XXX: This should probably be more precise, but Zsh seems a bit confused about it itself
 syn region  zshPOSIXString      matchgroup=zshStringDelimiter start=+\$'+
                                 \ end=+'+ contains=zshQuoted
@@ -46,7 +55,7 @@ syn keyword zshException        always
 
 syn keyword zshKeyword          function nextgroup=zshKSHFunction skipwhite
 
-syn match   zshKSHFunction      contained '\k\+'
+syn match   zshKSHFunction      contained '\w\S\+'
 syn match   zshFunction         '^\s*\k\+\ze\s*()'
 
 syn match   zshOperator         '||\|&&\|;\|&!\='
@@ -317,6 +326,8 @@ syn region  zshMathSubst        matchgroup=zshSubstDelim transparent
                                 \ @zshDerefs,zshString keepend fold
 syn region  zshBrackets         contained transparent start='{' skip='\\}'
                                 \ end='}' fold
+syn region  zshBrackets         transparent start='{' skip='\\}'
+                                \ end='}' contains=TOP fold
 syn region  zshSubst            matchgroup=zshSubstDelim start='\${' skip='\\}'
                                 \ end='}' contains=@zshSubst,zshBrackets,zshQuoted,zshString fold
 syn region  zshOldSubst         matchgroup=zshSubstDelim start=+`+ skip=+\\`+