From 5cd9f7d06c877306609ad0575beccee673286731 Mon Sep 17 00:00:00 2001 From: Joel Holdbrooks Date: Fri, 8 Mar 2013 17:57:05 -0800 Subject: [PATCH 1/3] Add new syntax match group "clojureStringEscape" Allow for highlighting of escape characters contained within clojureString. Also, update clojureCharacter to support all unicode values. --- syntax/clojure.vim | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/syntax/clojure.vim b/syntax/clojure.vim index 51b25b2..2a36dae 100644 --- a/syntax/clojure.vim +++ b/syntax/clojure.vim @@ -34,10 +34,13 @@ syntax keyword clojureVariable *1 *2 *3 *agent* *allow-unresolved-vars* *assert* " * Must not contain any reader metacharacters except for ' and # syntax match clojureKeyword "\v<:{1,2}%([^ \n\r\t()\[\]{}";@^`~\\%/]+/)*[^ \n\r\t()\[\]{}";@^`~\\%/]+:@" -syntax region clojureString start=/L\="/ skip=/\\\\\|\\"/ end=/"/ +syntax match clojureStringEscape "\\\\\|\\[btnfr"]\|\\u[0-9a-fA-F]\{4\}" contained + +syntax region clojureString start=/L\="/ skip=/\\\\\|\\"/ end=/"/ contains=clojureStringEscape syntax match clojureCharacter "\\." syntax match clojureCharacter "\\o\o\{3\}" +syntax match clojureCharacter "\\u[0-9a-fA-F]\{4\}" syntax match clojureCharacter "\\u\d\{4\}" syntax match clojureCharacter "\\space" syntax match clojureCharacter "\\tab" @@ -88,13 +91,14 @@ syntax match clojureError "]\|}\|)" syntax sync fromstart -highlight default link clojureConstant Constant -highlight default link clojureBoolean Boolean -highlight default link clojureCharacter Character -highlight default link clojureKeyword Keyword -highlight default link clojureNumber Number -highlight default link clojureString String -highlight default link clojureRegexp Constant +highlight default link clojureConstant Constant +highlight default link clojureBoolean Boolean +highlight default link clojureCharacter Character +highlight default link clojureKeyword Keyword +highlight default link clojureNumber Number +highlight default link clojureString String +highlight default link clojureStringEscape Character +highlight default link clojureRegexp Constant highlight default link clojureVariable Identifier highlight default link clojureCond Conditional From befb009aedcdc402350784f6f0bfcee11293260d Mon Sep 17 00:00:00 2001 From: Joel Holdbrooks Date: Sat, 9 Mar 2013 17:29:43 -0800 Subject: [PATCH 2/3] Create comprehensive regular expression syntax groups --- syntax/clojure.vim | 56 +++++++++++++++++++++++++++++++++++++--------- 1 file changed, 46 insertions(+), 10 deletions(-) diff --git a/syntax/clojure.vim b/syntax/clojure.vim index d3a4638..d46e7aa 100644 --- a/syntax/clojure.vim +++ b/syntax/clojure.vim @@ -34,14 +34,13 @@ syntax keyword clojureVariable *1 *2 *3 *agent* *allow-unresolved-vars* *assert* " * Must not contain any reader metacharacters except for ' and # syntax match clojureKeyword "\v<:{1,2}%([^ \n\r\t()\[\]{}";@^`~\\%/]+/)*[^ \n\r\t()\[\]{}";@^`~\\%/]+:@" -syntax match clojureStringEscape "\\\\\|\\[btnfr"]\|\\u[0-9a-fA-F]\{4\}" contained +syntax match clojureStringEscape "\v\\%([\\btnfr"]|u\x{4}|[0-3]\o{2}|\o{1,2})" contained -syntax region clojureString start=/L\="/ skip=/\\\\\|\\"/ end=/"/ contains=clojureStringEscape +syntax region clojureString start=/"/ skip=/\\"/ end=/"/ contains=clojureStringEscape syntax match clojureCharacter "\\." -syntax match clojureCharacter "\\o\o\{3\}" -syntax match clojureCharacter "\\u[0-9a-fA-F]\{4\}" -syntax match clojureCharacter "\\u\d\{4\}" +syntax match clojureCharacter "\\o\%([0-3]\o\{2\}\|\o\{1,2\}\)" +syntax match clojureCharacter "\\u\x\{4\}" syntax match clojureCharacter "\\space" syntax match clojureCharacter "\\tab" syntax match clojureCharacter "\\newline" @@ -55,10 +54,12 @@ for s:radix in range(2, 36) endfor unlet! s:radix_chars s:radix -syntax match clojureNumber "\<-\=\d\+\(\.\d*\)\=\(M\|\([eE][-+]\?\d\+\)\)\?\>" -syntax match clojureNumber "\<-\=\d\+N\?\>" -syntax match clojureNumber "\<-\=0x\x\+\>" -syntax match clojureNumber "\<-\=\d\+/\d\+\>" +syntax match clojureSymbol "\v([a-zA-Z!$&*_+=|<.>?-]|[^\x00-\x7F])+(:?([a-zA-Z0-9!#$%&*_+=|'<.>/?-]|[^\x00-\x7F]))*[#:]@" +syntax match clojureNumber "\<[-+]\=\d\+N\?\>" +syntax match clojureNumber "\<[-+]\=0x\x\+\>" +syntax match clojureNumber "\<[-+]\=\d\+/\d\+\>" syntax match clojureVarArg "&" @@ -73,7 +74,31 @@ syntax match clojureDispatch "\v#[\^'=<_]?" " Clojure permits no more than 20 params. syntax match clojureAnonArg "%\(20\|1\d\|[1-9]\|&\)\?" -syntax match clojureSymbol "\v([a-zA-Z!$&*_+=|<.>?-]|[^\x00-\x7F])+(:?([a-zA-Z0-9!#$%&*_+=|'<.>?-]|[^\x00-\x7F]))*[#:]@)" contained +" Mode modifiers, mode-modified spans, lookaround, regular and atomic +" grouping, and named-capturing. +syntax match clojureRegexpMod "\v\(@<=\?[xdsmiu]?:?" contained +syntax match clojureRegexpMod "\v\(@<=\?[=!>]" contained +syntax match clojureRegexpMod "\v\(@<=\?\<[a-zA-Z]+\>" contained + +syntax region clojureRegexpGroup start="\\\@ Date: Sat, 9 Mar 2013 18:04:26 -0800 Subject: [PATCH 3/3] Correction to clojureRegexpBoundary --- syntax/clojure.vim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/syntax/clojure.vim b/syntax/clojure.vim index d46e7aa..7a33494 100644 --- a/syntax/clojure.vim +++ b/syntax/clojure.vim @@ -84,7 +84,7 @@ syntax region clojureRegexpCharClass start="\\\@