aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--runtime/autoload/spellfile.vim7
-rw-r--r--runtime/doc/motion.txt6
-rw-r--r--runtime/doc/options.txt8
-rw-r--r--runtime/doc/pattern.txt8
-rw-r--r--runtime/doc/usr_05.txt3
-rw-r--r--runtime/mswin.vim5
-rw-r--r--runtime/syntax/cs.vim282
-rw-r--r--runtime/syntax/pf.vim335
-rw-r--r--runtime/syntax/sudoers.vim5
9 files changed, 473 insertions, 186 deletions
diff --git a/runtime/autoload/spellfile.vim b/runtime/autoload/spellfile.vim
index 84584c6e29..9ec6091218 100644
--- a/runtime/autoload/spellfile.vim
+++ b/runtime/autoload/spellfile.vim
@@ -20,6 +20,7 @@ function! spellfile#LoadFile(lang)
endif
return
endif
+ let lang = tolower(a:lang)
" If the URL changes we try all files again.
if s:spellfile_URL != g:spellfile_URL
@@ -28,13 +29,13 @@ function! spellfile#LoadFile(lang)
endif
" I will say this only once!
- if has_key(s:donedict, a:lang . &enc)
+ if has_key(s:donedict, lang . &enc)
if &verbose
echomsg 'spellfile#LoadFile(): Tried this language/encoding before.'
endif
return
endif
- let s:donedict[a:lang . &enc] = 1
+ let s:donedict[lang . &enc] = 1
" Find spell directories we can write in.
let [dirlist, dirchoices] = spellfile#GetDirChoices()
@@ -94,7 +95,7 @@ function! spellfile#LoadFile(lang)
let newbufnr = winbufnr(0)
endif
- let fname = a:lang . '.ascii.spl'
+ let fname = lang . '.ascii.spl'
echo 'Could not find it, trying ' . fname . '...'
call spellfile#Nread(fname)
if getline(2) !~ 'VIMspell'
diff --git a/runtime/doc/motion.txt b/runtime/doc/motion.txt
index 8649f7cab4..230136cd55 100644
--- a/runtime/doc/motion.txt
+++ b/runtime/doc/motion.txt
@@ -1118,7 +1118,7 @@ remembered.
*:changes*
:changes Print the change list. A ">" character indicates the
current position. Just after a change it is below the
- newest entry, indicating that "g;" takes you to the
+ newest entry, indicating that `g;` takes you to the
newest entry position. The first column indicates the
count needed to take you to this position. Example:
@@ -1128,8 +1128,8 @@ remembered.
1 14 54 the latest changed line
>
- The "3g;" command takes you to line 9. Then the
- output of ":changes is:
+ The `3g;` command takes you to line 9. Then the
+ output of `:changes` is:
change line col text ~
> 0 9 8 bla bla bla
diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt
index 2c1d71e96d..69a1896404 100644
--- a/runtime/doc/options.txt
+++ b/runtime/doc/options.txt
@@ -1534,10 +1534,10 @@ A jump table for the options with a short description can be found at |Q_op|.
See also |map_bar|.
*cpo-B*
B A backslash has no special meaning in mappings,
- abbreviations and the "to" part of the menu commands.
- Remove this flag to be able to use a backslash like a
- CTRL-V. For example, the command ":map X \<Esc>"
- results in X being mapped to:
+ abbreviations, user commands and the "to" part of the
+ menu commands. Remove this flag to be able to use a
+ backslash like a CTRL-V. For example, the command
+ ":map X \<Esc>" results in X being mapped to:
'B' included: "\^[" (^[ is a real <Esc>)
'B' excluded: "<Esc>" (5 characters)
*cpo-c*
diff --git a/runtime/doc/pattern.txt b/runtime/doc/pattern.txt
index 3d8266f262..4c155b3f39 100644
--- a/runtime/doc/pattern.txt
+++ b/runtime/doc/pattern.txt
@@ -282,6 +282,14 @@ the "#" is under your left hand middle finger (search to the left and up) and
the "*" is under your right hand middle finger (search to the right and down).
(this depends on your keyboard layout though).
+ *E956*
+In very rare cases a regular expression is used recursively. This can happen
+when executing a pattern takes a long time and when checkig for messages on
+channels a callback is invoked that also uses a pattern or an autocommand is
+triggered. In most cases this should be fine, but if a pattern is in use when
+it's used again it fails. Usually this means there is something wrong with
+the pattern.
+
==============================================================================
2. The definition of a pattern *search-pattern* *pattern* *[pattern]*
*regular-expression* *regexp* *Pattern*
diff --git a/runtime/doc/usr_05.txt b/runtime/doc/usr_05.txt
index 2485f106b4..a5b5f8165c 100644
--- a/runtime/doc/usr_05.txt
+++ b/runtime/doc/usr_05.txt
@@ -317,8 +317,9 @@ when you use Vim. There are only two steps for adding a global plugin:
GETTING A GLOBAL PLUGIN
Where can you find plugins?
+- Some are always loaded, you can see them in the directory $VIMRUNTIME/plugin.
- Some come with Vim. You can find them in the directory $VIMRUNTIME/macros
- and its sub-directories.
+ and its sub-directories and under $VIM/vimfiles/pack/dist/opt/.
- Download from the net. There is a large collection on http://www.vim.org.
- They are sometimes posted in a Vim |maillist|.
- You could write one yourself, see |write-plugin|.
diff --git a/runtime/mswin.vim b/runtime/mswin.vim
index da869a9fc7..5ec21491fe 100644
--- a/runtime/mswin.vim
+++ b/runtime/mswin.vim
@@ -57,10 +57,11 @@ vmap <S-Insert> <C-V>
" Use CTRL-Q to do what CTRL-V used to do
noremap <C-Q> <C-V>
-" Use CTRL-S for saving, also in Insert mode
+" Use CTRL-S for saving, also in Insert mode (<C-O> doesn't work well when
+" using completions).
noremap <C-S> :update<CR>
vnoremap <C-S> <C-C>:update<CR>
-inoremap <C-S> <C-O>:update<CR>
+inoremap <C-S> <Esc>:update<CR>gi
" For CTRL-V to work autoselect must be off.
" On Unix we have two selections, autoselect can be used.
diff --git a/runtime/syntax/cs.vim b/runtime/syntax/cs.vim
index 9977ec03e3..116afe0b72 100644
--- a/runtime/syntax/cs.vim
+++ b/runtime/syntax/cs.vim
@@ -1,12 +1,12 @@
" Vim syntax file
-" Language: C#
-" Maintainer: Nick Jensen <nickspoon@gmail.com>
-" Former Maintainer: Anduin Withers <awithers@anduin.com>
-" Former Maintainer: Johannes Zellner <johannes@zellner.org>
-" Last Change: 2018-05-02
-" Filenames: *.cs
-" License: Vim (see :h license)
-" Repository: https://github.com/nickspoons/vim-cs
+" Language: C#
+" Maintainer: Nick Jensen <nickspoon@gmail.com>
+" Former Maintainers: Anduin Withers <awithers@anduin.com>
+" Johannes Zellner <johannes@zellner.org>
+" Last Change: 2018-06-29
+" Filenames: *.cs
+" License: Vim (see :h license)
+" Repository: https://github.com/nickspoons/vim-cs
"
" REFERENCES:
" [1] ECMA TC39: C# Language Specification (WD13Oct01.doc)
@@ -19,144 +19,190 @@ let s:cs_cpo_save = &cpo
set cpo&vim
-syn keyword csType bool byte char decimal double float int long object sbyte short string T uint ulong ushort var void dynamic
-syn keyword csStorage delegate enum interface namespace struct
-syn keyword csRepeat break continue do for foreach goto return while
-syn keyword csConditional else if switch
-syn keyword csLabel case default
+syn keyword csType bool byte char decimal double float int long object sbyte short string T uint ulong ushort var void dynamic
+syn keyword csStorage delegate enum interface namespace struct
+syn keyword csRepeat break continue do for foreach goto return while
+syn keyword csConditional else if switch
+syn keyword csLabel case default
+syn match csOperatorError display +::+
+syn match csGlobal display +global::+
" user labels (see [1] 8.6 Statements)
-syn match csLabel display +^\s*\I\i*\s*:\([^:]\)\@=+
-syn keyword csModifier abstract const extern internal override private protected public readonly sealed static virtual volatile
-syn keyword csConstant false null true
-syn keyword csException try catch finally throw when
-syn keyword csLinq ascending by descending equals from group in into join let on orderby select where
-syn keyword csAsync async await
+syn match csLabel display +^\s*\I\i*\s*:\([^:]\)\@=+
+syn keyword csModifier abstract const extern internal override private protected public readonly sealed static virtual volatile
+syn keyword csConstant false null true
+syn keyword csException try catch finally throw when
+syn keyword csLinq ascending by descending equals from group in into join let on orderby select where
+syn keyword csAsync async await
-syn keyword csUnspecifiedStatement as base checked event fixed get in is lock nameof operator out params ref set sizeof stackalloc this typeof unchecked unsafe using
-syn keyword csUnsupportedStatement add remove value
-syn keyword csUnspecifiedKeyword explicit implicit
+syn keyword csUnspecifiedStatement as base checked event fixed in is lock nameof operator out params ref sizeof stackalloc this typeof unchecked unsafe using
+syn keyword csUnsupportedStatement add remove value
+syn keyword csUnspecifiedKeyword explicit implicit
" Contextual Keywords
-syn match csContextualStatement /\<yield[[:space:]\n]\+\(return\|break\)/me=s+5
-syn match csContextualStatement /\<partial[[:space:]\n]\+\(class\|struct\|interface\)/me=s+7
-syn match csContextualStatement /\<\(get\|set\)[[:space:]\n]*{/me=s+3
-syn match csContextualStatement /\<where\>[^:]\+:/me=s+5
+syn match csContextualStatement /\<yield[[:space:]\n]\+\(return\|break\)/me=s+5
+syn match csContextualStatement /\<partial[[:space:]\n]\+\(class\|struct\|interface\)/me=s+7
+syn match csContextualStatement /\<\(get\|set\)\(;\|[[:space:]\n]*{\)/me=s+3
+syn match csContextualStatement /\<where\>[^:]\+:/me=s+5
+
+" Punctuation
+syn match csBraces "[{}\[\]]" display
+syn match csParens "[()]" display
+syn match csOpSymbols "[+\-><=]\{1,2}" display
+syn match csOpSymbols "[!><+\-*/]=" display
+syn match csOpSymbols "[!*/^]" display
+syn match csOpSymbols "=>" display
+syn match csEndColon ";" display
+syn match csLogicSymbols "&&" display
+syn match csLogicSymbols "||" display
+syn match csLogicSymbols "?" display
+syn match csLogicSymbols ":" display
" Comments
"
" PROVIDES: @csCommentHook
-"
-" TODO: include strings ?
-"
-syn keyword csTodo contained TODO FIXME XXX NOTE HACK
-syn region csComment start="/\*" end="\*/" contains=@csCommentHook,csTodo,@Spell
-syn match csComment "//.*$" contains=@csCommentHook,csTodo,@Spell
+syn keyword csTodo contained TODO FIXME XXX NOTE HACK TBD
+syn region csComment start="/\*" end="\*/" contains=@csCommentHook,csTodo,@Spell
+syn match csComment "//.*$" contains=@csCommentHook,csTodo,@Spell
" xml markup inside '///' comments
-syn cluster xmlRegionHook add=csXmlCommentLeader
-syn cluster xmlCdataHook add=csXmlCommentLeader
-syn cluster xmlStartTagHook add=csXmlCommentLeader
-syn keyword csXmlTag contained Libraries Packages Types Excluded ExcludedTypeName ExcludedLibraryName
-syn keyword csXmlTag contained ExcludedBucketName TypeExcluded Type TypeKind TypeSignature AssemblyInfo
-syn keyword csXmlTag contained AssemblyName AssemblyPublicKey AssemblyVersion AssemblyCulture Base
-syn keyword csXmlTag contained BaseTypeName Interfaces Interface InterfaceName Attributes Attribute
-syn keyword csXmlTag contained AttributeName Members Member MemberSignature MemberType MemberValue
-syn keyword csXmlTag contained ReturnValue ReturnType Parameters Parameter MemberOfPackage
-syn keyword csXmlTag contained ThreadingSafetyStatement Docs devdoc example overload remarks returns summary
-syn keyword csXmlTag contained threadsafe value internalonly nodoc exception param permission platnote
-syn keyword csXmlTag contained seealso b c i pre sub sup block code note paramref see subscript superscript
-syn keyword csXmlTag contained list listheader item term description altcompliant altmember
+syn cluster xmlRegionHook add=csXmlCommentLeader
+syn cluster xmlCdataHook add=csXmlCommentLeader
+syn cluster xmlStartTagHook add=csXmlCommentLeader
+syn keyword csXmlTag contained Libraries Packages Types Excluded ExcludedTypeName ExcludedLibraryName
+syn keyword csXmlTag contained ExcludedBucketName TypeExcluded Type TypeKind TypeSignature AssemblyInfo
+syn keyword csXmlTag contained AssemblyName AssemblyPublicKey AssemblyVersion AssemblyCulture Base
+syn keyword csXmlTag contained BaseTypeName Interfaces Interface InterfaceName Attributes Attribute
+syn keyword csXmlTag contained AttributeName Members Member MemberSignature MemberType MemberValue
+syn keyword csXmlTag contained ReturnValue ReturnType Parameters Parameter MemberOfPackage
+syn keyword csXmlTag contained ThreadingSafetyStatement Docs devdoc example overload remarks returns summary
+syn keyword csXmlTag contained threadsafe value internalonly nodoc exception param permission platnote
+syn keyword csXmlTag contained seealso b c i pre sub sup block code note paramref see subscript superscript
+syn keyword csXmlTag contained list listheader item term description altcompliant altmember
syn cluster xmlTagHook add=csXmlTag
-syn match csXmlCommentLeader +\/\/\/+ contained
-syn match csXmlComment +\/\/\/.*$+ contains=csXmlCommentLeader,@csXml,@Spell
-syntax include @csXml syntax/xml.vim
-hi def link xmlRegion Comment
+syn match csXmlCommentLeader +\/\/\/+ contained
+syn match csXmlComment +\/\/\/.*$+ contains=csXmlCommentLeader,@csXml,@Spell
+syn include @csXml syntax/xml.vim
+hi def link xmlRegion Comment
" [1] 9.5 Pre-processing directives
-syn region csPreCondit
- \ start="^\s*#\s*\(define\|undef\|if\|elif\|else\|endif\|line\|error\|warning\)"
- \ skip="\\$" end="$" contains=csComment keepend
-syn region csRegion matchgroup=csPreCondit start="^\s*#\s*region.*$"
- \ end="^\s*#\s*endregion" transparent fold contains=TOP
-syn region csSummary start="^\s*/// <summary" end="^\(\s*///\)\@!" transparent fold keepend
+syn region csPreCondit start="^\s*#\s*\(define\|undef\|if\|elif\|else\|endif\|line\|error\|warning\)" skip="\\$" end="$" contains=csComment keepend
+syn region csRegion matchgroup=csPreCondit start="^\s*#\s*region.*$" end="^\s*#\s*endregion" transparent fold contains=TOP
+syn region csSummary start="^\s*/// <summary" end="^\%\(\s*///\)\@!" transparent fold keepend
-syn region csClassType start="\(@\)\@<!class\>"hs=s+6 end="[:\n{]"he=e-1 contains=csClass
-syn region csNewType start="\(@\)\@<!new\>"hs=s+4 end="[\(\<{\[]"he=e-1 contains=csNew contains=csNewType
-syn region csIsType start="\v (is|as) "hs=s+4 end="\v[A-Za-z0-9]+" oneline contains=csIsAs
-syn keyword csNew new contained
-syn keyword csClass class contained
-syn keyword csIsAs is as
+syn region csClassType start="@\@1<!\<class\>"hs=s+6 end="[:\n{]"me=e-1 contains=csClass
+syn region csNewType start="@\@1<!\<new\>"hs=s+4 end="[;\n{(<\[]"me=e-1 contains=csNew contains=csNewType
+syn region csIsType start=" is "hs=s+4 end="[A-Za-z0-9]\+" oneline contains=csIsAs
+syn region csIsType start=" as "hs=s+4 end="[A-Za-z0-9]\+" oneline contains=csIsAs
+syn keyword csNew new contained
+syn keyword csClass class contained
+syn keyword csIsAs is as
" Strings and constants
-syn match csSpecialError contained "\\."
-syn match csSpecialCharError contained "[^']"
+syn match csSpecialError "\\." contained
+syn match csSpecialCharError "[^']" contained
" [1] 9.4.4.4 Character literals
-syn match csSpecialChar contained +\\["\\'0abfnrtvx]+
-" unicode characters
-syn match csUnicodeNumber +\\\(u\x\{4}\|U\x\{8}\)+ contained contains=csUnicodeSpecifier
-syn match csUnicodeSpecifier +\\[uU]+ contained
-syn region csVerbatimString start=+@"+ end=+"+ skip=+""+ contains=csVerbatimSpec,@Spell
-syn match csVerbatimSpec +@"+he=s+1 contained
-syn region csString start=+"+ end=+"+ end=+$+ contains=csSpecialChar,csSpecialError,csUnicodeNumber,@Spell
-syn match csCharacter "'[^']*'" contains=csSpecialChar,csSpecialCharError
-syn match csCharacter "'\\''" contains=csSpecialChar
-syn match csCharacter "'[^\\]'"
-syn match csNumber "\<\(0[0-7]*\|0[xX]\x\+\|\d\+\)[lL]\=\>"
-syn match csNumber "\(\<\d\+\.\d*\|\.\d\+\)\([eE][-+]\=\d\+\)\=[fFdD]\="
-syn match csNumber "\<\d\+[eE][-+]\=\d\+[fFdD]\=\>"
-syn match csNumber "\<\d\+\([eE][-+]\=\d\+\)\=[fFdD]\>"
+syn match csSpecialChar +\\["\\'0abfnrtvx]+ contained display
+syn match csUnicodeNumber +\\u\x\{4}+ contained contains=csUnicodeSpecifier display
+syn match csUnicodeNumber +\\U\x\{8}+ contained contains=csUnicodeSpecifier display
+syn match csUnicodeSpecifier +\\[uU]+ contained display
+
+syn region csString matchgroup=csQuote start=+"+ end=+"+ end=+$+ extend contains=csSpecialChar,csSpecialError,csUnicodeNumber,@Spell
+syn match csCharacter "'[^']*'" contains=csSpecialChar,csSpecialCharError display
+syn match csCharacter "'\\''" contains=csSpecialChar display
+syn match csCharacter "'[^\\]'" display
+syn match csNumber "\<0[0-7]*[lL]\=\>" display
+syn match csNumber "\<0[xX]\x\+[lL]\=\>" display
+syn match csNumber "\<\d\+[lL]\=\>" display
+syn match csNumber "\<\d\+\.\d*\%\([eE][-+]\=\d\+\)\=[fFdD]\=" display
+syn match csNumber "\.\d\+\%\([eE][-+]\=\d\+\)\=[fFdD]\=" display
+syn match csNumber "\<\d\+[eE][-+]\=\d\+[fFdD]\=\>" display
+syn match csNumber "\<\d\+\%\([eE][-+]\=\d\+\)\=[fFdD]\>" display
+
+syn region csInterpolatedString matchgroup=csQuote start=+\$"+ end=+"+ end=+$+ extend contains=csInterpolation,csEscapedInterpolation,csSpecialChar,csSpecialError,csUnicodeNumber,@Spell
+
+syn region csInterpolation matchgroup=csInterpolationDelimiter start=+{+ end=+}+ keepend contained contains=@csAll,csBracketed,csInterpolationAlign,csInterpolationFormat
+syn match csEscapedInterpolation "{{" transparent contains=NONE display
+syn match csEscapedInterpolation "}}" transparent contains=NONE display
+syn region csInterpolationAlign matchgroup=csInterpolationAlignDel start=+,+ end=+}+ end=+:+me=e-1 contained contains=csNumber,csConstant,csCharacter,csParens,csOpSymbols,csString,csBracketed display
+syn match csInterpolationFormat +:[^}]\+}+ contained contains=csInterpolationFormatDel display
+syn match csInterpolationAlignDel +,+ contained display
+syn match csInterpolationFormatDel +:+ contained display
+
+syn region csVerbatimString matchgroup=csQuote start=+@"+ end=+"+ skip=+""+ extend contains=csVerbatimQuote,@Spell
+syn match csVerbatimQuote +""+ contained
+syn match csQuoteError +@$"+he=s+2,me=s+2
+
+syn region csInterVerbString matchgroup=csQuote start=+\$@"+ end=+"+ skip=+""+ extend contains=csInterpolation,csEscapedInterpolation,csSpecialChar,csSpecialError,csUnicodeNumber,csVerbatimQuote,@Spell
+
+syn region csBracketed matchgroup=csParens start=+(+ end=+)+ contained transparent contains=@csAll,csBracketed
+
+syn cluster csAll contains=csCharacter,csClassType,csComment,csContextualStatement,csEndColon,csInterpolatedString,csIsType,csLabel,csLogicSymbols,csNewType,csConstant,csNumber,csOpSymbols,csOperatorError,csParens,csPreCondit,csRegion,csString,csSummary,csUnicodeNumber,csUnicodeSpecifier,csVerbatimString
" The default highlighting.
-hi def link csType Type
-hi def link csNewType Type
-hi def link csClassType Type
-hi def link csIsType Type
-hi def link csStorage StorageClass
-hi def link csClass StorageClass
-hi def link csRepeat Repeat
-hi def link csConditional Conditional
-hi def link csLabel Label
-hi def link csModifier StorageClass
-hi def link csConstant Constant
-hi def link csException Exception
-hi def link csUnspecifiedStatement Statement
-hi def link csUnsupportedStatement Statement
-hi def link csUnspecifiedKeyword Keyword
-hi def link csNew Statement
-hi def link csLinq Statement
-hi def link csIsAs Keyword
-hi def link csAsync Keyword
-hi def link csContextualStatement Statement
-hi def link csOperatorError Error
-hi def link csInterfaceDeclaration Include
-
-hi def link csTodo Todo
-hi def link csComment Comment
-
-hi def link csSpecialError Error
-hi def link csSpecialCharError Error
-hi def link csString String
-hi def link csVerbatimString String
-hi def link csVerbatimSpec SpecialChar
-hi def link csPreCondit PreCondit
-hi def link csCharacter Character
-hi def link csSpecialChar SpecialChar
-hi def link csNumber Number
-hi def link csUnicodeNumber SpecialChar
-hi def link csUnicodeSpecifier SpecialChar
+hi def link csType Type
+hi def link csNewType Type
+hi def link csClassType Type
+hi def link csIsType Type
+hi def link csStorage StorageClass
+hi def link csClass StorageClass
+hi def link csRepeat Repeat
+hi def link csConditional Conditional
+hi def link csLabel Label
+hi def link csModifier StorageClass
+hi def link csConstant Constant
+hi def link csException Exception
+hi def link csUnspecifiedStatement Statement
+hi def link csUnsupportedStatement Statement
+hi def link csUnspecifiedKeyword Keyword
+hi def link csNew Statement
+hi def link csLinq Statement
+hi def link csIsAs Keyword
+hi def link csAsync Keyword
+hi def link csContextualStatement Statement
+hi def link csOperatorError Error
+hi def link csInterfaceDeclaration Include
+
+hi def link csTodo Todo
+hi def link csComment Comment
+
+hi def link csEndColon Statement
+hi def link csOpSymbols Operator
+hi def link csLogicSymbols Boolean
+hi def link csBraces Function
+hi def link csParens Operator
+
+hi def link csSpecialError Error
+hi def link csSpecialCharError Error
+hi def link csString String
+hi def link csQuote String
+hi def link csQuoteError Error
+hi def link csInterpolatedString String
+hi def link csVerbatimString String
+hi def link csInterVerbString String
+hi def link csVerbatimQuote SpecialChar
+hi def link csPreCondit PreCondit
+hi def link csCharacter Character
+hi def link csSpecialChar SpecialChar
+hi def link csNumber Number
+hi def link csUnicodeNumber SpecialChar
+hi def link csUnicodeSpecifier SpecialChar
+hi def link csInterpolationDelimiter Delimiter
+hi def link csInterpolationAlignDel csInterpolationDelimiter
+hi def link csInterpolationFormat csInterpolationDelimiter
+hi def link csInterpolationFormatDel csInterpolationDelimiter
" xml markup
-hi def link csXmlCommentLeader Comment
-hi def link csXmlComment Comment
-hi def link csXmlTag Statement
+hi def link csXmlCommentLeader Comment
+hi def link csXmlComment Comment
+hi def link csXmlTag Statement
let b:current_syntax = "cs"
let &cpo = s:cs_cpo_save
unlet s:cs_cpo_save
-" vim: ts=8
+" vim: vts=16,28
diff --git a/runtime/syntax/pf.vim b/runtime/syntax/pf.vim
index 81add10e7e..b928dc4fbb 100644
--- a/runtime/syntax/pf.vim
+++ b/runtime/syntax/pf.vim
@@ -2,12 +2,13 @@
" Language: OpenBSD packet filter configuration (pf.conf)
" Original Author: Camiel Dobbelaar <cd@sentia.nl>
" Maintainer: Lauri Tirkkonen <lotheac@iki.fi>
-" Last Change: 2016 Jul 06
+" Last Change: 2018 Jul 16
if exists("b:current_syntax")
finish
endif
+let b:current_syntax = "pf"
setlocal foldmethod=syntax
syn iskeyword @,48-57,_,-,+
syn sync fromstart
@@ -17,7 +18,7 @@ syn keyword pfCmd anchor antispoof block include match pass queue
syn keyword pfCmd queue set table
syn match pfCmd /^\s*load\sanchor\>/
syn keyword pfTodo TODO XXX contained
-syn keyword pfWildAddr all any
+syn keyword pfWildAddr any no-route urpf-failed self
syn match pfComment /#.*$/ contains=pfTodo
syn match pfCont /\\$/
syn match pfErrClose /}/
@@ -36,57 +37,6 @@ syn region pfList start=/{/ end=/}/ transparent contains=ALLBUT,pfErrClose,@pfN
syn region pfString start=/"/ skip=/\\"/ end=/"/ contains=pfIPv4,pfIPv6,pfNetmask,pfTable,pfVar
syn region pfString start=/'/ skip=/\\'/ end=/'/ contains=pfIPv4,pfIPv6,pfNetmask,pfTable,pfVar
-syn keyword pfService 802-11-iapp Microsoft-SQL-Monitor
-syn keyword pfService Microsoft-SQL-Server NeXTStep NextStep
-syn keyword pfService afpovertcp afs3-bos afs3-callback afs3-errors
-syn keyword pfService afs3-fileserver afs3-kaserver afs3-prserver
-syn keyword pfService afs3-rmtsys afs3-update afs3-vlserver
-syn keyword pfService afs3-volser amt-redir-tcp amt-redir-tls
-syn keyword pfService amt-soap-http amt-soap-https asf-rmcp at-echo
-syn keyword pfService at-nbp at-rtmp at-zis auth authentication
-syn keyword pfService bfd-control bfd-echo bftp bgp bgpd biff bootpc
-syn keyword pfService bootps canna cddb cddbp chargen chat cmd
-syn keyword pfService cmip-agent cmip-man comsat conference
-syn keyword pfService conserver courier csnet-ns cso-ns cvspserver
-syn keyword pfService daap datametrics daytime dhcpd-sync
-syn keyword pfService dhcpv6-client dhcpv6-server discard domain
-syn keyword pfService echo efs eklogin ekshell ekshell2 epmap eppc
-syn keyword pfService exec finger ftp ftp-data git gopher hostname
-syn keyword pfService hostnames hprop http https hunt hylafax iapp
-syn keyword pfService icb ident imap imap2 imap3 imaps ingreslock
-syn keyword pfService ipp iprop ipsec-msft ipsec-nat-t ipx irc
-syn keyword pfService isakmp iscsi isisd iso-tsap kauth kdc kerberos
-syn keyword pfService kerberos-adm kerberos-iv kerberos-sec
-syn keyword pfService kerberos_master kf kip klogin kpasswd kpop
-syn keyword pfService krb524 krb_prop krbupdate krcmd kreg kshell kx
-syn keyword pfService l2tp ldap ldaps ldp link login mail mdns
-syn keyword pfService mdnsresponder microsoft-ds ms-sql-m ms-sql-s
-syn keyword pfService msa msp mtp mysql name nameserver netbios-dgm
-syn keyword pfService netbios-ns netbios-ssn netnews netplan netrjs
-syn keyword pfService netstat netwall newdate nextstep nfs nfsd
-syn keyword pfService nicname nnsp nntp ntalk ntp null openwebnet
-syn keyword pfService ospf6d ospfapi ospfd photuris pop2 pop3 pop3pw
-syn keyword pfService pop3s poppassd portmap postgresql postoffice
-syn keyword pfService pptp presence printer prospero prospero-np
-syn keyword pfService puppet pwdgen qotd quote radacct radius
-syn keyword pfService radius-acct rdp readnews remotefs resource rfb
-syn keyword pfService rfe rfs rfs_server ripd ripng rje rkinit rlp
-syn keyword pfService routed router rpc rpcbind rsync rtelnet rtsp
-syn keyword pfService sa-msg-port sane-port sftp shell sieve silc
-syn keyword pfService sink sip smtp smtps smux snmp snmp-trap
-syn keyword pfService snmptrap snpp socks source spamd spamd-cfg
-syn keyword pfService spamd-sync spooler spop3 ssdp ssh submission
-syn keyword pfService sunrpc supdup supfiledbg supfilesrv support
-syn keyword pfService svn svrloc swat syslog syslog-tls systat
-syn keyword pfService tacacs tacas+ talk tap tcpmux telnet tempo
-syn keyword pfService tftp time timed timeserver timserver tsap
-syn keyword pfService ttylink ttytst ub-dns-control ulistserv untp
-syn keyword pfService usenet users uucp uucp-path uucpd vnc vxlan
-syn keyword pfService wais webster who whod whois www x400 x400-snd
-syn keyword pfService xcept xdmcp xmpp-bosh xmpp-client xmpp-server
-syn keyword pfService z3950 zabbix-agent zabbix-trapper zebra
-syn keyword pfService zebrasrv
-
hi def link pfCmd Statement
hi def link pfComment Comment
hi def link pfCont Statement
@@ -103,4 +53,281 @@ hi def link pfVar Identifier
hi def link pfVarAssign Identifier
hi def link pfWildAddr Type
-let b:current_syntax = "pf"
+" from OpenBSD src/etc/services r1.95
+syn keyword pfService 802-11-iapp
+syn keyword pfService Microsoft-SQL-Monitor
+syn keyword pfService Microsoft-SQL-Server
+syn keyword pfService NeXTStep
+syn keyword pfService NextStep
+syn keyword pfService afpovertcp
+syn keyword pfService afs3-bos
+syn keyword pfService afs3-callback
+syn keyword pfService afs3-errors
+syn keyword pfService afs3-fileserver
+syn keyword pfService afs3-kaserver
+syn keyword pfService afs3-prserver
+syn keyword pfService afs3-rmtsys
+syn keyword pfService afs3-update
+syn keyword pfService afs3-vlserver
+syn keyword pfService afs3-volser
+syn keyword pfService amt-redir-tcp
+syn keyword pfService amt-redir-tls
+syn keyword pfService amt-soap-http
+syn keyword pfService amt-soap-https
+syn keyword pfService asf-rmcp
+syn keyword pfService at-echo
+syn keyword pfService at-nbp
+syn keyword pfService at-rtmp
+syn keyword pfService at-zis
+syn keyword pfService auth
+syn keyword pfService authentication
+syn keyword pfService bfd-control
+syn keyword pfService bfd-echo
+syn keyword pfService bftp
+syn keyword pfService bgp
+syn keyword pfService bgpd
+syn keyword pfService biff
+syn keyword pfService bootpc
+syn keyword pfService bootps
+syn keyword pfService canna
+syn keyword pfService cddb
+syn keyword pfService cddbp
+syn keyword pfService chargen
+syn keyword pfService chat
+syn keyword pfService cmd
+syn keyword pfService cmip-agent
+syn keyword pfService cmip-man
+syn keyword pfService comsat
+syn keyword pfService conference
+syn keyword pfService conserver
+syn keyword pfService courier
+syn keyword pfService csnet-ns
+syn keyword pfService cso-ns
+syn keyword pfService cvspserver
+syn keyword pfService daap
+syn keyword pfService datametrics
+syn keyword pfService daytime
+syn keyword pfService dhcpd-sync
+syn keyword pfService dhcpv6-client
+syn keyword pfService dhcpv6-server
+syn keyword pfService discard
+syn keyword pfService domain
+syn keyword pfService echo
+syn keyword pfService efs
+syn keyword pfService eklogin
+syn keyword pfService ekshell
+syn keyword pfService ekshell2
+syn keyword pfService epmap
+syn keyword pfService eppc
+syn keyword pfService exec
+syn keyword pfService finger
+syn keyword pfService ftp
+syn keyword pfService ftp-data
+syn keyword pfService git
+syn keyword pfService gopher
+syn keyword pfService gre-in-udp
+syn keyword pfService gre-udp-dtls
+syn keyword pfService hostname
+syn keyword pfService hostnames
+syn keyword pfService hprop
+syn keyword pfService http
+syn keyword pfService https
+syn keyword pfService hunt
+syn keyword pfService hylafax
+syn keyword pfService iapp
+syn keyword pfService icb
+syn keyword pfService ident
+syn keyword pfService imap
+syn keyword pfService imap2
+syn keyword pfService imap3
+syn keyword pfService imaps
+syn keyword pfService ingreslock
+syn keyword pfService ipp
+syn keyword pfService iprop
+syn keyword pfService ipsec-msft
+syn keyword pfService ipsec-nat-t
+syn keyword pfService ipx
+syn keyword pfService irc
+syn keyword pfService isakmp
+syn keyword pfService iscsi
+syn keyword pfService isisd
+syn keyword pfService iso-tsap
+syn keyword pfService kauth
+syn keyword pfService kdc
+syn keyword pfService kerberos
+syn keyword pfService kerberos-adm
+syn keyword pfService kerberos-iv
+syn keyword pfService kerberos-sec
+syn keyword pfService kerberos_master
+syn keyword pfService kf
+syn keyword pfService kip
+syn keyword pfService klogin
+syn keyword pfService kpasswd
+syn keyword pfService kpop
+syn keyword pfService krb524
+syn keyword pfService krb_prop
+syn keyword pfService krbupdate
+syn keyword pfService krcmd
+syn keyword pfService kreg
+syn keyword pfService kshell
+syn keyword pfService kx
+syn keyword pfService l2tp
+syn keyword pfService ldap
+syn keyword pfService ldaps
+syn keyword pfService ldp
+syn keyword pfService link
+syn keyword pfService login
+syn keyword pfService mail
+syn keyword pfService mdns
+syn keyword pfService mdnsresponder
+syn keyword pfService microsoft-ds
+syn keyword pfService ms-sql-m
+syn keyword pfService ms-sql-s
+syn keyword pfService msa
+syn keyword pfService msp
+syn keyword pfService mtp
+syn keyword pfService mysql
+syn keyword pfService name
+syn keyword pfService nameserver
+syn keyword pfService netbios-dgm
+syn keyword pfService netbios-ns
+syn keyword pfService netbios-ssn
+syn keyword pfService netnews
+syn keyword pfService netplan
+syn keyword pfService netrjs
+syn keyword pfService netstat
+syn keyword pfService netwall
+syn keyword pfService newdate
+syn keyword pfService nextstep
+syn keyword pfService nfs
+syn keyword pfService nfsd
+syn keyword pfService nicname
+syn keyword pfService nnsp
+syn keyword pfService nntp
+syn keyword pfService ntalk
+syn keyword pfService ntp
+syn keyword pfService null
+syn keyword pfService openwebnet
+syn keyword pfService ospf6d
+syn keyword pfService ospfapi
+syn keyword pfService ospfd
+syn keyword pfService photuris
+syn keyword pfService pop2
+syn keyword pfService pop3
+syn keyword pfService pop3pw
+syn keyword pfService pop3s
+syn keyword pfService poppassd
+syn keyword pfService portmap
+syn keyword pfService postgresql
+syn keyword pfService postoffice
+syn keyword pfService pptp
+syn keyword pfService presence
+syn keyword pfService printer
+syn keyword pfService prospero
+syn keyword pfService prospero-np
+syn keyword pfService puppet
+syn keyword pfService pwdgen
+syn keyword pfService qotd
+syn keyword pfService quote
+syn keyword pfService radacct
+syn keyword pfService radius
+syn keyword pfService radius-acct
+syn keyword pfService rdp
+syn keyword pfService readnews
+syn keyword pfService remotefs
+syn keyword pfService resource
+syn keyword pfService rfb
+syn keyword pfService rfe
+syn keyword pfService rfs
+syn keyword pfService rfs_server
+syn keyword pfService ripd
+syn keyword pfService ripng
+syn keyword pfService rje
+syn keyword pfService rkinit
+syn keyword pfService rlp
+syn keyword pfService routed
+syn keyword pfService router
+syn keyword pfService rpc
+syn keyword pfService rpcbind
+syn keyword pfService rsync
+syn keyword pfService rtelnet
+syn keyword pfService rtsp
+syn keyword pfService sa-msg-port
+syn keyword pfService sane-port
+syn keyword pfService sftp
+syn keyword pfService shell
+syn keyword pfService sieve
+syn keyword pfService silc
+syn keyword pfService sink
+syn keyword pfService sip
+syn keyword pfService smtp
+syn keyword pfService smtps
+syn keyword pfService smux
+syn keyword pfService snmp
+syn keyword pfService snmp-trap
+syn keyword pfService snmptrap
+syn keyword pfService snpp
+syn keyword pfService socks
+syn keyword pfService source
+syn keyword pfService spamd
+syn keyword pfService spamd-cfg
+syn keyword pfService spamd-sync
+syn keyword pfService spooler
+syn keyword pfService spop3
+syn keyword pfService ssdp
+syn keyword pfService ssh
+syn keyword pfService submission
+syn keyword pfService sunrpc
+syn keyword pfService supdup
+syn keyword pfService supfiledbg
+syn keyword pfService supfilesrv
+syn keyword pfService support
+syn keyword pfService svn
+syn keyword pfService svrloc
+syn keyword pfService swat
+syn keyword pfService syslog
+syn keyword pfService syslog-tls
+syn keyword pfService systat
+syn keyword pfService tacacs
+syn keyword pfService tacas+
+syn keyword pfService talk
+syn keyword pfService tap
+syn keyword pfService tcpmux
+syn keyword pfService telnet
+syn keyword pfService tempo
+syn keyword pfService tftp
+syn keyword pfService time
+syn keyword pfService timed
+syn keyword pfService timeserver
+syn keyword pfService timserver
+syn keyword pfService tsap
+syn keyword pfService ttylink
+syn keyword pfService ttytst
+syn keyword pfService ub-dns-control
+syn keyword pfService ulistserv
+syn keyword pfService untp
+syn keyword pfService usenet
+syn keyword pfService users
+syn keyword pfService uucp
+syn keyword pfService uucp-path
+syn keyword pfService uucpd
+syn keyword pfService vnc
+syn keyword pfService vxlan
+syn keyword pfService wais
+syn keyword pfService webster
+syn keyword pfService who
+syn keyword pfService whod
+syn keyword pfService whois
+syn keyword pfService www
+syn keyword pfService x400
+syn keyword pfService x400-snd
+syn keyword pfService xcept
+syn keyword pfService xdmcp
+syn keyword pfService xmpp-bosh
+syn keyword pfService xmpp-client
+syn keyword pfService xmpp-server
+syn keyword pfService z3950
+syn keyword pfService zabbix-agent
+syn keyword pfService zabbix-trapper
+syn keyword pfService zebra
+syn keyword pfService zebrasrv
diff --git a/runtime/syntax/sudoers.vim b/runtime/syntax/sudoers.vim
index df1eb99b42..31f5f2b7ed 100644
--- a/runtime/syntax/sudoers.vim
+++ b/runtime/syntax/sudoers.vim
@@ -1,7 +1,8 @@
" Vim syntax file
" Language: sudoers(5) configuration files
" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
-" Latest Revision: 2011-02-24
+" Latest Revision: 2018-07-19
+" Recent Changes: Support for #include and #includedir.
if exists("b:current_syntax")
finish
@@ -24,6 +25,7 @@ syn cluster sudoersCmndSpecList contains=sudoersUserRunasBegin,sudoersPASS
syn keyword sudoersTodo contained TODO FIXME XXX NOTE
syn region sudoersComment display oneline start='#' end='$' contains=sudoersTodo
+syn region sudoersInclude display oneline start='#\(include\|includedir\)' end='$'
syn keyword sudoersAlias User_Alias Runas_Alias nextgroup=sudoersUserAlias skipwhite skipnl
syn keyword sudoersAlias Host_Alias nextgroup=sudoersHostAlias skipwhite skipnl
@@ -335,6 +337,7 @@ hi def link sudoersIntegerValue Number
hi def link sudoersStringValue String
hi def link sudoersListValue String
hi def link sudoersPASSWD Special
+hi def link sudoersInclude Statement
let b:current_syntax = "sudoers"