1" 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
210