diff --git a/syntax/clojure.vim b/syntax/clojure.vim index 9dd929c..7a33494 100644 --- a/syntax/clojure.vim +++ b/syntax/clojure.vim @@ -37,7 +37,6 @@ syntax match clojureKeyword "\v<:{1,2}%([^ \n\r\t()\[\]{}";@^`~\\%/]+/)*[^ \n\r\ syntax match clojureStringEscape "\v\\%([\\btnfr"]|u\x{4}|[0-3]\o{2}|\o{1,2})" contained syntax region clojureString start=/"/ skip=/\\"/ end=/"/ contains=clojureStringEscape -syntax region clojureRegexp start=/\#"/ skip=/\\"/ end=/"/ syntax match clojureCharacter "\\." syntax match clojureCharacter "\\o\%([0-3]\o\{2\}\|\o\{1,2\}\)" @@ -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="\\\@