Markus Mottl avatar Markus Mottl committed c356aa7

Added Vim syntax file for S-expressions

Comments (0)

Files changed (1)


+" Vim syntax file
+" Language:     S-expressions as used in Sexplib
+" Filenames:    *.sexp
+" Maintainers:  Markus Mottl      <>
+" URL:
+" Last Change:  2012 Apr 24 - Added support for new comment styles (MM)
+"               2009 Apr 02 - First release (MM)
+" For version 5.x: Clear all syntax items
+" For version 6.x: Quit when a syntax file was already loaded
+if version < 600
+  syntax clear
+elseif exists("b:current_syntax") && b:current_syntax == "sexplib"
+  finish
+" Sexplib is case sensitive.
+syn case match
+" Comments
+syn keyword  sexplibTodo contained TODO FIXME XXX NOTE
+syn region   sexplibBlockComment matchgroup=sexplibComment start="#|" matchgroup=sexplibComment end="|#" contains=ALLBUT,sexplibQuotedAtom,sexplibUnquotedAtom,sexplibEncl
+syn match    sexplibSexpComment "#;" skipwhite skipempty nextgroup=sexplibQuotedAtomComment,sexplibUnquotedAtomComment,sexplibListComment,sexplibComment
+syn region   sexplibQuotedAtomComment start=+"+ skip=+\\\\\|\\"+ end=+"+ contained
+syn match    sexplibUnquotedAtomComment /\([^;()" \t#|]\|#[^;()" \t|]\||[^;()" \t#]\)[^;()" \t]*/ contained
+syn region   sexplibListComment matchgroup=sexplibComment start="(" matchgroup=sexplibComment end=")" contained contains=ALLBUT,sexplibEncl,sexplibString,sexplibQuotedAtom,sexplibUnquotedAtom,sexplibTodo,sexplibNumber,sexplibFloat
+syn match    sexplibComment ";.*" contains=sexplibTodo
+" Atoms
+syn match    sexplibUnquotedAtom /\([^;()" \t#|]\|#[^;()" \t|]\||[^;()" \t#]\)[^;()" \t]*/
+syn region   sexplibQuotedAtom    start=+"+ skip=+\\\\\|\\"+ end=+"+
+syn match    sexplibNumber        "\<-\=\d\(_\|\d\)*[l|L|n]\?\>"
+syn match    sexplibNumber        "\<-\=0[x|X]\(\x\|_\)\+[l|L|n]\?\>"
+syn match    sexplibNumber        "\<-\=0[o|O]\(\o\|_\)\+[l|L|n]\?\>"
+syn match    sexplibNumber        "\<-\=0[b|B]\([01]\|_\)\+[l|L|n]\?\>"
+syn match    sexplibFloat         "\<-\=\d\(_\|\d\)*\.\?\(_\|\d\)*\([eE][-+]\=\d\(_\|\d\)*\)\=\>"
+" Lists
+syn region   sexplibEncl transparent matchgroup=sexplibEncl start="(" matchgroup=sexplibEncl end=")" contains=ALLBUT,sexplibParenErr
+" Errors
+syn match    sexplibUnquotedAtomErr /\([^;()" \t#|]\|#[^;()" \t|]\||[^;()" \t#]\)[^;()" \t]*\(#|\||#\)[^;()" \t]*/
+syn match    sexplibParenErr ")"
+" Synchronization
+syn sync minlines=50
+syn sync maxlines=500
+" Define the default highlighting.
+" For version 5.7 and earlier: only when not done already
+" For version 5.8 and later: only when an item doesn't have highlighting yet
+if version >= 508 || !exists("did_sexplib_syntax_inits")
+  if version < 508
+    let did_sexplib_syntax_inits = 1
+    command -nargs=+ HiLink hi link <args>
+  else
+    command -nargs=+ HiLink hi def link <args>
+  endif
+  HiLink sexplibParenErr            Error
+  HiLink sexplibUnquotedAtomErr     Error
+  HiLink sexplibComment             Comment
+  HiLink sexplibSexpComment         Comment
+  HiLink sexplibQuotedAtomComment   Include
+  HiLink sexplibUnquotedAtomComment Comment
+  HiLink sexplibBlockComment        Comment
+  HiLink sexplibListComment         Comment
+  HiLink sexplibBoolean             Boolean
+  HiLink sexplibCharacter           Character
+  HiLink sexplibNumber              Number
+  HiLink sexplibFloat               Float
+  HiLink sexplibUnquotedAtom        Identifier
+  HiLink sexplibEncl                Identifier
+  HiLink sexplibQuotedAtom          Keyword
+  HiLink sexplibTodo                Todo
+  HiLink sexplibEncl                Keyword
+  delcommand HiLink
+let b:current_syntax = "sexplib"
+" vim: ts=8
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.