neovim

Neovim text editor
git clone https://git.dasho.dev/neovim.git
Log | Files | Refs | README

sexplib.vim (3685B)


      1 " Vim syntax file
      2 " Language:     S-expressions as used in Sexplib
      3 " Filenames:    *.sexp
      4 " Maintainers:  Markus Mottl      <markus.mottl@gmail.com>
      5 " URL:          https://github.com/ocaml/vim-ocaml
      6 " Last Change:  2020 Dec 31 - Updated header for Vim contribution (MM)
      7 "               2017 Apr 11 - Improved matching of negative numbers (MM)
      8 "               2012 Jun 20 - Fixed a block comment highlighting bug (MM)
      9 
     10 " For version 5.x: Clear all syntax items
     11 " For version 6.x: Quit when a syntax file was already loaded
     12 if version < 600
     13  syntax clear
     14 elseif exists("b:current_syntax") && b:current_syntax == "sexplib"
     15  finish
     16 endif
     17 
     18 " Sexplib is case sensitive.
     19 syn case match
     20 
     21 " Comments
     22 syn keyword  sexplibTodo contained TODO FIXME XXX NOTE
     23 syn region   sexplibBlockComment matchgroup=sexplibComment start="#|" matchgroup=sexplibComment end="|#" contains=ALLBUT,sexplibQuotedAtom,sexplibUnquotedAtom,sexplibEncl,sexplibComment
     24 syn match    sexplibSexpComment "#;" skipwhite skipempty nextgroup=sexplibQuotedAtomComment,sexplibUnquotedAtomComment,sexplibListComment,sexplibComment
     25 syn region   sexplibQuotedAtomComment start=+"+ skip=+\\\\\|\\"+ end=+"+ contained
     26 syn match    sexplibUnquotedAtomComment /\([^;()" \t#|]\|#[^;()" \t|]\||[^;()" \t#]\)[^;()" \t]*/ contained
     27 syn region   sexplibListComment matchgroup=sexplibComment start="(" matchgroup=sexplibComment end=")" contained contains=ALLBUT,sexplibEncl,sexplibString,sexplibQuotedAtom,sexplibUnquotedAtom,sexplibTodo,sexplibNumber,sexplibFloat
     28 syn match    sexplibComment ";.*" contains=sexplibTodo
     29 
     30 " Atoms
     31 syn match    sexplibUnquotedAtom /\([^;()" \t#|]\|#[^;()" \t|]\||[^;()" \t#]\)[^;()" \t]*/
     32 syn region   sexplibQuotedAtom    start=+"+ skip=+\\\\\|\\"+ end=+"+
     33 syn match    sexplibNumber        "-\=\<\d\(_\|\d\)*[l|L|n]\?\>"
     34 syn match    sexplibNumber        "-\=\<0[x|X]\(\x\|_\)\+[l|L|n]\?\>"
     35 syn match    sexplibNumber        "-\=\<0[o|O]\(\o\|_\)\+[l|L|n]\?\>"
     36 syn match    sexplibNumber        "-\=\<0[b|B]\([01]\|_\)\+[l|L|n]\?\>"
     37 syn match    sexplibFloat         "-\=\<\d\(_\|\d\)*\.\?\(_\|\d\)*\([eE][-+]\=\d\(_\|\d\)*\)\=\>"
     38 
     39 " Lists
     40 syn region   sexplibEncl transparent matchgroup=sexplibEncl start="(" matchgroup=sexplibEncl end=")" contains=ALLBUT,sexplibParenErr
     41 
     42 " Errors
     43 syn match    sexplibUnquotedAtomErr /\([^;()" \t#|]\|#[^;()" \t|]\||[^;()" \t#]\)[^;()" \t]*\(#|\||#\)[^;()" \t]*/
     44 syn match    sexplibParenErr ")"
     45 
     46 " Synchronization
     47 syn sync minlines=50
     48 syn sync maxlines=500
     49 
     50 " Define the default highlighting.
     51 " For version 5.7 and earlier: only when not done already
     52 " For version 5.8 and later: only when an item doesn't have highlighting yet
     53 if version >= 508 || !exists("did_sexplib_syntax_inits")
     54  if version < 508
     55    let did_sexplib_syntax_inits = 1
     56    command -nargs=+ HiLink hi link <args>
     57  else
     58    command -nargs=+ HiLink hi def link <args>
     59  endif
     60 
     61  HiLink sexplibParenErr            Error
     62  HiLink sexplibUnquotedAtomErr     Error
     63 
     64  HiLink sexplibComment             Comment
     65  HiLink sexplibSexpComment         Comment
     66  HiLink sexplibQuotedAtomComment   Include
     67  HiLink sexplibUnquotedAtomComment Comment
     68  HiLink sexplibBlockComment        Comment
     69  HiLink sexplibListComment         Comment
     70 
     71  HiLink sexplibBoolean             Boolean
     72  HiLink sexplibCharacter           Character
     73  HiLink sexplibNumber              Number
     74  HiLink sexplibFloat               Float
     75  HiLink sexplibUnquotedAtom        Identifier
     76  HiLink sexplibEncl                Identifier
     77  HiLink sexplibQuotedAtom          Keyword
     78 
     79  HiLink sexplibTodo                Todo
     80 
     81  HiLink sexplibEncl                Keyword
     82 
     83  delcommand HiLink
     84 endif
     85 
     86 let b:current_syntax = "sexplib"
     87 
     88 " vim: ts=8