]> git.mxchange.org Git - flightgear.git/blob - scripts/syntax/nasal.vim
Move vim syntax files from utils/syntax/ to scripts/syntax/. They aren't
[flightgear.git] / scripts / syntax / nasal.vim
1 " Vim syntax file
2 " Language:     Nasal (FlightGear)
3 " Maintainer:   Melchior FRANZ <mfranz # aon : at>
4 " URL:          http://members.aon.at/mfranz/nasal.vim
5 " Last Change:  2008 Sep 29
6
7 " ________________________________CUSTOMIZATION______________________________
8 "
9 " :let nasal_no_fgfs=1               " turn off FlightGear extensions
10 " :hi nasalStatement ctermfg=Green   " change statement color
11 " ___________________________________________________________________________
12 " for use in ~/.vimrc drop the initial colon
13 " type ":help new-filetype" in vim for installation instructions
14
15
16 if !exists("main_syntax")
17         if version < 600
18                 syntax clear
19         elseif exists("b:current_syntax")
20                 finish
21         endif
22         let main_syntax = 'nasal'
23 endif
24
25
26 syn keyword nasalCommentTodo            TODO FIXME XXX contained
27 syn match   nasalComment                "#.*$" contains=nasalCommentTodo
28 syn region  nasalStringS                start=+'+ skip=+\\'+ end=+'+ contains=nasalSpecialS
29 syn region  nasalStringD                start=+"+ skip=+\\"+ end=+"+ contains=nasalSpecialD,nasalSpecial
30 syn match   nasalSpecialS               contained "\\'"
31 syn match   nasalSpecialD               contained "\\[\\rnt\"]"
32 syn match   nasalSpecial                contained "\\x[[:xdigit:]][[:xdigit:]]"
33
34 syn match   nasalError                  "``\="
35 syn match   nasalError                  "`\\[^`\\rnt]`"
36 syn match   nasalError                  "`[^`][^`]\+`"
37 syn match   nasalCharConstant           "`[^`\\]`"
38 syn match   nasalCharConstant           "`\\[`\\rnt]`"
39 syn match   nasalCharConstant           "`\\x[[:xdigit:]][[:xdigit:]]`"
40
41 syn match   nasalNumber                 "-\=\<0x\x\+\>"
42 syn match   nasalNumber                 "-\=\<\d\+\>"
43 syn match   nasalNumber                 "-\=\.\d\+\([eE][+-]\=\d\+\)\=\>"
44 syn match   nasalNumber                 "-\=\<\d\+\.\=\([eE][+-]\=\d\+\)\=\>"
45 syn match   nasalNumber                 "-\=\<\d\+\.\d\+\([eE][+-]\=\d\+\)\=\>"
46
47 syn keyword nasalStatement              func return var
48 syn keyword nasalConditional            if elsif else
49 syn keyword nasalRepeat                 while for foreach forindex
50 syn keyword nasalBranch                 break continue
51 syn keyword nasalVar                    me arg parents
52 syn keyword nasalType                   nil
53 syn keyword nasalOperator               and or
54 syn match   nasalFoo                    "\~"
55
56 syn match   nasalFunction               display "\<contains\>"
57 syn keyword nasalFunction               size keys append pop setsize subvec delete int num streq substr
58 syn keyword nasalFunction               chr typeof compile call die sprintf caller closure find cmp
59 syn keyword nasalFunction               split rand bind sort ghosttype id
60
61 " math lib
62 syn match   nasalFunction               "\<math\.\(sin\|cos\|exp\|ln\|sqrt\|atan2\)\>"
63 syn match   nasalConstant               "\<math\.\(e\|pi\)\>"
64
65 " io lib
66 syn match   nasalFunction               "\<io\.\(close\|read\|write\|seek\|tell\|open\|readln\|stat\)\>"
67 syn match   nasalVar                    "\<io\.\(SEEK_SET\|SEEK_CUR\|SEEK_END\|stdin\|stdout\|stderr\)\>"
68
69 " bits lib
70 syn match   nasalFunction               "\<bits\.\(sfld\|fld\|setfld\|buf\)\>"
71
72
73 syn sync fromstart
74 syn sync maxlines=100
75
76 syn match   nasalParenError     "[()]"
77 syn match   nasalBrackError     "[[]]"
78 syn match   nasalBraceError     "[{}]"
79
80
81 " FlightGear specific commands
82 if !exists("nasal_no_fgfs")
83         syn keyword nasalFGFSFunction           getprop setprop print _fgcommand settimer _setlistener _cmdarg
84         syn keyword nasalFGFSFunction           _interpolate rand srand directory removelistener systime
85         syn keyword nasalFGFSFunction           geodtocart carttogeod geodinfo parsexml airportinfo abort
86
87         syn keyword nasalGlobalsFunction        isa fgcommand cmdarg abs interpolate setlistener defined printlog
88         syn keyword nasalGlobalsFunction        thisfunc printf
89
90         syn keyword nasalPropsFunction          getType getName getIndex getValue setValue setIntValue
91         syn keyword nasalPropsFunction          setBoolValue setDoubleValue getParent getChild getChildren
92         syn keyword nasalPropsFunction          getAttribute setAttribute
93         syn keyword nasalPropsFunction          removeChild removeChildren getNode
94         syn keyword nasalPropsFunction          getPath getBoolValue setValues getValues
95         syn match   nasalPropsFunction          "\<props\.\(_\?globals\|Node\|nodeList\|initNode\|condition\)\>\.\="
96
97         " XML embedded mode
98         if expand("%:e") == "xml"
99                 syn region  nasalComment        start="<!--" end="-->" contains=nasalCommentTodo
100                 syn region  nasalComment        start="<?" end="?>" contains=nasalCommentTodo
101                 syn match   nasalComment        "^\s*</\?[[:alnum:]!].*[[:alnum:]\"-]/\?>\s*$"
102                 syn match   nasalComment        "^\s*<script>"
103                 syn match   nasalComment        "</script>.*"
104                 syn match   nasalCDATA          "<!\[CDATA\["
105                 syn match   nasalCDATA          "\]\]>"
106         endif
107 endif
108
109
110 syn region  nasalEncl transparent matchgroup=nasalParenEncl start="(" end=")" contains=ALLBUT,nasalParenError
111 syn region  nasalEncl transparent matchgroup=nasalBrackEncl start="\[" end="\]" contains=ALLBUT,nasalBrackError
112 syn region  nasalEncl transparent matchgroup=nasalBraceEncl start="{" end="}" contains=ALLBUT,nasalBraceError
113
114
115 if version >= 508 || !exists("did_nasal_syn_inits")
116         if version < 508
117                 let did_nasal_syn_inits = 1
118                 command -nargs=+ HiLink hi link <args>
119         else
120                 command -nargs=+ HiLink hi def link <args>
121         endif
122         HiLink nasalComment             Comment
123         HiLink nasalCommentTodo         Todo
124         HiLink nasalSpecial             Special
125         HiLink nasalSpecialS            Special
126         HiLink nasalSpecialD            Special
127         HiLink nasalStringS             String
128         HiLink nasalStringD             String
129         HiLink nasalNumber              Number
130         HiLink nasalConditional         Conditional
131
132         HiLink nasalVar                 Macro
133         HiLink nasalType                Type
134         HiLink nasalConstant            Constant
135         HiLink nasalCharConstant        Type
136         HiLink nasalFoo                 NonText
137         HiLink nasalCDATA               Type
138
139         HiLink nasalRepeat              Repeat
140         HiLink nasalBranch              Conditional
141         HiLink nasalOperator            Operator
142         HiLink nasalStatement           Statement
143         HiLink nasalFunction            Function
144
145         HiLink nasalFGFSFunction        Function
146         HiLink nasalGlobalsFunction     Function
147         HiLink nasalPropsFunction       Function
148
149         HiLink nasalError               Error
150         HiLink nasalParenError          nasalError
151         HiLink nasalBrackError          nasalError
152         HiLink nasalBraceError          nasalError
153         delcommand HiLink
154 endif
155
156 let b:current_syntax = "nasal"
157 if main_syntax == 'nasal'
158         unlet main_syntax
159 endif
160
161 " vim: ts=8