Merge branch 'vim-with-runtime' into feat/quickfix-title
[vim_extended.git] / runtime / syntax / snobol4.vim
blob07eb63dec78a6a3a04205d97982aa729ac014196
1 " Vim syntax file
2 " Language:     SNOBOL4
3 " Maintainer:   Rafal Sulejman <rms@poczta.onet.pl>
4 " Site: http://rms.republika.pl/vim/syntax/snobol4.vim
5 " Last change:  2006 may 10
6 " Changes: 
7 " - strict snobol4 mode (set snobol4_strict_mode to activate)
8 " - incorrect HL of dots in strings corrected
9 " - incorrect HL of dot-variables in parens corrected 
10 " - one character labels weren't displayed correctly.
11 " - nonexistent Snobol4 keywords displayed as errors.
13 " For version 5.x: Clear all syntax items
14 " For version 6.x: Quit when a syntax file was already loaded
15 if version < 600
16   syntax clear
17 elseif exists("b:current_syntax")
18   finish
19 endif
21 syntax case ignore
23 " Snobol4 keywords
24 syn keyword     snobol4Keyword      any apply arb arbno arg array
25 syn keyword     snobol4Keyword      break
26 syn keyword     snobol4Keyword      char clear code collect convert copy
27 syn keyword     snobol4Keyword      data datatype date define detach differ dump dupl
28 syn keyword     snobol4Keyword      endfile eq eval
29 syn keyword     snobol4Keyword      field
30 syn keyword     snobol4Keyword      ge gt ident
31 syn keyword     snobol4Keyword      input integer item
32 syn keyword     snobol4Keyword      le len lgt local lpad lt
33 syn keyword     snobol4Keyword      ne notany
34 syn keyword     snobol4Keyword      opsyn output
35 syn keyword     snobol4Keyword      pos prototype
36 syn keyword     snobol4Keyword      remdr replace rpad rpos rtab rewind
37 syn keyword     snobol4Keyword      size span stoptr
38 syn keyword     snobol4Keyword      tab table time trace trim terminal
39 syn keyword     snobol4Keyword      unload
40 syn keyword     snobol4Keyword      value
42 " CSNOBOL keywords
43 syn keyword     snobol4ExtKeyword   breakx
44 syn keyword     snobol4ExtKeyword   char chop
45 syn keyword     snobol4ExtKeyword   date delete
46 syn keyword     snobol4ExtKeyword   exp
47 syn keyword     snobol4ExtKeyword   freeze function
48 syn keyword     snobol4ExtKeyword   host
49 syn keyword     snobol4ExtKeyword   io_findunit
50 syn keyword     snobol4ExtKeyword   label lpad leq lge lle llt lne log
51 syn keyword     snobol4ExtKeyword   ord
52 syn keyword     snobol4ExtKeyword   reverse rpad rsort rename
53 syn keyword     snobol4ExtKeyword   serv_listen sset set sort sqrt substr
54 syn keyword     snobol4ExtKeyword   thaw
55 syn keyword     snobol4ExtKeyword   vdiffer
57 syn region      snobol4String       matchgroup=Quote start=+"+ end=+"+
58 syn region      snobol4String       matchgroup=Quote start=+'+ end=+'+
59 syn match       snobol4BogusStatement    "^-[^ ][^ ]*"
60 syn match       snobol4Statement    "^-\(include\|copy\|module\|line\|plusopts\|case\|error\|noerrors\|list\|unlist\|execute\|noexecute\|copy\)"
61 syn match       snobol4Constant     /"[^a-z"']\.[a-z][a-z0-9\-]*"/hs=s+1
62 syn region      snobol4Goto         start=":[sf]\{0,1}(" end=")\|$\|;" contains=ALLBUT,snobol4ParenError
63 syn match       snobol4Number       "\<\d*\(\.\d\d*\)*\>" 
64 syn match       snobol4BogusSysVar  "&\w\{1,}"
65 syn match       snobol4SysVar       "&\(abort\|alphabet\|anchor\|arb\|bal\|case\|code\|dump\|errlimit\|errtext\|errtype\|fail\|fence\|fnclevel\|ftrace\|fullscan\|input\|lastno\|lcase\|maxlngth\|output\|parm\|rem\|rtntype\|stcount\|stfcount\|stlimit\|stno\|succeed\|trace\|trim\|ucase\)"
66 syn match       snobol4ExtSysVar    "&\(gtrace\|line\|file\|lastline\|lastfile\)"
67 syn match       snobol4Label        "\(^\|;\)[^-\.\+ \t\*\.]\{1,}[^ \t\*\;]*"
68 syn match       snobol4Comment      "\(^\|;\)\([\*\|!;#].*$\)"
70 " Parens matching
71 syn cluster     snobol4ParenGroup   contains=snobol4ParenError
72 syn region      snobol4Paren        transparent start='(' end=')' contains=ALLBUT,@snobol4ParenGroup,snobol4ErrInBracket
73 syn match       snobol4ParenError   display "[\])]"
74 syn match       snobol4ErrInParen   display contained "[\]{}]\|<%\|%>"
75 syn region      snobol4Bracket      transparent start='\[\|<:' end=']\|:>' contains=ALLBUT,@snobol4ParenGroup,snobol4ErrInParen
76 syn match       snobol4ErrInBracket display contained "[){}]\|<%\|%>"
78 " optional shell shebang line
79 " syn match       snobol4Comment      "^\#\!.*$"
81 " Define the default highlighting.
82 " For version 5.7 and earlier: only when not done already
83 " For version 5.8 and later: only when an item doesn't have highlighting yet
84 if version >= 508 || !exists("did_snobol4_syntax_inits")
85   if version < 508
86     let did_snobol4_syntax_inits = 1
87     command -nargs=+ HiLink hi link <args>
88   else
89     command -nargs=+ HiLink hi def link <args>
90   endif
92   HiLink snobol4Constant        Constant
93   HiLink snobol4Label           Label
94   HiLink snobol4Goto            Repeat
95   HiLink snobol4Conditional     Conditional
96   HiLink snobol4Repeat          Repeat
97   HiLink snobol4Number          Number
98   HiLink snobol4Error           Error
99   HiLink snobol4Statement       PreProc
100   HiLink snobol4BogusStatement  snobol4Error
101   HiLink snobol4String          String
102   HiLink snobol4Comment         Comment
103   HiLink snobol4Special         Special
104   HiLink snobol4Todo            Todo
105   HiLink snobol4Keyword         Keyword
106   HiLink snobol4Function        Function
107   HiLink snobol4MathsOperator   Operator
108   HiLink snobol4ParenError      snobol4Error
109   HiLink snobol4ErrInParen      snobol4Error
110   HiLink snobol4ErrInBracket    snobol4Error
111   HiLink snobol4SysVar          Keyword
112   HiLink snobol4BogusSysVar     snobol4Error
113   if exists("snobol4_strict_mode")
114     HiLink snobol4ExtSysVar       WarningMsg
115     HiLink snobol4ExtKeyword      WarningMsg
116   else
117     HiLink snobol4ExtSysVar       snobol4SysVar
118     HiLink snobol4ExtKeyword      snobol4Keyword
119   endif
121   delcommand HiLink
122 endif
124 let b:current_syntax = "snobol4"
125 " vim: ts=8