Hi Dounin Do you have any idea about this implementation for ngxBlock. If you think this approach is ok. I will keep going in this direction. And send more robust(maybe) patch later.
2017-03-04 19:59 GMT+08:00 othree <oth...@gmail.com>: > # HG changeset patch > # User othree <oth...@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 -- OOO _______________________________________________ nginx-devel mailing list nginx-devel@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-devel