.gitignore added
[dotfiles/.git] / .config / coc / extensions / node_modules / coc-snippets / syntax / snippets.vim
diff --git a/.config/coc/extensions/node_modules/coc-snippets/syntax/snippets.vim b/.config/coc/extensions/node_modules/coc-snippets/syntax/snippets.vim
new file mode 100644 (file)
index 0000000..acd6403
--- /dev/null
@@ -0,0 +1,234 @@
+" Syntax highlighting for snippet files (used for UltiSnips.vim)
+" Revision: 26/03/11 19:53:33
+
+if exists("b:current_syntax")
+  finish
+endif
+
+if expand("%:p:h") =~ "snippets" && search("^endsnippet", "nw") == 0
+            \ && !exists("b:ultisnips_override_snipmate")
+    " this appears to be a snipmate file
+    " It's in a directory called snippets/ and there's no endsnippet keyword
+    " anywhere in the file.
+    source <sfile>:h/snippets_snipmate.vim
+    finish
+endif
+
+" Embedded Syntaxes {{{1
+
+try
+   syntax include @Python syntax/python.vim
+   unlet b:current_syntax
+   syntax include @Viml syntax/vim.vim
+   unlet b:current_syntax
+   syntax include @Shell syntax/sh.vim
+   unlet b:current_syntax
+catch /E403/
+   " Ignore errors about syntax files that can't be loaded more than once
+endtry
+
+" Syntax definitions {{{1
+
+" Comments {{{2
+
+syn match snipComment "^#.*" contains=snipTODO display
+syn keyword snipTODO contained display FIXME NOTE NOTES TODO XXX
+
+" Errors {{{2
+
+syn match snipLeadingSpaces "^\t* \+" contained
+
+" Extends {{{2
+
+syn match snipExtends "^extends\%(\s.*\|$\)" contains=snipExtendsKeyword display
+syn match snipExtendsKeyword "^extends" contained display
+
+" Definitions {{{2
+
+" snippet {{{3
+
+syn region snipSnippet start="^snippet\_s" end="^endsnippet\s*$" contains=snipSnippetHeader fold keepend
+syn match snipSnippetHeader "^.*$" nextgroup=snipSnippetBody,snipSnippetFooter skipnl contained contains=snipSnippetHeaderKeyword
+syn match snipSnippetHeaderKeyword "^snippet" contained nextgroup=snipSnippetTrigger skipwhite
+syn region snipSnippetBody start="\_." end="^\zeendsnippet\s*$" contained nextgroup=snipSnippetFooter contains=snipLeadingSpaces,@snipTokens
+syn match snipSnippetFooter "^endsnippet.*" contained contains=snipSnippetFooterKeyword
+syn match snipSnippetFooterKeyword "^endsnippet" contained
+
+" The current parser is a bit lax about parsing. For example, given this:
+"   snippet foo"bar"
+" it treats `foo"bar"` as the trigger. But with this:
+"   snippet foo"bar baz"
+" it treats `foo` as the trigger and "bar baz" as the description.
+" I think this is an accident. Instead, we'll assume the description must
+" be surrounded by spaces. That means we'll treat
+"   snippet foo"bar"
+" as a trigger `foo"bar"` and
+"   snippet foo"bar baz"
+" as an attempted multiword snippet `foo"bar baz"` that is invalid.
+" NB: UltiSnips parses right-to-left, which Vim doesn't support, so that makes
+" the following patterns very complicated.
+syn match snipSnippetTrigger "\S\+" contained nextgroup=snipSnippetDocString,snipSnippetTriggerInvalid skipwhite
+" We want to match a trailing " as the start of a doc comment, but we also
+" want to allow for using " as the delimiter in a multiword/pattern snippet.
+" So we have to define this twice, once in the general case that matches a
+" trailing " as the doc comment, and once for the case of the multiword
+" delimiter using " that has more constraints
+syn match snipSnippetTrigger ,".\{-}"\ze\%(\s\+"\%(\s*\S\)\@=[^"]*\%("\s\+[^"[:space:]]\+\|"\)\=\)\=\s*$, contained nextgroup=snipSnippetDocString skipwhite
+syn match snipSnippetTrigger ,\%(\(\S\).\{-}\1\|\S\+\)\ze\%(\s\+"[^"]*\%("\s\+\%("[^"]\+"\s\+[^"[:space:]]*e[^"[:space:]]*\)\|"\)\=\)\=\s*$, contained nextgroup=snipSnippetDocContextString skipwhite
+syn match snipSnippetTrigger ,\([^"[:space:]]\).\{-}\1\%(\s*$\)\@!\ze\%(\s\+"[^"]*\%("\s\+\%("[^"]\+"\s\+[^"[:space:]]*e[^"[:space:]]*\|[^"[:space:]]\+\)\|"\)\=\)\=\s*$, contained nextgroup=snipSnippetDocString skipwhite
+syn match snipSnippetTriggerInvalid ,\S\@=.\{-}\S\ze\%(\s\+"[^"]*\%("\s\+[^"[:space:]]\+\s*\|"\s*\)\=\|\s*\)$, contained nextgroup=snipSnippetDocString skipwhite
+syn match snipSnippetDocString ,"[^"]*", contained nextgroup=snipSnippetOptions skipwhite
+syn match snipSnippetDocContextString ,"[^"]*", contained nextgroup=snipSnippetContext skipwhite
+syn match snipSnippetContext ,"[^"]\+", contained skipwhite contains=snipSnippetContextP
+syn region snipSnippetContextP start=,"\@<=., end=,\ze", contained contains=@Python nextgroup=snipSnippetOptions skipwhite keepend
+syn match snipSnippetOptions ,\S\+, contained contains=snipSnippetOptionFlag
+syn match snipSnippetOptionFlag ,[biwrtsmxAe], contained
+
+" Command substitution {{{4
+
+syn region snipCommand keepend matchgroup=snipCommandDelim start="`" skip="\\[{}\\$`]" end="`" contained contains=snipPythonCommand,snipVimLCommand,snipShellCommand,snipCommandSyntaxOverride
+syn region snipShellCommand start="\ze\_." skip="\\[{}\\$`]" end="\ze`" contained contains=@Shell
+syn region snipPythonCommand matchgroup=snipPythonCommandP start="`\@<=!p\_s" skip="\\[{}\\$`]" end="\ze`" contained contains=@Python
+syn region snipVimLCommand matchgroup=snipVimLCommandV start="`\@<=!v\_s" skip="\\[{}\\$`]" end="\ze`" contained contains=@Viml
+syn cluster snipTokens add=snipCommand
+syn cluster snipTabStopTokens add=snipCommand
+
+" unfortunately due to the balanced braces parsing of commands, if a { occurs
+" in the command, we need to prevent the embedded syntax highlighting.
+" Otherwise, we can't track the balanced braces properly.
+
+syn region snipCommandSyntaxOverride start="\%(\\[{}\\$`]\|\_[^`"{]\)*\ze{" skip="\\[{}\\$`]" end="\ze`" contained contains=snipBalancedBraces transparent
+
+" Tab Stops {{{4
+
+syn match snipEscape "\\[{}\\$`]" contained
+syn cluster snipTokens add=snipEscape
+syn cluster snipTabStopTokens add=snipEscape
+
+syn match snipMirror "\$\d\+" contained
+syn cluster snipTokens add=snipMirror
+syn cluster snipTabStopTokens add=snipMirror
+
+syn region snipTabStop matchgroup=snipTabStop start="\${\d\+[:}]\@=" end="}" contained contains=snipTabStopDefault extend
+syn region snipTabStopDefault matchgroup=snipTabStop start=":" skip="\\[{}]" end="\ze}" contained contains=snipTabStopEscape,snipBalancedBraces,@snipTabStopTokens keepend
+syn match snipTabStopEscape "\\[{}]" contained
+syn region snipBalancedBraces start="{" end="}" contained transparent extend
+syn cluster snipTokens add=snipTabStop
+syn cluster snipTabStopTokens add=snipTabStop
+
+syn region snipVisual matchgroup=snipVisual start="\${VISUAL[:}/]\@=" end="}" contained contains=snipVisualDefault,snipTransformationPattern extend
+syn region snipVisualDefault matchgroup=snipVisual start=":" end="\ze[}/]" contained contains=snipTabStopEscape nextgroup=snipTransformationPattern
+syn cluster snipTokens add=snipVisual
+syn cluster snipTabStopTokens add=snipVisual
+
+syn region snipTransformation matchgroup=snipTransformation start="\${\d\/\@=" end="}" contained contains=snipTransformationPattern
+syn region snipTransformationPattern matchgroup=snipTransformationPatternDelim start="/" end="\ze/" contained contains=snipTransformationEscape nextgroup=snipTransformationReplace skipnl
+syn region snipTransformationReplace matchgroup=snipTransformationPatternDelim start="/" end="/" contained contains=snipTransformationEscape nextgroup=snipTransformationOptions skipnl
+syn region snipTransformationOptions start="\ze[^}]" end="\ze}" contained contains=snipTabStopEscape
+syn match snipTransformationEscape "\\/" contained
+syn cluster snipTokens add=snipTransformation
+syn cluster snipTabStopTokens add=snipTransformation
+
+" global {{{3
+
+" Generic (non-Python) {{{4
+
+syn region snipGlobal start="^global\_s" end="^\zeendglobal\s*$" contains=snipGlobalHeader nextgroup=snipGlobalFooter fold keepend
+syn match snipGlobalHeader "^.*$" nextgroup=snipGlobalBody,snipGlobalFooter skipnl contained contains=snipGlobalHeaderKeyword
+syn region snipGlobalBody start="\_." end="^\zeendglobal\s*$" contained contains=snipLeadingSpaces
+
+" Python (!p) {{{4
+
+syn region snipGlobal start=,^global\s\+!p\%(\s\+"[^"]*\%("\s\+[^"[:space:]]\+\|"\)\=\)\=\s*$, end=,^\zeendglobal\s*$, contains=snipGlobalPHeader nextgroup=snipGlobalFooter fold keepend
+syn match snipGlobalPHeader "^.*$" nextgroup=snipGlobalPBody,snipGlobalFooter skipnl contained contains=snipGlobalHeaderKeyword
+syn match snipGlobalHeaderKeyword "^global" contained nextgroup=snipSnippetTrigger skipwhite
+syn region snipGlobalPBody start="\_." end="^\zeendglobal\s*$" contained contains=@Python
+
+" Common {{{4
+
+syn match snipGlobalFooter "^endglobal.*" contained contains=snipGlobalFooterKeyword
+syn match snipGlobalFooterKeyword "^endglobal" contained
+
+" priority {{{3
+
+syn match snipPriority "^priority\%(\s.*\|$\)" contains=snipPriorityKeyword display
+syn match snipPriorityKeyword "^priority" contained nextgroup=snipPriorityValue skipwhite display
+syn match snipPriorityValue "-\?\d\+" contained display
+
+" context {{{3
+
+syn match snipContext "^context.*$" contains=snipContextKeyword display skipwhite
+syn match snipContextKeyword "context" contained nextgroup=snipContextValue skipwhite display
+syn match snipContextValue '"[^"]*"' contained contains=snipContextValueP
+syn region snipContextValueP start=,"\@<=., end=,\ze", contained contains=@Python skipwhite keepend
+
+" Actions {{{3
+
+syn match snipAction "^\%(pre_expand\|post_expand\|post_jump\).*$" contains=snipActionKeyword display skipwhite
+syn match snipActionKeyword "\%(pre_expand\|post_expand\|post_jump\)" contained nextgroup=snipActionValue skipwhite display
+syn match snipActionValue '"[^"]*"' contained contains=snipActionValueP
+syn region snipActionValueP start=,"\@<=., end=,\ze", contained contains=@Python skipwhite keepend
+
+" Snippt Clearing {{{2
+
+syn match snipClear "^clearsnippets\%(\s.*\|$\)" contains=snipClearKeyword display
+syn match snipClearKeyword "^clearsnippets" contained display
+
+" Highlight groups {{{1
+
+hi def link snipComment          Comment
+hi def link snipTODO             Todo
+hi def snipLeadingSpaces term=reverse ctermfg=15 ctermbg=4 gui=reverse guifg=#dc322f
+
+hi def link snipKeyword          Keyword
+
+hi def link snipExtendsKeyword   snipKeyword
+
+hi def link snipSnippetHeaderKeyword snipKeyword
+hi def link snipSnippetFooterKeyword snipKeyword
+
+hi def link snipSnippetTrigger        Identifier
+hi def link snipSnippetTriggerInvalid Error
+hi def link snipSnippetDocString      String
+hi def link snipSnippetDocContextString String
+hi def link snipSnippetOptionFlag     Special
+
+hi def link snipGlobalHeaderKeyword  snipKeyword
+hi def link snipGlobalFooterKeyword  snipKeyword
+
+hi def link snipCommand          Special
+hi def link snipCommandDelim     snipCommand
+hi def link snipShellCommand     snipCommand
+hi def link snipVimLCommand      snipCommand
+hi def link snipPythonCommandP   PreProc
+hi def link snipVimLCommandV     PreProc
+hi def link snipSnippetContext   String
+hi def link snipContext          String
+hi def link snipAction           String
+
+hi def link snipEscape                     Special
+hi def link snipMirror                     StorageClass
+hi def link snipTabStop                    Define
+hi def link snipTabStopDefault             String
+hi def link snipTabStopEscape              Special
+hi def link snipVisual                     snipTabStop
+hi def link snipVisualDefault              snipTabStopDefault
+hi def link snipTransformation             snipTabStop
+hi def link snipTransformationPattern      String
+hi def link snipTransformationPatternDelim Operator
+hi def link snipTransformationReplace      String
+hi def link snipTransformationEscape       snipEscape
+hi def link snipTransformationOptions      Operator
+
+hi def link snipContextKeyword  Keyword
+
+hi def link snipPriorityKeyword  Keyword
+hi def link snipPriorityValue    Number
+
+hi def link snipActionKeyword  Keyword
+
+hi def link snipClearKeyword     Keyword
+
+" }}}1
+
+let b:current_syntax = "snippets"