[PATCH] Contrib: vim syntax, support block region
othree
othree at gmail.com
Sat Mar 4 11:59:31 UTC 2017
# HG changeset patch
# User othree <othree at gmail.com>
# Date 1488628696 -28800
# Sat Mar 04 19:58:16 2017 +0800
# Node ID a244d5f635ebf90cd30c42f826810b9bf5d53f3c
# Parent 7fca6f60d5cafa0127b5bc4d6b74fcd06ab532a3
Contrib: vim syntax, support block region.
diff --git a/contrib/vim/syntax/nginx.vim b/contrib/vim/syntax/nginx.vim
--- a/contrib/vim/syntax/nginx.vim
+++ b/contrib/vim/syntax/nginx.vim
@@ -4,43 +4,66 @@
if exists("b:current_syntax")
finish
end
setlocal iskeyword+=.
setlocal iskeyword+=/
setlocal iskeyword+=:
-syn match ngxVariable '\$\(\w\+\|{\w\+}\)'
-syn match ngxVariableBlock '\$\(\w\+\|{\w\+}\)' contained
-syn match ngxVariableString '\$\(\w\+\|{\w\+}\)' contained
-syn region ngxBlock start=+^+ end=+{+ skip=+\${+ contains=ngxComment,ngxDirectiveBlock,ngxVariableBlock,ngxString oneline
-syn region ngxString start=+[^:a-zA-Z>!\\@]\z(["']\)+lc=1 end=+\z1+ skip=+\\\\\|\\\z1+ contains=ngxVariableString
-syn match ngxComment ' *#.*$'
+syn match ngxVariable '\$\(\w\+\|{\w\+}\)'
+syn match ngxVariableString '\$\(\w\+\|{\w\+}\)' contained
+
+syn region ngxString start=+\%(^\|\s\)\zs\z(["']\)+ end=+\z1+ skip=+\\\\\|\\\z1+ contains=ngxVariableString
+syn region ngxComment start=+\%(^\|\s\)\zs#+ end=+$+ oneline
syn keyword ngxBoolean on
syn keyword ngxBoolean off
-syn keyword ngxDirectiveBlock http contained
-syn keyword ngxDirectiveBlock mail contained
-syn keyword ngxDirectiveBlock events contained
-syn keyword ngxDirectiveBlock server contained
-syn keyword ngxDirectiveBlock types contained
-syn keyword ngxDirectiveBlock location contained
-syn keyword ngxDirectiveBlock upstream contained
-syn keyword ngxDirectiveBlock charset_map contained
-syn keyword ngxDirectiveBlock limit_except contained
-syn keyword ngxDirectiveBlock if contained
-syn keyword ngxDirectiveBlock geo contained
-syn keyword ngxDirectiveBlock map contained
-syn keyword ngxDirectiveBlock split_clients contained
+syn match ngxDirectiveBlockParams /\S\+/ contains=ngxVariableString contained nextgroup=ngxDirectiveBlockParams,ngxBlock skipwhite skipempty
+syn match ngxDirectiveBlockParam1 /\S\+/ contains=ngxVariableString contained nextgroup=ngxDirectiveBlockParam2 skipwhite skipempty
+syn match ngxDirectiveBlockParam2 /\S\+/ contains=ngxVariableString contained nextgroup=ngxBlock skipwhite skipempty
+syn region ngxDirectiveBlockParams start=+\%(^\|\s\)\zs\z(["']\)+ end=+\z1+ skip=+\\\\\|\\\z1+ contains=ngxVariableString contained nextgroup=ngxDirectiveBlockParams,ngxBlock skipwhite skipempty
+syn region ngxDirectiveBlockParam1 start=+\%(^\|\s\)\zs\z(["']\)+ end=+\z1+ skip=+\\\\\|\\\z1+ contains=ngxVariableString contained nextgroup=ngxDirectiveBlockParam2 skipwhite skipempty
+syn region ngxDirectiveBlockParam2 start=+\%(^\|\s\)\zs\z(["']\)+ end=+\z1+ skip=+\\\\\|\\\z1+ contains=ngxVariableString contained nextgroup=ngxBlock skipwhite skipempty
+
+syn cluster ngxDirectives contains=ngxDirectiveBlock,ngxDirectiveImportant,ngxDirectiveControl,ngxDirectiveError,ngxDirectiveDeprecated,ngxDirective,ngxDirectiveThirdParty
+syn cluster ngxBlockDirectives contains=@ngxDirectives,ngxReservedMainContextDirective
+syn cluster ngxBlockElements contains=@ngxBlockDirectives,ngxVariable,ngxString,ngxComment,ngxBoolean
+
+syn region ngxBlock start=+{+ end=+}+ contained contains=@ngxBlockElements
+syn region ngxServerBlock start=+{+ end=+}+ contained contains=@ngxBlockElements,ngxReservedServerContextDirective
+syn region ngxUpstreamBlock start=+{+ end=+}+ contained contains=@ngxBlockElements,ngxDirectiveServer
+
+syn keyword ngxDirectiveBlock http nextgroup=ngxBlock skipwhite skipempty
+syn keyword ngxDirectiveBlock mail nextgroup=ngxBlock skipwhite skipempty
+syn keyword ngxDirectiveBlock events nextgroup=ngxBlock skipwhite skipempty
+syn keyword ngxDirectiveBlock server nextgroup=ngxServerBlock skipwhite skipempty
+syn keyword ngxDirectiveBlock types nextgroup=ngxBlock skipwhite skipempty
+
+syn match ngxLocationPath /\S\+/ contained nextgroup=ngxBlock skipwhite skipempty
+syn region ngxLocationPath start=+\%(^\|\s\)\zs\z(["']\)+lc=1 end=+\z1+ skip=+\\\\\|\\\z1+ contains=ngxVariableString contained nextgroup=ngxBlock skipwhite skipempty
+syn match ngxLocationOperator /\(=\|\~\*\|\^\~\|\~\)/ contained nextgroup=ngxLocationPath skipwhite skipempty
+syn match ngxLocationNamedLoc /@\w\+/
+syn keyword ngxDirectiveBlock location nextgroup=ngxLocationNamedLoc,ngxLocationOperator,ngxLocationPath,ngxString skipwhite skipempty
+
+syn keyword ngxDirectiveBlock upstream nextgroup=ngxUpstreamBlock skipwhite skipempty
+syn keyword ngxDirectiveBlock charset_map nextgroup=ngxDirectiveBlockParam1 skipwhite skipempty
+syn keyword ngxDirectiveBlock limit_except nextgroup=ngxDirectiveBlockParams skipwhite skipempty
+syn keyword ngxDirectiveBlock if nextgroup=ngxBlock skipwhite skipempty
+syn keyword ngxDirectiveBlock geo nextgroup=ngxBlock skipwhite skipempty
+syn keyword ngxDirectiveBlock map nextgroup=ngxDirectiveBlockParam1 skipwhite skipempty
+syn keyword ngxDirectiveBlock split_clients nextgroup=ngxDirectiveBlockParam1 skipwhite skipempty
+
+syn keyword ngxReservedMainContextDirective http contained
+syn keyword ngxReservedServerContextDirective server contained
syn keyword ngxDirectiveImportant include
syn keyword ngxDirectiveImportant root
-syn keyword ngxDirectiveImportant server
+syn keyword ngxDirectiveServer server contained
syn keyword ngxDirectiveImportant server_name
syn keyword ngxDirectiveImportant listen contained
syn region ngxDirectiveImportantListen matchgroup=ngxDirectiveImportant start=+listen+ skip=+\\\\\|\\\;+ end=+;+he=e-1 contains=ngxListenOptions,ngxString
syn keyword ngxDirectiveImportant internal
syn keyword ngxDirectiveImportant proxy_pass
syn keyword ngxDirectiveImportant memcached_pass
syn keyword ngxDirectiveImportant fastcgi_pass
syn keyword ngxDirectiveImportant scgi_pass
@@ -2118,24 +2141,26 @@ syn keyword ngxDirectiveThirdParty xss_i
" ZIP Module <https://www.nginx.com/resources/wiki/modules/zip/>
" ZIP archiver for nginx
" highlight
hi link ngxComment Comment
hi link ngxVariable Identifier
-hi link ngxVariableBlock Identifier
hi link ngxVariableString PreProc
-hi link ngxBlock Normal
hi link ngxString String
+hi link ngxLocationOperator Operator
+hi link ngxLocationPath String
+hi link ngxLocationNamedLoc Identifier
hi link ngxBoolean Boolean
hi link ngxDirectiveBlock Statement
hi link ngxDirectiveImportant Type
+hi link ngxDirectiveServer ngxDirectiveImportant
hi link ngxDirectiveControl Keyword
hi link ngxDirectiveError Constant
hi link ngxDirectiveDeprecated Error
hi link ngxDirective Identifier
hi link ngxDirectiveThirdParty Special
hi link ngxListenOptions Keyword
hi link ngxMailProtocol Keyword
More information about the nginx-devel
mailing list