diff options
author | Mathias Stearn <redbeard0531@gmail.com> | 2017-11-09 17:00:04 (GMT) |
---|---|---|
committer | Mathias Stearn <redbeard0531@gmail.com> | 2017-11-09 17:00:04 (GMT) |
commit | bff884d550cdd4479b3a9aea29ebb0e9ff106e80 (patch) | |
tree | b87e670fe9ae73a0637c6c7ea92307bace7ae3e3 /misc | |
parent | e234a7bdb6c42f4539c0ab09b624f191287c2c10 (diff) | |
download | Ninja-bff884d550cdd4479b3a9aea29ebb0e9ff106e80.zip Ninja-bff884d550cdd4479b3a9aea29ebb0e9ff106e80.tar.gz Ninja-bff884d550cdd4479b3a9aea29ebb0e9ff106e80.tar.bz2 |
Improve vim syntax definition
Only highlights comments where the ninja lexer would treat them as such.
Also correctly scopes the rule- and pool-specific variables highlighting.
Diffstat (limited to 'misc')
-rw-r--r-- | misc/ninja.vim | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/misc/ninja.vim b/misc/ninja.vim index 190d9ce..6912d0d 100644 --- a/misc/ninja.vim +++ b/misc/ninja.vim @@ -21,7 +21,10 @@ set cpo&vim syn case match -syn match ninjaComment /#.*/ contains=@Spell +" Comments are only matched when the # is at the beginning of the line (with +" optional whitespace), as long as the prior line didn't end with a $ +" continuation. +syn match ninjaComment /\(\$\n\)\@<!\_^\s*#.*$/ contains=@Spell " Toplevel statements are the ones listed here and " toplevel variable assignments (ident '=' value). @@ -38,12 +41,13 @@ syn match ninjaKeyword "^subninja\>" " limited set of magic variables, 'build' allows general " let assignments. " manifest_parser.cc, ParseRule() -syn region ninjaRule start="^rule" end="^\ze\S" contains=ALL transparent -syn keyword ninjaRuleCommand contained command deps depfile description generator +syn region ninjaRule start="^rule" end="^\ze\S" contains=TOP transparent +syn keyword ninjaRuleCommand contained containedin=ninjaRule command + \ deps depfile description generator \ pool restat rspfile rspfile_content -syn region ninjaPool start="^pool" end="^\ze\S" contains=ALL transparent -syn keyword ninjaPoolCommand contained depth +syn region ninjaPool start="^pool" end="^\ze\S" contains=TOP transparent +syn keyword ninjaPoolCommand contained containedin=ninjaPool depth " Strings are parsed as follows: " lexer.in.cc, ReadEvalString() |