-*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
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
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.
-*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
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}
< 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}
-*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
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.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
|: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
-*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
'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)
'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)
*'packpath'* *'pp'*
'packpath' 'pp' string (default: see 'runtimepath')
{not in Vi}
- {not available without the |+packages| feature}
Directories used to find packages. See |packages|.
-*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
'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
-*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
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]
-*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
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*
: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*
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*
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()*
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*
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*
-*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
-------------------- 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,
- 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.
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
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)
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
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
--- /dev/null
+" 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
" 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
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
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
" 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)
" 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
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
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
" \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
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
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
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
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*}"'
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*}"'
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
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
" \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=[
" 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
" 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:
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
" 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
" 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
" 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' , 'ℵ'],
" \ ['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]
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
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'
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
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}
" 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
" 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>
" 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
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
" 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
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
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
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
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
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
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
" 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
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
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 '||\|&&\|;\|&!\='
\ @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=+\\`+