blob: 2a9a9998838802218541980d5e744018d51c4cd0 [file] [log] [blame]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001" Vim syntax file
2" Language: tf
3" Maintainer: Lutz Eymers <ixtab@polzin.com>
4" URL: http://www.isp.de/data/tf.vim
5" Email: send syntax_vim.tgz
6" Last Change: 2001 May 10
7"
8" Options lite_minlines = x to sync at least x lines backwards
9
10" Remove any old syntax stuff hanging around
11
12" For version 5.x: Clear all syntax items
13" For version 6.x: Quit when a syntax file was already loaded
14if version < 600
15 syntax clear
16elseif exists("b:current_syntax")
17 finish
18endif
19
20syn case match
21
22if !exists("main_syntax")
23 let main_syntax = 'tf'
24endif
25
26" Special global variables
27syn keyword tfVar HOME LANG MAIL SHELL TERM TFHELP TFLIBDIR TFLIBRARY TZ contained
28syn keyword tfVar background backslash contained
29syn keyword tfVar bamf bg_output borg clearfull cleardone clock connect contained
30syn keyword tfVar emulation end_color gag gethostbyname gpri hook hilite contained
31syn keyword tfVar hiliteattr histsize hpri insert isize istrip kecho contained
32syn keyword tfVar kprefix login lp lpquote maildelay matching max_iter contained
33syn keyword tfVar max_recur mecho more mprefix oldslash promt_sec contained
34syn keyword tfVar prompt_usec proxy_host proxy_port ptime qecho qprefix contained
35syn keyword tfVar quite quitdone redef refreshtime scroll shpause snarf sockmload contained
36syn keyword tfVar start_color tabsize telopt sub time_format visual contained
37syn keyword tfVar watch_dog watchname wordpunct wrap wraplog wrapsize contained
38syn keyword tfVar wrapspace contained
39
40" Worldvar
41syn keyword tfWorld world_name world_character world_password world_host contained
42syn keyword tfWorld world_port world_mfile world_type contained
43
44" Number
45syn match tfNumber "-\=\<\d\+\>"
46
47" Float
48syn match tfFloat "\(-\=\<\d+\|-\=\)\.\d\+\>"
49
50" Operator
51syn match tfOperator "[-+=?:&|!]"
52syn match tfOperator "/[^*~@]"he=e-1
53syn match tfOperator ":="
54syn match tfOperator "[^/%]\*"hs=s+1
55syn match tfOperator "$\+[([{]"he=e-1,me=e-1
56syn match tfOperator "\^\[\+"he=s+1 contains=tfSpecialCharEsc
57
58" Relational
59syn match tfRelation "&&"
60syn match tfRelation "||"
61syn match tfRelation "[<>/!=]="
62syn match tfRelation "[<>]"
63syn match tfRelation "[!=]\~"
64syn match tfRelation "[=!]/"
65
66
67" Readonly Var
68syn match tfReadonly "[#*]" contained
69syn match tfReadonly "\<-\=L\=\d\{-}\>" contained
70syn match tfReadonly "\<P\(\d\+\|R\|L\)\>" contained
71syn match tfReadonly "\<R\>" contained
72
73" Identifier
74syn match tfIdentifier "%\+[a-zA-Z_#*-0-9]\w*" contains=tfVar,tfReadonly
75syn match tfIdentifier "%\+[{]"he=e-1,me=e-1
76syn match tfIdentifier "\$\+{[a-zA-Z_#*-0-9]\w*}" contains=tfWorld
77
78" Function names
79syn keyword tfFunctions ascii char columns echo filename ftime fwrite getopts
80syn keyword tfFunctions getpid idle kbdel kbgoto kbhead kblen kbmatch kbpoint
81syn keyword tfFunctions kbtail kbwordleft kbwordright keycode lines mod
82syn keyword tfFunctions moresize pad rand read regmatch send strcat strchr
83syn keyword tfFunctions strcmp strlen strncmp strrchr strrep strstr substr
84syn keyword tfFunctions systype time tolower toupper
85
86syn keyword tfStatement addworld bamf beep bind break cat changes connect contained
87syn keyword tfStatement dc def dokey echo edit escape eval export expr fg for contained
88syn keyword tfStatement gag getfile grab help hilite histsize hook if input contained
89syn keyword tfStatement kill lcd let list listsockets listworlds load contained
90syn keyword tfStatement localecho log nohilite not partial paste ps purge contained
91syn keyword tfStatement purgeworld putfile quit quote recall recordline save contained
92syn keyword tfStatement saveworld send sh shift sub substitute contained
93syn keyword tfStatement suspend telnet test time toggle trig trigger unbind contained
94syn keyword tfStatement undef undefn undeft unhook untrig unworld contained
95syn keyword tfStatement version watchdog watchname while world contained
96
97" Hooks
98syn keyword tfHook ACTIVITY BACKGROUND BAMF CONFAIL CONFLICT CONNECT DISCONNECT
99syn keyword tfHook KILL LOAD LOADFAIL LOG LOGIN MAIL MORE PENDING PENDING
100syn keyword tfHook PROCESS PROMPT PROXY REDEF RESIZE RESUME SEND SHADOW SHELL
101syn keyword tfHook SIGHUP SIGTERM SIGUSR1 SIGUSR2 WORLD
102
103" Conditional
104syn keyword tfConditional if endif then else elseif contained
105
106" Repeat
107syn keyword tfRepeat while do done repeat for contained
108
109" Statement
110syn keyword tfStatement break quit contained
111
112" Include
113syn keyword tfInclude require load save loaded contained
114
115" Define
116syn keyword tfDefine bind unbind def undef undefn undefn purge hook unhook trig untrig contained
117syn keyword tfDefine set unset setenv contained
118
119" Todo
120syn keyword tfTodo TODO Todo todo contained
121
122" SpecialChar
123syn match tfSpecialChar "\\[abcfnrtyv\\]" contained
124syn match tfSpecialChar "\\\d\{3}" contained contains=tfOctalError
125syn match tfSpecialChar "\\x[0-9a-fA-F]\{2}" contained
126syn match tfSpecialCharEsc "\[\+" contained
127
128syn match tfOctalError "[89]" contained
129
130" Comment
131syn region tfComment start="^;" end="$" contains=tfTodo
132
133" String
134syn region tfString oneline matchgroup=None start=+'+ skip=+\\\\\|\\'+ end=+'+ contains=tfIdentifier,tfSpecialChar,tfEscape
135syn region tfString matchgroup=None start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=tfIdentifier,tfSpecialChar,tfEscape
136
137syn match tfParentError "[)}\]]"
138
139" Parents
140syn region tfParent matchgroup=Delimiter start="(" end=")" contains=ALLBUT,tfReadonly
141syn region tfParent matchgroup=Delimiter start="\[" end="\]" contains=ALL
142syn region tfParent matchgroup=Delimiter start="{" end="}" contains=ALL
143
144syn match tfEndCommand "%%\{-};"
145syn match tfJoinLines "\\$"
146
147" Types
148
149syn match tfType "/[a-zA-Z_~@][a-zA-Z0-9_]*" contains=tfConditional,tfRepeat,tfStatement,tfInclude,tfDefine,tfStatement
150
151" Catch /quote .. '
152syn match tfQuotes "/quote .\{-}'" contains=ALLBUT,tfString
153" Catch $(/escape )
154syn match tfEscape "(/escape .*)"
155
156" sync
157if exists("tf_minlines")
158 exec "syn sync minlines=" . tf_minlines
159else
160 syn sync minlines=100
161endif
162
163" Define the default highlighting.
164" For version 5.7 and earlier: only when not done already
165" For version 5.8 and later: only when an item doesn't have highlighting yet
166if version >= 508 || !exists("did_tf_syn_inits")
167 if version < 508
168 let did_tf_syn_inits = 1
169 command -nargs=+ HiLink hi link <args>
170 else
171 command -nargs=+ HiLink hi def link <args>
172 endif
173
174 HiLink tfComment Comment
175 HiLink tfString String
176 HiLink tfNumber Number
177 HiLink tfFloat Float
178 HiLink tfIdentifier Identifier
179 HiLink tfVar Identifier
180 HiLink tfWorld Identifier
181 HiLink tfReadonly Identifier
182 HiLink tfHook Identifier
183 HiLink tfFunctions Function
184 HiLink tfRepeat Repeat
185 HiLink tfConditional Conditional
186 HiLink tfLabel Label
187 HiLink tfStatement Statement
188 HiLink tfType Type
189 HiLink tfInclude Include
190 HiLink tfDefine Define
191 HiLink tfSpecialChar SpecialChar
192 HiLink tfSpecialCharEsc SpecialChar
193 HiLink tfParentError Error
194 HiLink tfTodo Todo
195 HiLink tfEndCommand Delimiter
196 HiLink tfJoinLines Delimiter
197 HiLink tfOperator Operator
198 HiLink tfRelation Operator
199
200 delcommand HiLink
201endif
202
203let b:current_syntax = "tf"
204
205if main_syntax == 'tf'
206 unlet main_syntax
207endif
208
209" vim: ts=8