aboutsummaryrefslogtreecommitdiff
path: root/runtime
diff options
context:
space:
mode:
Diffstat (limited to 'runtime')
-rw-r--r--runtime/autoload/health/provider.vim97
-rw-r--r--runtime/autoload/remote/host.vim9
-rw-r--r--runtime/compiler/gcc.vim2
-rw-r--r--runtime/doc/deprecated.txt1
-rw-r--r--runtime/doc/eval.txt53
-rw-r--r--runtime/doc/vim_diff.txt3
-rw-r--r--runtime/indent/html.vim12
-rw-r--r--runtime/optwin.vim10
-rw-r--r--runtime/synmenu.vim1
-rw-r--r--runtime/syntax/avra.vim73
-rw-r--r--runtime/syntax/desktop.vim7
-rw-r--r--runtime/syntax/diff.vim8
-rw-r--r--runtime/syntax/help.vim3
-rw-r--r--runtime/syntax/sshconfig.vim7
-rw-r--r--runtime/syntax/vim.vim198
-rw-r--r--runtime/vimrc_example.vim6
16 files changed, 354 insertions, 136 deletions
diff --git a/runtime/autoload/health/provider.vim b/runtime/autoload/health/provider.vim
index 8fa281e7e3..d4b2f07a17 100644
--- a/runtime/autoload/health/provider.vim
+++ b/runtime/autoload/health/provider.vim
@@ -1,13 +1,5 @@
-let s:bad_responses = [
- \ 'unable to parse python response',
- \ 'unable to parse',
- \ 'unable to get pypi response',
- \ 'unable to get neovim executable',
- \ 'unable to find neovim version'
- \ ]
-
function! s:is_bad_response(s) abort
- return index(s:bad_responses, a:s) >= 0
+ return a:s =~? '\v(^unable)|(^error)'
endfunction
function! s:trim(s) abort
@@ -32,44 +24,41 @@ endfunction
" Fetch the contents of a URL.
function! s:download(url) abort
- let content = ''
if executable('curl')
- let content = system(['curl', '-sL', "'", a:url, "'"])
- endif
-
- if empty(content) && executable('python')
+ let rv = system(['curl', '-sL', a:url])
+ return v:shell_error ? 'curl error: '.v:shell_error : rv
+ elseif executable('python')
let script = "
\try:\n
\ from urllib.request import urlopen\n
\except ImportError:\n
\ from urllib2 import urlopen\n
\\n
- \try:\n
- \ response = urlopen('".a:url."')\n
- \ print(response.read().decode('utf8'))\n
- \except Exception:\n
- \ pass\n
+ \response = urlopen('".a:url."')\n
+ \print(response.read().decode('utf8'))\n
\"
- let content = system(['python', '-c', "'", script, "'", '2>/dev/null'])
+ let rv = system(['python', '-c', script])
+ return empty(rv) && v:shell_error
+ \ ? 'python urllib.request error: '.v:shell_error
+ \ : rv
endif
-
- return content
+ return 'missing `curl` and `python`, cannot make pypi request'
endfunction
-" Get the latest Neovim Python client version from PyPI. Result is cached.
+" Get the latest Neovim Python client version from PyPI.
function! s:latest_pypi_version() abort
- if exists('s:pypi_version')
- return s:pypi_version
- endif
-
- let s:pypi_version = 'unable to get pypi response'
- let pypi_info = s:download('https://pypi.python.org/pypi/neovim/json')
- if !empty(pypi_info)
- let pypi_data = json_decode(pypi_info)
- let s:pypi_version = get(get(pypi_data, 'info', {}), 'version', 'unable to parse')
- return s:pypi_version
+ let pypi_version = 'unable to get pypi response'
+ let pypi_response = s:download('https://pypi.python.org/pypi/neovim/json')
+ if !empty(pypi_response)
+ try
+ let pypi_data = json_decode(pypi_response)
+ catch /E474/
+ return 'error: '.pypi_response
+ endtry
+ let pypi_version = get(get(pypi_data, 'info', {}), 'version', 'unable to parse')
endif
+ return pypi_version
endfunction
" Get version information using the specified interpreter. The interpreter is
@@ -97,29 +86,34 @@ function! s:version_info(python) abort
let nvim_path = s:trim(system([
\ a:python,
\ '-c',
- \ 'import neovim; print(neovim.__file__)',
- \ '2>/dev/null']))
-
- let nvim_path = s:trim(system([
- \ 'python3',
- \ '-c',
- \ 'import neovim; print(neovim.__file__)'
- \ ]))
- " \ '2>/dev/null']))
+ \ 'import neovim; print(neovim.__file__)']))
+ let nvim_path = v:shell_error ? '' : nvim_path
if empty(nvim_path)
- return [python_version, 'unable to find neovim executable', pypi_version, 'unable to get neovim executable']
+ return [python_version, 'unable to find nvim executable', pypi_version, 'unable to get nvim executable']
endif
- let nvim_version = 'unable to find neovim version'
+ " Assuming that multiple versions of a package are installed, sort them
+ " numerically in descending order.
+ function! s:compare(metapath1, metapath2)
+ let a = matchstr(fnamemodify(a:metapath1, ':p:h:t'), '[0-9.]\+')
+ let b = matchstr(fnamemodify(a:metapath2, ':p:h:t'), '[0-9.]\+')
+ return a == b ? 0 : a > b ? 1 : -1
+ endfunction
+
+ let nvim_version = 'unable to find nvim version'
let base = fnamemodify(nvim_path, ':h')
- for meta in glob(base.'-*/METADATA', 1, 1) + glob(base.'-*/PKG-INFO', 1, 1)
- for meta_line in readfile(meta)
+ let metas = glob(base.'-*/METADATA', 1, 1) + glob(base.'-*/PKG-INFO', 1, 1)
+ let metas = sort(metas, 's:compare')
+
+ if !empty(metas)
+ for meta_line in readfile(metas[0])
if meta_line =~# '^Version:'
let nvim_version = matchstr(meta_line, '^Version: \zs\S\+')
+ break
endif
endfor
- endfor
+ endif
let version_status = 'unknown'
if !s:is_bad_response(nvim_version) && !s:is_bad_response(pypi_version)
@@ -148,7 +142,7 @@ endfunction
function! s:check_python(version) abort
call health#report_start('Python ' . a:version . ' provider')
- let python_bin_name = 'python'.(a:version == 2 ? '2' : '3')
+ let python_bin_name = 'python'.(a:version == 2 ? '' : '3')
let pyenv = resolve(exepath('pyenv'))
let pyenv_root = exists('$PYENV_ROOT') ? resolve($PYENV_ROOT) : 'n'
let venv = exists('$VIRTUAL_ENV') ? resolve($VIRTUAL_ENV) : ''
@@ -329,12 +323,13 @@ function! s:check_python(version) abort
endif
if s:is_bad_response(latest)
- call health#report_warn('Unable to fetch latest Neovim Python client version.')
+ call health#report_warn('Unable to contact PyPI.')
+ call health#report_error('HTTP request failed: '.latest)
endif
if s:is_bad_response(status)
- call health#report_warn('Latest Neovim Python client versions: ('.latest.')')
- else
+ call health#report_warn('Latest Neovim Python client version: ('.latest.')')
+ elseif !s:is_bad_response(latest)
call health#report_ok('Latest Neovim Python client is installed: ('.status.')')
endif
endif
diff --git a/runtime/autoload/remote/host.vim b/runtime/autoload/remote/host.vim
index 110f80297a..1f30b91ab8 100644
--- a/runtime/autoload/remote/host.vim
+++ b/runtime/autoload/remote/host.vim
@@ -191,6 +191,7 @@ function! s:RegistrationCommands(host) abort
let pattern = s:plugin_patterns[a:host]
let paths = globpath(&rtp, 'rplugin/'.a:host.'/'.pattern, 0, 1)
let paths = map(paths, 'tr(v:val,"\\","/")') " Normalize slashes #4795
+ let paths = uniq(sort(paths))
if empty(paths)
return []
endif
@@ -260,11 +261,9 @@ endfunction
function! remote#host#LoadErrorForHost(host, log) abort
return 'Failed to load '. a:host . ' host. '.
- \ 'You can try to see what happened '.
- \ 'by starting Neovim with the environment variable '.
- \ a:log . ' set to a file and opening the generated '.
- \ 'log file. Also, the host stderr is available '.
- \ 'in messages.'
+ \ 'You can try to see what happened by starting nvim with '.
+ \ a:log . ' set and opening the generated log file.'.
+ \ ' Also, the host stderr is available in messages.'
endfunction
diff --git a/runtime/compiler/gcc.vim b/runtime/compiler/gcc.vim
index aee31d92c2..19ea2edc12 100644
--- a/runtime/compiler/gcc.vim
+++ b/runtime/compiler/gcc.vim
@@ -2,6 +2,7 @@
" Compiler: GNU C Compiler
" Maintainer: Nikolai Weibull <now@bitwi.se>
" Latest Revision: 2010-10-14
+" added line suggested by Anton Lindqvist 2016 Mar 31
if exists("current_compiler")
finish
@@ -24,6 +25,7 @@ CompilerSet errorformat=
\%f:%l:\ %trror:\ %m,
\%f:%l:\ %tarning:\ %m,
\%f:%l:\ %m,
+ \%f:\\(%*[^\\)]\\):\ %m,
\\"%f\"\\,\ line\ %l%*\\D%c%*[^\ ]\ %m,
\%D%*\\a[%*\\d]:\ Entering\ directory\ [`']%f',
\%X%*\\a[%*\\d]:\ Leaving\ directory\ [`']%f',
diff --git a/runtime/doc/deprecated.txt b/runtime/doc/deprecated.txt
index d108aca62f..2b69929cfe 100644
--- a/runtime/doc/deprecated.txt
+++ b/runtime/doc/deprecated.txt
@@ -41,3 +41,4 @@ Options ~
*'vi'*
*'viminfo'* Deprecated alias to 'shada' option.
+ vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt
index df5713c63d..dedbe49605 100644
--- a/runtime/doc/eval.txt
+++ b/runtime/doc/eval.txt
@@ -1813,6 +1813,7 @@ buflisted({expr}) Number TRUE if buffer {expr} is listed
bufloaded({expr}) Number TRUE if buffer {expr} is loaded
bufname({expr}) String Name of the buffer {expr}
bufnr({expr} [, {create}]) Number Number of the buffer {expr}
+bufwinid({expr}) Number window ID of buffer {expr}
bufwinnr({expr}) Number window number of buffer {expr}
byte2line({byte}) Number line number at byte count {byte}
byteidx({expr}, {nr}) Number byte index of {nr}'th char in {expr}
@@ -1897,7 +1898,8 @@ getcmdline() String return the current command-line
getcmdpos() Number return cursor position in command-line
getcmdtype() String return current command-line type
getcmdwintype() String return current command-line window type
-getcompletion({pat}, {type}) List list of cmdline completion matches
+getcompletion({pat}, {type} [, {filtered}])
+ List list of cmdline completion matches
getcurpos() List position of the cursor
getcwd([{winnr} [, {tabnr}]]) String the current working directory
getfontname([{name}]) String name of font being used
@@ -2243,6 +2245,7 @@ arglistid([{winnr} [, {tabnr}]])
With {winnr} only use this window in the current tab page.
With {winnr} and {tabnr} use the window in the specified tab
page.
+ {winnr} can be the window number or the window ID.
*argv()*
argv([{nr}]) The result is the {nr}th file in the argument list of the
@@ -2468,6 +2471,16 @@ bufnr({expr} [, {create}])
number necessarily exist, because ":bwipeout" may have removed
them. Use bufexists() to test for the existence of a buffer.
+bufwinid({expr}) *bufwinid()*
+ The result is a Number, which is the window ID of the first
+ window associated with buffer {expr}. For the use of {expr},
+ see |bufname()| above. If buffer {expr} doesn't exist or
+ there is no such window, -1 is returned. Example: >
+
+ echo "A window containing buffer 1 is " . (bufwinid(1))
+<
+ Only deals with the current tab page.
+
bufwinnr({expr}) *bufwinnr()*
The result is a Number, which is the number of the first
window associated with buffer {expr}. For the use of {expr},
@@ -3651,7 +3664,7 @@ getcmdwintype() *getcmdwintype()*
values are the same as |getcmdtype()|. Returns an empty string
when not in the command-line window.
-getcompletion({pat}, {type}) *getcompletion()*
+getcompletion({pat}, {type} [, {filtered}]) *getcompletion()*
Return a list of command-line completion matches. {type}
specifies what for. The following completion types are
supported:
@@ -3691,6 +3704,10 @@ getcompletion({pat}, {type}) *getcompletion()*
Otherwise only items matching {pat} are returned. See
|wildcards| for the use of special characters in {pat}.
+ If the optional {filtered} flag is set to 1, then 'wildignore'
+ is applied to filter the results. Otherwise all the matches
+ are returned. The 'wildignorecase' option always applies.
+
If there are no matches, an empty list is returned. An
invalid value for {type} produces an error.
@@ -3716,6 +3733,7 @@ getcwd([{winnr}[, {tabnr}]]) *getcwd()*
getcwd(0)
getcwd(0, 0)
< If {winnr} is -1 it is ignored, only the tab is resolved.
+ {winnr} can be the window number or the window ID.
getfsize({fname}) *getfsize()*
@@ -3810,7 +3828,9 @@ getline({lnum} [, {end}])
getloclist({nr}) *getloclist()*
Returns a list with all the entries in the location list for
- window {nr}. When {nr} is zero the current window is used.
+ window {nr}. {nr} can be the window number or the window ID.
+ When {nr} is zero the current window is used.
+
For a location list window, the displayed location list is
returned. For an invalid window number {nr}, an empty list is
returned. Otherwise, same as |getqflist()|.
@@ -3938,6 +3958,7 @@ gettabwinvar({tabnr}, {winnr}, {varname} [, {def}]) *gettabwinvar()*
Note that {varname} must be the name without "w:".
Tabs are numbered starting with one. For the current tabpage
use |getwinvar()|.
+ {winnr} can be the window number or the window ID.
When {winnr} is zero the current window is used.
This also works for a global option, buffer-local option and
window-local option, but it doesn't work for a global variable
@@ -4065,7 +4086,8 @@ haslocaldir([{winnr}[, {tabnr}]]) *haslocaldir()*
haslocaldir()
haslocaldir(0)
haslocaldir(0, 0)
-< If {winnr} is -1 it is ignored, only the tab is resolved.
+< {winnr} can be the window number or the window ID.
+ If {winnr} is -1 it is ignored, only the tab is resolved.
hasmapto({what} [, {mode} [, {abbr}]]) *hasmapto()*
The result is a Number, which is 1 if there is a mapping that
@@ -6054,11 +6076,13 @@ setline({lnum}, {text}) *setline()*
setloclist({nr}, {list} [, {action}[, {title}]]) *setloclist()*
Create or replace or add to the location list for window {nr}.
- When {nr} is zero the current window is used. For a location
- list window, the displayed location list is modified. For an
- invalid window number {nr}, -1 is returned. If {title} is
- given, it will be used to set |w:quickfix_title| after opening
- the location window.
+ {nr} can be the window number or the window ID.
+ When {nr} is zero the current window is used.
+
+ For a location list window, the displayed location list is
+ modified. For an invalid window number {nr}, -1 is returned. If
+ {title} is given, it will be used to set |w:quickfix_title|
+ after opening the location window.
Otherwise, same as |setqflist()|.
Also see |location-list|.
@@ -6222,6 +6246,7 @@ settabwinvar({tabnr}, {winnr}, {varname}, {val}) *settabwinvar()*
{val}.
Tabs are numbered starting with one. For the current tabpage
use |setwinvar()|.
+ {winnr} can be the window number or the window ID.
When {winnr} is zero the current window is used.
This also works for a global or local buffer option, but it
doesn't work for a global or local buffer variable.
@@ -7250,9 +7275,11 @@ win_id2win({expr}) *win_id2win()*
*winbufnr()*
winbufnr({nr}) The result is a Number, which is the number of the buffer
- associated with window {nr}. When {nr} is zero, the number of
- the buffer in the current window is returned. When window
- {nr} doesn't exist, -1 is returned.
+ associated with window {nr}. {nr} can be the window number or
+ the window ID.
+ When {nr} is zero, the number of the buffer in the current
+ window is returned.
+ When window {nr} doesn't exist, -1 is returned.
Example: >
:echo "The file in the current window is " . bufname(winbufnr(0))
<
@@ -7263,6 +7290,7 @@ wincol() The result is a Number, which is the virtual column of the
winheight({nr}) *winheight()*
The result is a Number, which is the height of window {nr}.
+ {nr} can be the window number or the window ID.
When {nr} is zero, the height of the current window is
returned. When window {nr} doesn't exist, -1 is returned.
An existing window always has a height of zero or more.
@@ -7342,6 +7370,7 @@ winsaveview() Returns a |Dictionary| that contains information to restore
winwidth({nr}) *winwidth()*
The result is a Number, which is the width of window {nr}.
+ {nr} can be the window number or the window ID.
When {nr} is zero, the width of the current window is
returned. When window {nr} doesn't exist, -1 is returned.
An existing window always has a width of zero or more.
diff --git a/runtime/doc/vim_diff.txt b/runtime/doc/vim_diff.txt
index c505652b1b..249208911b 100644
--- a/runtime/doc/vim_diff.txt
+++ b/runtime/doc/vim_diff.txt
@@ -36,7 +36,9 @@ these differences.
- 'autoindent' is set by default
- 'autoread' is set by default
- 'backspace' defaults to "indent,eol,start"
+- 'backupdir' defaults to .,~/.local/share/nvim/backup (|xdg|)
- 'complete' doesn't include "i"
+- 'directory' defaults to ~/.local/share/nvim/swap// (|xdg|), auto-created
- 'display' defaults to "lastline"
- 'encoding' defaults to "utf-8"
- 'formatoptions' defaults to "tcqj"
@@ -54,6 +56,7 @@ these differences.
- 'tabpagemax' defaults to 50
- 'tags' defaults to "./tags;,tags"
- 'ttyfast' is always set
+- 'undodir' defaults to ~/.local/share/nvim/undo (|xdg|), auto-created
- 'viminfo' includes "!"
- 'wildmenu' is set by default
diff --git a/runtime/indent/html.vim b/runtime/indent/html.vim
index 8aaf82e21f..828bc3120b 100644
--- a/runtime/indent/html.vim
+++ b/runtime/indent/html.vim
@@ -2,7 +2,7 @@
" Header: "{{{
" Maintainer: Bram Moolenaar
" Original Author: Andy Wokula <anwoku@yahoo.de>
-" Last Change: 2015 Sep 25
+" Last Change: 2016 Mar 30
" Version: 1.0
" Description: HTML indent script with cached state for faster indenting on a
" range of lines.
@@ -240,13 +240,13 @@ call s:AddITags(s:indent_tags, [
\ 'sup', 'table', 'textarea', 'title', 'tt', 'u', 'ul', 'var', 'th', 'td',
\ 'tr', 'tbody', 'tfoot', 'thead'])
-" Tags added 2011 Sep 09 (especially HTML5 tags):
+" New HTML5 elements:
call s:AddITags(s:indent_tags, [
\ 'area', 'article', 'aside', 'audio', 'bdi', 'canvas',
- \ 'command', 'datalist', 'details', 'embed', 'figure', 'footer',
- \ 'header', 'group', 'keygen', 'mark', 'math', 'meter', 'nav', 'output',
- \ 'progress', 'ruby', 'section', 'svg', 'texture', 'time', 'video',
- \ 'wbr', 'text'])
+ \ 'command', 'data', 'datalist', 'details', 'embed', 'figcaption',
+ \ 'figure', 'footer', 'header', 'keygen', 'mark', 'meter', 'nav', 'output',
+ \ 'progress', 'rp', 'rt', 'ruby', 'section', 'source', 'summary', 'svg',
+ \ 'time', 'track', 'video', 'wbr'])
" Tags added for web components:
call s:AddITags(s:indent_tags, [
diff --git a/runtime/optwin.vim b/runtime/optwin.vim
index 890c183a5a..3d585267d7 100644
--- a/runtime/optwin.vim
+++ b/runtime/optwin.vim
@@ -1,7 +1,7 @@
" These commands create the option window.
"
" Maintainer: Bram Moolenaar <Bram@vim.org>
-" Last Change: 2016 Mar 19
+" Last Change: 2016 Apr 21
" If there already is an option window, jump to that one.
if bufwinnr("option-window") > 0
@@ -710,6 +710,10 @@ call <SID>Header("editing text")
call append("$", "undolevels\tmaximum number of changes that can be undone")
call append("$", "\t(global or local to buffer)")
call append("$", " \tset ul=" . &ul)
+call append("$", "undofile\tautomatically save and restore undo history")
+call <SID>BinOptionG("udf", &udf)
+call append("$", "undodir\tlist of directories for undo files")
+call <SID>OptionG("udir", &udir)
call append("$", "undoreload\tmaximum number lines to save for undo on a buffer reload")
call append("$", " \tset ur=" . &ur)
call append("$", "modified\tchanges have been made and not written to a file")
@@ -1032,10 +1036,6 @@ if has("vertsplit")
call append("$", "cmdwinheight\theight of the command-line window")
call <SID>OptionG("cwh", &cwh)
endif
-call append("$", "undofile\tautomatically save and restore undo history")
-call <SID>BinOptionG("udf", &udf)
-call append("$", "undodir\tlist of directories for undo files")
-call <SID>OptionG("udir", &udir)
call <SID>Header("executing external commands")
diff --git a/runtime/synmenu.vim b/runtime/synmenu.vim
index 76f60131f2..01dad3c7f2 100644
--- a/runtime/synmenu.vim
+++ b/runtime/synmenu.vim
@@ -61,6 +61,7 @@ an 50.10.320 &Syntax.AB.Ascii\ Doc :cal SetSyn("asciidoc")<CR>
an 50.10.330 &Syntax.AB.ASP\ with\ VBScript :cal SetSyn("aspvbs")<CR>
an 50.10.340 &Syntax.AB.ASP\ with\ Perl :cal SetSyn("aspperl")<CR>
an 50.10.350 &Syntax.AB.Assembly.680x0 :cal SetSyn("asm68k")<CR>
+an 50.10.355 &Syntax.AB.Assembly.AVR :cal SetSyn("avra")<CR>
an 50.10.360 &Syntax.AB.Assembly.Flat :cal SetSyn("fasm")<CR>
an 50.10.370 &Syntax.AB.Assembly.GNU :cal SetSyn("asm")<CR>
an 50.10.380 &Syntax.AB.Assembly.GNU\ H-8300 :cal SetSyn("asmh8300")<CR>
diff --git a/runtime/syntax/avra.vim b/runtime/syntax/avra.vim
new file mode 100644
index 0000000000..ebf0aaff11
--- /dev/null
+++ b/runtime/syntax/avra.vim
@@ -0,0 +1,73 @@
+" Vim syntax file
+" Language: AVR Assembler (AVRA)
+" AVRA Home: http://avra.sourceforge.net/index.html
+" AVRA Version: 1.3.0
+" Maintainer: Marius Ghita <mhitza@gmail.com>
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+setlocal iskeyword=a-z,A-Z,48-57,.,_
+" 'isident' is a global option, better not set it
+" setlocal isident=a-z,A-Z,48-57,.,_
+syn case ignore
+
+syn keyword avraRegister r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 r14
+syn keyword avraRegister r15 r16 r17 r18 r19 r20 r21 r22 r23 r24 r25 r26 r27
+syn keyword avraRegister r28 r29 r30 r31
+
+syn keyword avraInstr add adc adiw sub subi sbc sbci sbiw and andi or ori eor
+syn keyword avraInstr com neg sbr cbr inc dec tst clr ser mul muls mulsu fmul
+syn keyword avraInstr fmuls fmulsu des rjmp ijmp eijmp jmp rcall icall eicall
+syn keyword avraInstr call ret reti cpse cp cpc cpi sbrc sbrs sbic sbis brbs
+syn keyword avraInstr brbc breq brne brcs brcc brsh brlo brmi brpl brge brlt
+syn keyword avraInstr brhs brhc brts brtc brvs brvc brie brid mov movw ldi lds
+syn keyword avraInstr ld ldd sts st std lpm elpm spm in out push pop xch las
+syn keyword avraInstr lac lat lsl lsr rol ror asr swap bset bclr sbi cbi bst bld
+syn keyword avraInstr sec clc sen cln sez clz sei cli ses cls sev clv set clt
+syn keyword avraInstr seh clh break nop sleep wdr
+
+syn keyword avraDirective .byte .cseg .db .def .device .dseg .dw .endmacro .equ
+syn keyword avraDirective .eseg .exit .include .list .listmac .macro .nolist
+syn keyword avraDirective .org .set .define .undef .ifdef .ifndef .if .else
+syn keyword avraDirective .elif .elseif .warning
+
+syn keyword avraOperator low high byte2 byte3 byte4 lwrd hwrd page exp2 log2
+
+syn match avraNumericOperator "[-*/+]"
+syn match avraUnaryOperator "!"
+syn match avraBinaryOperator "<<\|>>\|<\|<=\|>\|>=\|==\|!="
+syn match avraBitwiseOperator "[~&^|]\|&&\|||"
+
+syn match avraBinaryNumber "\<0[bB][0-1]*\>"
+syn match avraHexNumber "\<0[xX][0-9a-fA-F]\+\>"
+syn match avraDecNumber "\<\(0\|[1-9]\d*\)\>"
+
+syn region avraComment start=";" end="$"
+syn region avraString start="\"" end="\"\|$"
+
+syn match avraLabel "^\s*[^; \t]\+:"
+
+hi def link avraBinaryNumber avraNumber
+hi def link avraHexNumber avraNumber
+hi def link avraDecNumber avraNumber
+
+hi def link avraNumericOperator avraOperator
+hi def link avraUnaryOperator avraOperator
+hi def link avraBinaryOperator avraOperator
+hi def link avraBitwiseOperator avraOperator
+
+
+hi def link avraOperator operator
+hi def link avraComment comment
+hi def link avraDirective preproc
+hi def link avraRegister type
+hi def link avraNumber constant
+hi def link avraString String
+hi def link avraInstr keyword
+hi def link avraLabel label
+
+let b:current_syntax = "avra"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/desktop.vim b/runtime/syntax/desktop.vim
index 5b71e51192..27dac5c8ee 100644
--- a/runtime/syntax/desktop.vim
+++ b/runtime/syntax/desktop.vim
@@ -3,7 +3,8 @@
" according to freedesktop.org specification 0.9.4
" http://pdx.freedesktop.org/Standards/desktop-entry-spec/desktop-entry-spec-0.9.4.html
" Maintainer: Mikolaj Machowski ( mikmach AT wp DOT pl )
-" Last Change: 2004 May 16
+" Last Change: 2016 Apr 02
+" (added "Keywords")
" Version Info: desktop.vim 0.9.4-1.2
" For version 5.x: Clear all syntax items
@@ -53,8 +54,8 @@ syn keyword dtBooleanKey StartupNotify ReadOnly Terminal Hidden NoDisplay nextgr
syn keyword dtBooleanValue true false containedin=dtBoolean contained
" String
-syn match dtString /^\s*\<\(Encoding\|Icon\|Path\|Actions\|FSType\|MountPoint\|UnmountIcon\|URL\|Categories\|OnlyShowIn\|NotShowIn\|StartupWMClass\|FilePattern\|MimeType\)\>.*/ contains=dtStringKey,dtDelim transparent
-syn keyword dtStringKey Type Encoding TryExec Exec Path Actions FSType MountPoint URL Categories OnlyShowIn NotShowIn StartupWMClass FilePattern MimeType nextgroup=dtDelim containedin=dtString contained
+syn match dtString /^\s*\<\(Encoding\|Icon\|Path\|Actions\|FSType\|MountPoint\|UnmountIcon\|URL\|Keywords\|Categories\|OnlyShowIn\|NotShowIn\|StartupWMClass\|FilePattern\|MimeType\)\>.*/ contains=dtStringKey,dtDelim transparent
+syn keyword dtStringKey Type Encoding TryExec Exec Path Actions FSType MountPoint URL Keywords Categories OnlyShowIn NotShowIn StartupWMClass FilePattern MimeType nextgroup=dtDelim containedin=dtString contained
" Exec
syn match dtExec /^\s*\<\(Exec\|TryExec\|SwallowExec\)\>.*/ contains=dtExecKey,dtDelim,dtExecParam transparent
diff --git a/runtime/syntax/diff.vim b/runtime/syntax/diff.vim
index 885feaebdd..b656cd97a6 100644
--- a/runtime/syntax/diff.vim
+++ b/runtime/syntax/diff.vim
@@ -2,7 +2,7 @@
" Language: Diff (context or unified)
" Maintainer: Bram Moolenaar <Bram@vim.org>
" Translations by Jakson Alves de Aquino.
-" Last Change: 2015 Feb 03
+" Last Change: 2016 Apr 02
" Quit when a (custom) syntax file was already loaded
if exists("b:current_syntax")
@@ -342,7 +342,7 @@ syn match diffLine "^\<\d\+\>.*"
syn match diffLine "^\*\*\*\*.*"
syn match diffLine "^---$"
-"Some versions of diff have lines like "#c#" and "#d#" (where # is a number)
+" Some versions of diff have lines like "#c#" and "#d#" (where # is a number)
syn match diffLine "^\d\+\(,\d\+\)\=[cda]\d\+\>.*"
syn match diffFile "^diff\>.*"
@@ -352,12 +352,16 @@ syn match diffFile "^==== .*"
syn match diffOldFile "^\*\*\* .*"
syn match diffNewFile "^--- .*"
+" Used by git
+syn match diffIndexLine "^index \x\x\x\x.*"
+
syn match diffComment "^#.*"
" Define the default highlighting.
" Only used when an item doesn't have highlighting yet
hi def link diffOldFile diffFile
hi def link diffNewFile diffFile
+hi def link diffIndexLine PreProc
hi def link diffFile Type
hi def link diffOnly Constant
hi def link diffIdentical Constant
diff --git a/runtime/syntax/help.vim b/runtime/syntax/help.vim
index d133c6a804..b3c7f2a63e 100644
--- a/runtime/syntax/help.vim
+++ b/runtime/syntax/help.vim
@@ -1,7 +1,7 @@
" Vim syntax file
" Language: Vim help file
" Maintainer: Bram Moolenaar (Bram@vim.org)
-" Last Change: 2014 Feb 12
+" Last Change: 2016 Apr 01
" Quit when a (custom) syntax file was already loaded
if exists("b:current_syntax")
@@ -41,6 +41,7 @@ syn match helpVim "NVIM REFERENCE.*"
syn match helpOption "'[a-z]\{2,\}'"
syn match helpOption "'t_..'"
syn match helpCommand "`[^` \t]\+`"hs=s+1,he=e-1 contains=helpBacktick
+syn match helpCommand "\(^\|[^a-z"[]\)\zs`[^`]\+`\ze\([^a-z\t."']\|$\)"hs=s+1,he=e-1 contains=helpBacktick
syn match helpHeader "\s*\zs.\{-}\ze\s\=\~$" nextgroup=helpIgnore
syn match helpGraphic ".* \ze`$" nextgroup=helpIgnore
if has("conceal")
diff --git a/runtime/syntax/sshconfig.vim b/runtime/syntax/sshconfig.vim
index 44b3c67a96..bd9f0a3c28 100644
--- a/runtime/syntax/sshconfig.vim
+++ b/runtime/syntax/sshconfig.vim
@@ -4,8 +4,8 @@
" Maintainer: Dominik Fischer <d dot f dot fischer at web dot de>
" Contributor: Leonard Ehrenfried <leonard.ehrenfried@web.de>
" Contributor: Karsten Hopp <karsten@redhat.com>
-" Last Change: 2016 Mar 1
-" SSH Version: 7.2
+" Last Change: 2016 Apr 7
+" SSH Version: 7.2p2
"
" Setup
@@ -36,7 +36,7 @@ syn keyword sshconfigTodo TODO FIXME NOTE contained
" Constants
-syn keyword sshconfigYesNo yes no ask
+syn keyword sshconfigYesNo yes no ask confirm
syn keyword sshconfigYesNo any auto
syn keyword sshconfigYesNo force autoask none
@@ -139,6 +139,7 @@ syn keyword sshconfigHostSect Host
syn keyword sshconfigMatch canonical exec host originalhost user localuser all
syn keyword sshconfigKeyword AddressFamily
+syn keyword sshconfigKeyword AddKeysToAgent
syn keyword sshconfigKeyword BatchMode
syn keyword sshconfigKeyword BindAddress
syn keyword sshconfigKeyword CanonicalDomains
diff --git a/runtime/syntax/vim.vim b/runtime/syntax/vim.vim
index c855267137..d056e5b7bf 100644
--- a/runtime/syntax/vim.vim
+++ b/runtime/syntax/vim.vim
@@ -1,8 +1,8 @@
" Vim syntax file
" Language: Vim 7.4 script
" Maintainer: Charles E. Campbell <NdrOchipS@PcampbellAfamily.Mbiz>
-" Last Change: Apr 02, 2015
-" Version: 7.4-33
+" Last Change: March 29, 2016
+" Version: 7.4-45
" Automatically generated keyword lists: {{{1
" Quit when a syntax file was already loaded {{{2
@@ -58,6 +58,59 @@ syn keyword nvimHLGroup contained EndOfBuffer TermCursor TermCursorNC QuickFixLi
syn case match
" Special Vim Highlighting (not automatic) {{{1
+" Set up folding commands
+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'
+ com! -nargs=* VimFoldf <args> fold
+ else
+ com! -nargs=* VimFoldf <args>
+ endif
+ if g:vimsyn_folding =~# 'l'
+ com! -nargs=* VimFoldl <args> fold
+ else
+ com! -nargs=* VimFoldl <args>
+ endif
+ if g:vimsyn_folding =~# 'm'
+ com! -nargs=* VimFoldm <args> fold
+ else
+ com! -nargs=* VimFoldm <args>
+ endif
+ if g:vimsyn_folding =~# 'p'
+ com! -nargs=* VimFoldp <args> fold
+ else
+ com! -nargs=* VimFoldp <args>
+ endif
+ if g:vimsyn_folding =~# 'P'
+ com! -nargs=* VimFoldP <args> fold
+ else
+ com! -nargs=* VimFoldP <args>
+ endif
+ if g:vimsyn_folding =~# 'r'
+ com! -nargs=* VimFoldr <args> fold
+ else
+ com! -nargs=* VimFoldr <args>
+ endif
+ if g:vimsyn_folding =~# 't'
+ com! -nargs=* VimFoldt <args> fold
+ else
+ com! -nargs=* VimFoldt <args>
+ endif
+else
+ com! -nargs=* VimFolda <args>
+ com! -nargs=* VimFoldf <args>
+ com! -nargs=* VimFoldl <args>
+ com! -nargs=* VimFoldm <args>
+ com! -nargs=* VimFoldp <args>
+ com! -nargs=* VimFoldP <args>
+ com! -nargs=* VimFoldr <args>
+ com! -nargs=* VimFoldt <args>
+endif
+
" commands not picked up by the generator (due to non-standard format)
syn keyword vimCommand contained py3
@@ -80,8 +133,8 @@ syn match vimNumber "\<0[xX]\x\+"
syn match vimNumber "\%(^\|[^a-zA-Z]\)\zs#\x\{6}"
" All vimCommands are contained by vimIsCommands. {{{2
-syn match vimCmdSep "[:|]\+" skipwhite nextgroup=vimAddress,vimAutoCmd,vimCommand,vimIsCommand,vimExtCmd,vimFilter,vimLet,vimMap,vimMark,vimSet,vimSyntax,vimUserCmd,vimOnlyCommand
-syn match vimIsCommand "\<\h\w*\>" contains=vimCommand,vimOnlyCommand
+syn match vimCmdSep "[:|]\+" skipwhite nextgroup=vimAddress,vimAutoCmd,vimIsCommand,vimExtCmd,vimFilter,vimLet,vimMap,vimMark,vimSet,vimSyntax,vimUserCmd
+syn match vimIsCommand "\<\h\w*\>" contains=vimCommand
syn match vimVar contained "\<\h[a-zA-Z0-9#_]*\>"
syn match vimVar "\<[bwglsav]:\h[a-zA-Z0-9#_]*\>"
syn match vimFBVar contained "\<[bwglsav]:\h[a-zA-Z0-9#_]*\>"
@@ -113,7 +166,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
@@ -130,7 +183,7 @@ syn cluster vimOperGroup contains=vimEnvvar,vimFunc,vimFuncVar,vimOper,vimOperPa
syn match vimOper "\(==\|!=\|>=\|<=\|=\~\|!\~\|>\|<\|=\)[?#]\{0,2}" skipwhite nextgroup=vimString,vimSpecFile
syn match vimOper "||\|&&\|[-+.]" skipwhite nextgroup=vimString,vimSpecFile
syn region vimOperParen matchgroup=vimParenSep start="(" end=")" contains=@vimOperGroup
-syn region vimOperParen matchgroup=vimSep start="{" end="}" contains=@vimOperGroup nextgroup=vimVar,vimFuncVar
+syn region vimOperParen matchgroup=vimSep start="{" end="}" contains=@vimOperGroup nextgroup=vimVar,vimFuncVar
if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_noopererror")
syn match vimOperError ")"
endif
@@ -141,7 +194,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,nvimUnmap,nvimMap
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
@@ -225,7 +278,7 @@ syn cluster vimSubstList contains=vimPatSep,vimPatRegion,vimPatSepErr,vimSubstTw
syn cluster vimSubstRepList contains=vimSubstSubstr,vimSubstTwoBS,vimNotation
syn cluster vimSubstList add=vimCollection
syn match vimSubst "\(:\+\s*\|^\s*\||\s*\)\<\%(s\%[ubstitute]\|sm\%[agic]\|sno\%[magic]\)[:[:alpha:]]\@!" nextgroup=vimSubstPat
-syn match vimSubst "s\%[ubstitute][:#[:alpha:]]\@!" nextgroup=vimSubstPat contained
+syn match vimSubst "\%(^\|[^\\]\)s\%[ubstitute][:#[:alpha:]]\@!" nextgroup=vimSubstPat contained
syn match vimSubst "/\zss\%[ubstitute]\ze/" nextgroup=vimSubstPat
syn match vimSubst1 contained "s\%[ubstitute]\>" nextgroup=vimSubstPat
syn region vimSubstPat contained matchgroup=vimSubstDelim start="\z([^a-zA-Z( \t[\]&]\)"rs=s+1 skip="\\\\\|\\\z1" end="\z1"re=e-1,me=e-1 contains=@vimSubstList nextgroup=vimSubstRep4 oneline
@@ -267,7 +320,7 @@ syn match vimCmplxRepeat '[^a-zA-Z_/\\()]q[0-9a-zA-Z"]\>'lc=1
syn match vimCmplxRepeat '@[0-9a-z".=@:]\ze\($\|[^a-zA-Z]\>\)'
" Set command and associated set-options (vimOptions) with comment {{{2
-syn region vimSet matchgroup=vimCommand start="\<\%(setl\%[ocal]\|setg\%[lobal]\|se\%[t]\)\>" skip="\%(\\\\\)*\\." end="$" matchgroup=vimNotation end="<[cC][rR]>" keepend oneline contains=vimSetEqual,vimOption,vimErrSetting,vimComment,vimSetString,vimSetMod,vimTermOption,vimOnlyOption
+syn region vimSet matchgroup=vimCommand start="\<\%(setl\%[ocal]\|setg\%[lobal]\|se\%[t]\)\>" skip="\%(\\\\\)*\\." end="$" matchgroup=vimNotation end="<[cC][rR]>" keepend oneline contains=vimSetEqual,vimOption,vimErrSetting,vimComment,vimSetString,vimSetMod
syn region vimSetEqual contained start="[=:]\|[-+^]=" skip="\\\\\|\\\s" end="[| \t]\|$"me=e-1 contains=vimCtrlChar,vimSetSep,vimNotation,vimEnvvar oneline
syn region vimSetString contained start=+="+hs=s+1 skip=+\\\\\|\\"+ end=+"+ contains=vimCtrlChar
syn match vimSetSep contained "[,:]" skipwhite nextgroup=vimCommand
@@ -341,8 +394,8 @@ syn case match
" User Function Highlighting {{{2
" (following Gautam Iyer's suggestion)
" ==========================
-syn match vimFunc "\%(\%([sSgGbBwWtTlL]:\|<[sS][iI][dD]>\)\=\%([a-zA-Z0-9_.]\+\.\)*\I[a-zA-Z0-9_.]*\)\ze\s*(" contains=vimFuncName,vimUserFunc,vimExecute
-syn match vimUserFunc contained "\%(\%([sSgGbBwWtTlL]:\|<[sS][iI][dD]>\)\=\%([a-zA-Z0-9_.]\+\.\)*\I[a-zA-Z0-9_.]*\)\|\<\u[a-zA-Z0-9.]*\>\|\<if\>" contains=vimNotation
+syn match vimFunc "\%(\%([sSgGbBwWtTlL]:\|<[sS][iI][dD]>\)\=\%([a-zA-Z0-9_]\+\.\)*\I[a-zA-Z0-9_.]*\)\ze\s*(" contains=vimFuncName,vimUserFunc,vimExecute
+syn match vimUserFunc contained "\%(\%([sSgGbBwWtTlL]:\|<[sS][iI][dD]>\)\=\%([a-zA-Z0-9_]\+\.\)*\I[a-zA-Z0-9_.]*\)\|\<\u[a-zA-Z0-9.]*\>\|\<if\>" contains=vimNotation
syn match vimNotFunc "\<if\>\|\<el\%[seif]\>\|\<return\>\|\<while\>"
" Errors And Warnings: {{{2
@@ -388,11 +441,16 @@ syn keyword vimSynType contained clear skipwhite nextgroup=vimGroupList
" Syntax: cluster {{{2
syn keyword vimSynType contained cluster skipwhite nextgroup=vimClusterName
-syn region vimClusterName contained matchgroup=vimGroupName start="\k\+" skip="\\\\\|\\|" matchgroup=vimSep end="$\||" contains=vimGroupAdd,vimGroupRem,vimSynContains,vimSynError
+syn region vimClusterName contained matchgroup=vimGroupName start="\h\w*" skip="\\\\\|\\|" matchgroup=vimSep end="$\||" contains=vimGroupAdd,vimGroupRem,vimSynContains,vimSynError
syn match vimGroupAdd contained "add=" nextgroup=vimGroupList
syn match vimGroupRem contained "remove=" nextgroup=vimGroupList
syn cluster vimFuncBodyList add=vimSynType,vimGroupAdd,vimGroupRem
+" Syntax: iskeyword {{{2
+syn keyword vimSynType contained iskeyword skipwhite nextgroup=vimIskList
+syn match vimIskList contained '\S\+' contains=vimIskSep
+syn match vimIskSep contained ','
+
" Syntax: include {{{2
syn keyword vimSynType contained include skipwhite nextgroup=vimGroupList
syn cluster vimFuncBodyList add=vimSynType
@@ -400,14 +458,14 @@ syn cluster vimFuncBodyList add=vimSynType
" Syntax: keyword {{{2
syn cluster vimSynKeyGroup contains=vimSynNextgroup,vimSynKeyOpt,vimSynKeyContainedin
syn keyword vimSynType contained keyword skipwhite nextgroup=vimSynKeyRegion
-syn region vimSynKeyRegion contained oneline keepend matchgroup=vimGroupName start="\k\+" skip="\\\\\|\\|" matchgroup=vimSep end="|\|$" contains=@vimSynKeyGroup
+syn region vimSynKeyRegion contained oneline keepend matchgroup=vimGroupName start="\h\w*" skip="\\\\\|\\|" matchgroup=vimSep end="|\|$" contains=@vimSynKeyGroup
syn match vimSynKeyOpt contained "\<\(conceal\|contained\|transparent\|skipempty\|skipwhite\|skipnl\)\>"
syn cluster vimFuncBodyList add=vimSynType
" Syntax: match {{{2
syn cluster vimSynMtchGroup contains=vimMtchComment,vimSynContains,vimSynError,vimSynMtchOpt,vimSynNextgroup,vimSynRegPat,vimNotation
syn keyword vimSynType contained match skipwhite nextgroup=vimSynMatchRegion
-syn region vimSynMatchRegion contained keepend matchgroup=vimGroupName start="\k\+" matchgroup=vimSep end="|\|$" contains=@vimSynMtchGroup
+syn region vimSynMatchRegion contained keepend matchgroup=vimGroupName start="\h\w*" matchgroup=vimSep end="|\|$" contains=@vimSynMtchGroup
syn match vimSynMtchOpt contained "\<\(conceal\|transparent\|contained\|excludenl\|skipempty\|skipwhite\|display\|extend\|skipnl\|fold\)\>"
if has("conceal")
syn match vimSynMtchOpt contained "\<cchar=" nextgroup=vimSynMtchCchar
@@ -422,7 +480,7 @@ syn keyword vimSynType contained enable list manual off on reset
syn cluster vimSynRegPatGroup contains=vimPatSep,vimNotPatSep,vimSynPatRange,vimSynNotPatRange,vimSubstSubstr,vimPatRegion,vimPatSepErr,vimNotation
syn cluster vimSynRegGroup contains=vimSynContains,vimSynNextgroup,vimSynRegOpt,vimSynReg,vimSynMtchGrp
syn keyword vimSynType contained region skipwhite nextgroup=vimSynRegion
-syn region vimSynRegion contained keepend matchgroup=vimGroupName start="\k\+" skip="\\\\\|\\|" end="|\|$" contains=@vimSynRegGroup
+syn region vimSynRegion contained keepend matchgroup=vimGroupName start="\h\w*" skip="\\\\\|\\|" end="|\|$" contains=@vimSynRegGroup
syn match vimSynRegOpt contained "\<\(conceal\(ends\)\=\|transparent\|contained\|excludenl\|skipempty\|skipwhite\|display\|keepend\|oneline\|extend\|skipnl\|fold\)\>"
syn match vimSynReg contained "\(start\|skip\|end\)="he=e-1 nextgroup=vimSynRegPat
syn match vimSynMtchGrp contained "matchgroup=" nextgroup=vimGroup,vimHLGroup,vimOnlyHLGroup,nvimHLGroup
@@ -448,9 +506,9 @@ syn keyword vimSyncRegion contained region skipwhite nextgroup=vimSynReg
syn match vimSyncLinebreak contained "\<linebreaks=" skipwhite nextgroup=vimNumber
syn keyword vimSyncLinecont contained linecont skipwhite nextgroup=vimSynRegPat
syn match vimSyncLines contained "\(min\|max\)\=lines=" nextgroup=vimNumber
-syn match vimSyncGroupName contained "\k\+" skipwhite nextgroup=vimSyncKey
+syn match vimSyncGroupName contained "\h\w*" skipwhite nextgroup=vimSyncKey
syn match vimSyncKey contained "\<groupthere\|grouphere\>" skipwhite nextgroup=vimSyncGroup
-syn match vimSyncGroup contained "\k\+" skipwhite nextgroup=vimSynRegPat,vimSyncNone
+syn match vimSyncGroup contained "\h\w*" skipwhite nextgroup=vimSynRegPat,vimSyncNone
syn keyword vimSyncNone contained NONE
" Additional IsCommand, here by reasons of precedence {{{2
@@ -531,9 +589,14 @@ 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 ~= 'P' : embed python (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= "P"
+ let g:vimsyn_embed= "lmpPr"
endif
" [-- lua --] {{{3
@@ -546,9 +609,16 @@ if !filereadable(s:luapath)
endif
endfor
endif
-
-syn region vimEmbedError start=+lua\s*<<\s*\z(.*\)$+ end=+^\z1$+
-syn region vimEmbedError start=+lua\s*<<\s*$+ end=+\.$+
+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
+ VimFoldl syn region vimLuaRegion matchgroup=vimScriptDelim start=+lua\s*<<\s*$+ end=+\.$+ contains=@vimLuaScript
+ syn cluster vimFuncBodyList add=vimLuaRegion
+else
+ syn region vimEmbedError start=+lua\s*<<\s*\z(.*\)$+ end=+^\z1$+
+ syn region vimEmbedError start=+lua\s*<<\s*$+ end=+\.$+
+endif
unlet s:luapath
" [-- perl --] {{{3
@@ -561,9 +631,16 @@ if !filereadable(s:perlpath)
endif
endfor
endif
-
-syn region vimEmbedError start=+pe\%[rl]\s*<<\s*\z(.*\)$+ end=+^\z1$+
-syn region vimEmbedError start=+pe\%[rl]\s*<<\s*$+ end=+\.$+
+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
+ VimFoldp syn region vimPerlRegion matchgroup=vimScriptDelim start=+pe\%[rl]\s*<<\s*$+ end=+\.$+ contains=@vimPerlScript
+ syn cluster vimFuncBodyList add=vimPerlRegion
+else
+ syn region vimEmbedError start=+pe\%[rl]\s*<<\s*\z(.*\)$+ end=+^\z1$+
+ syn region vimEmbedError start=+pe\%[rl]\s*<<\s*$+ end=+\.$+
+endif
unlet s:perlpath
" [-- ruby --] {{{3
@@ -576,9 +653,16 @@ if !filereadable(s:rubypath)
endif
endfor
endif
-
-syn region vimEmbedError start=+rub[y]\s*<<\s*\z(.*\)$+ end=+^\z1$+
-syn region vimEmbedError start=+rub[y]\s*<<\s*$+ end=+\.$+
+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
+ syn region vimRubyRegion matchgroup=vimScriptDelim start=+rub[y]\s*<<\s*$+ end=+\.$+ contains=@vimRubyScript
+ syn cluster vimFuncBodyList add=vimRubyRegion
+else
+ syn region vimEmbedError start=+rub[y]\s*<<\s*\z(.*\)$+ end=+^\z1$+
+ syn region vimEmbedError start=+rub[y]\s*<<\s*$+ end=+\.$+
+endif
unlet s:rubypath
" [-- python --] {{{3
@@ -591,16 +675,13 @@ if !filereadable(s:pythonpath)
endif
endfor
endif
-if g:vimsyn_embed =~ 'P' && 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
- if exists("g:vimsyn_folding") && g:vimsyn_folding =~ 'P'
- syn region vimPythonRegion fold matchgroup=vimScriptDelim start=+py\%[thon]3\=\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimPythonScript
- syn region vimPythonRegion fold matchgroup=vimScriptDelim start=+py\%[thon]3\=\s*<<\s*$+ end=+\.$+ contains=@vimPythonScript
- else
- syn region vimPythonRegion matchgroup=vimScriptDelim start=+py\%[thon]3\=\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimPythonScript
- syn region vimPythonRegion matchgroup=vimScriptDelim start=+py\%[thon]3\=\s*<<\s*$+ end=+\.$+ contains=@vimPythonScript
- endif
+ VimFoldP syn region vimPythonRegion matchgroup=vimScriptDelim start=+py\%[thon]3\=\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimPythonScript
+ VimFoldP syn region vimPythonRegion matchgroup=vimScriptDelim start=+py\%[thon]3\=\s*<<\s*$+ end=+\.$+ contains=@vimPythonScript
+ VimFoldP syn region vimPythonRegion matchgroup=vimScriptDelim start=+Py\%[thon]2or3\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimPythonScript
+ VimFoldP syn region vimPythonRegion matchgroup=vimScriptDelim start=+Py\%[thon]2or3\=\s*<<\s*$+ end=+\.$+ contains=@vimPythonScript
syn cluster vimFuncBodyList add=vimPythonRegion
else
syn region vimEmbedError start=+py\%[thon]3\=\s*<<\s*\z(.*\)$+ end=+^\z1$+
@@ -625,11 +706,17 @@ if s:trytcl
endif
endfor
endif
-
- syn region vimEmbedError start=+tc[l]\=\s*<<\s*\z(.*\)$+ end=+^\z1$+
- syn region vimEmbedError start=+tc[l]\=\s*<<\s*$+ end=+\.$+
+ 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
+ VimFoldt syn region vimTclRegion matchgroup=vimScriptDelim start=+tc[l]\=\s*<<\s*$+ end=+\.$+ contains=@vimTclScript
+ syn cluster vimFuncBodyList add=vimTclScript
+ else
+ syn region vimEmbedError start=+tc[l]\=\s*<<\s*\z(.*\)$+ end=+^\z1$+
+ syn region vimEmbedError start=+tc[l]\=\s*<<\s*$+ end=+\.$+
+ endif
unlet s:tclpath
-
else
syn region vimEmbedError start=+tc[l]\=\s*<<\s*\z(.*\)$+ end=+^\z1$+
syn region vimEmbedError start=+tc[l]\=\s*<<\s*$+ end=+\.$+
@@ -646,9 +733,18 @@ if !filereadable(s:mzschemepath)
endif
endfor
endif
-
-syn region vimEmbedError start=+mz\%[scheme]\s*<<\s*\z(.*\)$+ end=+^\z1$+
-syn region vimEmbedError start=+mz\%[scheme]\s*<<\s*$+ end=+\.$+
+if (g:vimsyn_embed =~# 'm' && has("mzscheme")) && filereadable(s:mzschemepath)
+ unlet! b:current_syntax
+ let iskKeep= &isk
+ exe "syn include @vimMzSchemeScript ".s:mzschemepath
+ let &isk= iskKeep
+ VimFoldm syn region vimMzSchemeRegion matchgroup=vimScriptDelim start=+mz\%[scheme]\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimMzSchemeScript
+ VimFoldm syn region vimMzSchemeRegion matchgroup=vimScriptDelim start=+mz\%[scheme]\s*<<\s*$+ end=+\.$+ contains=@vimMzSchemeScript
+ syn cluster vimFuncBodyList add=vimMzSchemeRegion
+else
+ syn region vimEmbedError start=+mz\%[scheme]\s*<<\s*\z(.*\)$+ end=+^\z1$+
+ syn region vimEmbedError start=+mz\%[scheme]\s*<<\s*$+ end=+\.$+
+endif
unlet s:mzschemepath
" Synchronize (speed) {{{2
@@ -668,7 +764,6 @@ syn sync match vimAugroupSyncA groupthere NONE "\<aug\%[roup]\>\s\+[eE][nN][dD]"
" Highlighting Settings {{{2
" ====================
-
if !exists("g:vimsyn_noerror")
hi def link vimBehaveError vimError
hi def link vimCollClassErr vimError
@@ -685,14 +780,11 @@ if !exists("g:vimsyn_noerror")
hi def link vimSubstFlagErr vimError
hi def link vimSynCaseError vimError
hi def link vimBufnrWarn vimWarn
- hi def link vimOnlyCommand vimError
- hi def link vimTermOption vimError
- hi def link vimOnlyOption vimError
- hi def link vimOnlyHLGroup vimError
endif
hi def link vimAbb vimCommand
hi def link vimAddress vimMark
+hi def link vimAugroupError vimError
hi def link vimAugroupKey vimCommand
hi def link vimAuHighlight vimHighlight
hi def link vimAutoCmdOpt vimOption
@@ -748,6 +840,7 @@ hi def link vimHLGroup vimGroup
hi def link nvimHLGroup vimHLGroup
hi def link vimHLMod PreProc
hi def link vimInsert vimString
+hi def link vimIskSep Delimiter
hi def link vimKeyCode vimSpecFile
hi def link vimKeyword Statement
hi def link vimLet vimCommand
@@ -830,6 +923,7 @@ hi def link vimUserAttrbCmpltFunc Special
hi def link vimUserAttrbCmplt vimSpecial
hi def link vimUserAttrbKey vimOption
hi def link vimUserAttrb vimSpecial
+hi def link vimUserAttrbError Error
hi def link vimUserCmdError Error
hi def link vimUserCommand vimCommand
hi def link vimUserFunc Normal
@@ -841,6 +935,14 @@ let b:current_syntax = "vim"
" ---------------------------------------------------------------------
" Cleanup: {{{1
+delc VimFolda
+delc VimFoldf
+delc VimFoldl
+delc VimFoldm
+delc VimFoldp
+delc VimFoldP
+delc VimFoldr
+delc VimFoldt
let &cpo = s:keepcpo
unlet s:keepcpo
" vim:ts=18 fdm=marker
diff --git a/runtime/vimrc_example.vim b/runtime/vimrc_example.vim
index c53dde8ceb..17cba123a8 100644
--- a/runtime/vimrc_example.vim
+++ b/runtime/vimrc_example.vim
@@ -19,6 +19,12 @@ inoremap <C-U> <C-G>u<C-U>
" Switch syntax highlighting on
syntax on
+" Also switch on highlighting the last used search pattern.
+set hlsearch
+
+" I like highlighting strings inside C comments.
+let c_comment_strings=1
+
" Enable file type detection.
" Use the default filetype settings, so that mail gets 'textwidth' set to 72,
" 'cindent' is on in C files, etc.