summaryrefslogtreecommitdiffstats
path: root/misc
diff options
context:
space:
mode:
authorMathias Stearn <redbeard0531@gmail.com>2017-11-09 17:00:04 (GMT)
committerMathias Stearn <redbeard0531@gmail.com>2017-11-09 17:00:04 (GMT)
commitbff884d550cdd4479b3a9aea29ebb0e9ff106e80 (patch)
treeb87e670fe9ae73a0637c6c7ea92307bace7ae3e3 /misc
parente234a7bdb6c42f4539c0ab09b624f191287c2c10 (diff)
downloadNinja-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.vim14
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()