summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2016-02-25 00:00:01 +0100
committerBram Moolenaar <Bram@vim.org>2016-02-25 00:00:01 +0100
commitf391327adbbffb11180cf6038a92af1ed144e907 (patch)
treedb1b98159a3f1960dc7df8157fc9fd5cbf40435a
parent84f4996d2ab2982006d79ee69df4688c966bf8e8 (diff)
downloadvim-git-f391327adbbffb11180cf6038a92af1ed144e907.tar.gz
Updated runtime files.
-rw-r--r--runtime/doc/channel.txt15
-rw-r--r--runtime/doc/eval.txt10
-rw-r--r--runtime/doc/help.txt3
-rw-r--r--runtime/doc/index.txt3
-rw-r--r--runtime/doc/options.txt16
-rw-r--r--runtime/doc/quickref.txt5
-rw-r--r--runtime/doc/repeat.txt4
-rw-r--r--runtime/doc/syntax.txt9
-rw-r--r--runtime/doc/tags6
-rw-r--r--runtime/doc/todo.txt98
-rw-r--r--runtime/ftplugin/eiffel.vim96
-rw-r--r--runtime/indent/sh.vim8
-rw-r--r--runtime/syntax/sh.vim4
-rw-r--r--runtime/syntax/tex.vim64
-rw-r--r--runtime/syntax/vim.vim48
-rw-r--r--runtime/syntax/zsh.vim25
16 files changed, 260 insertions, 154 deletions
diff --git a/runtime/doc/channel.txt b/runtime/doc/channel.txt
index aa31816fc..0f329648a 100644
--- a/runtime/doc/channel.txt
+++ b/runtime/doc/channel.txt
@@ -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.
diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt
index abc022d39..8fc0d1ef0 100644
--- a/runtime/doc/eval.txt
+++ b/runtime/doc/eval.txt
@@ -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}
diff --git a/runtime/doc/help.txt b/runtime/doc/help.txt
index 23ad1dc9a..968636379 100644
--- a/runtime/doc/help.txt
+++ b/runtime/doc/help.txt
@@ -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
diff --git a/runtime/doc/index.txt b/runtime/doc/index.txt
index d23edd019..fe4184aea 100644
--- a/runtime/doc/index.txt
+++ b/runtime/doc/index.txt
@@ -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
diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt
index 2378aa9c3..09518c057 100644
--- a/runtime/doc/options.txt
+++ b/runtime/doc/options.txt
@@ -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|.
diff --git a/runtime/doc/quickref.txt b/runtime/doc/quickref.txt
index 8450cdd89..8d415ae82 100644
--- a/runtime/doc/quickref.txt
+++ b/runtime/doc/quickref.txt
@@ -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
diff --git a/runtime/doc/repeat.txt b/runtime/doc/repeat.txt
index 1ea72536f..db1ec9bad 100644
--- a/runtime/doc/repeat.txt
+++ b/runtime/doc/repeat.txt
@@ -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]
diff --git a/runtime/doc/syntax.txt b/runtime/doc/syntax.txt
index 45d4a08c4..59caa1ad7 100644
--- a/runtime/doc/syntax.txt
+++ b/runtime/doc/syntax.txt
@@ -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*
diff --git a/runtime/doc/tags b/runtime/doc/tags
index af27b7886..e28ee7181 100644
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -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*
diff --git a/runtime/doc/todo.txt b/runtime/doc/todo.txt
index aece38c27..f8f9104d8 100644
--- a/runtime/doc/todo.txt
+++ b/runtime/doc/todo.txt
@@ -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
index 000000000..216fdde16
--- /dev/null
+++ b/runtime/ftplugin/eiffel.vim
@@ -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
diff --git a/runtime/indent/sh.vim b/runtime/indent/sh.vim
index 2d603b0af..d05bb3770 100644
--- a/runtime/indent/sh.vim
+++ b/runtime/indent/sh.vim
@@ -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
diff --git a/runtime/syntax/sh.vim b/runtime/syntax/sh.vim
index 15a00eb51..3fc236f03 100644
--- a/runtime/syntax/sh.vim
+++ b/runtime/syntax/sh.vim
@@ -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)
diff --git a/runtime/syntax/tex.vim b/runtime/syntax/tex.vim
index 40013b5b9..cef28d65e 100644
--- a/runtime/syntax/tex.vim
+++ b/runtime/syntax/tex.vim
@@ -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}
diff --git a/runtime/syntax/vim.vim b/runtime/syntax/vim.vim
index 9928051c2..0206a61e7 100644
--- a/runtime/syntax/vim.vim
+++ b/runtime/syntax/vim.vim
@@ -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
diff --git a/runtime/syntax/zsh.vim b/runtime/syntax/zsh.vim
index 25d4cd493..0d385a35d 100644
--- a/runtime/syntax/zsh.vim
+++ b/runtime/syntax/zsh.vim
@@ -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=+\\`+