1" Vim syntax file
2" Language:	Telix (Modem Comm Program) SALT Script
3" Maintainer:	Sean M. McKee <mckee@misslink.net>
4" Last Change:	2001 May 09
5" Version Info: @(#)tsalt.vim	1.5	97/12/16 08:11:15
6
7" For version 5.x: Clear all syntax items
8" For version 6.x: Quit when a syntax file was already loaded
9if version < 600
10  syntax clear
11elseif exists("b:current_syntax")
12  finish
13endif
14
15" turn case matching off
16syn case ignore
17
18"FUNCTIONS
19" Character Handling Functions
20syn keyword tsaltFunction	IsAscii IsAlNum IsAlpha IsCntrl IsDigit
21syn keyword tsaltFunction	IsLower IsUpper ToLower ToUpper
22
23" Connect Device Operations
24syn keyword tsaltFunction	Carrier cInp_Cnt cGetC cGetCT cPutC cPutN
25syn keyword tsaltFunction	cPutS cPutS_TR FlushBuf Get_Baud
26syn keyword tsaltFunction	Get_DataB Get_Port Get_StopB Hangup
27syn keyword tsaltFunction	KillConnectDevice MakeConnectDevice
28syn keyword tsaltFunction	Send_Brk Set_ConnectDevice Set_Port
29
30" File Input/Output Operations
31syn keyword tsaltFunction	fClearErr fClose fDelete fError fEOF fFlush
32syn keyword tsaltFunction	fGetC fGetS FileAttr FileFind FileSize
33syn keyword tsaltFunction	FileTime fnStrip fOpen fPutC fPutS fRead
34syn keyword tsaltFunction	fRename fSeek fTell fWrite
35
36" File Transfers and Logs
37syn keyword tsaltFunction	Capture Capture_Stat Printer Receive Send
38syn keyword tsaltFunction	Set_DefProt UsageLog Usage_Stat UStamp
39
40" Input String Matching
41syn keyword tsaltFunction	Track Track_AddChr Track_Free Track_Hit
42syn keyword tsaltFunction	WaitFor
43
44" Keyboard Operations
45syn keyword tsaltFunction	InKey InKeyW KeyGet KeyLoad KeySave KeySet
46
47" Miscellaneous Functions
48syn keyword tsaltFunction	ChatMode Dos Dial DosFunction ExitTelix
49syn keyword tsaltFunction	GetEnv GetFon HelpScreen LoadFon NewDir
50syn keyword tsaltFunction	Randon Redial RedirectDOS Run
51syn keyword tsaltFunction	Set_Terminal Show_Directory TelixVersion
52syn keyword tsaltFunction	Terminal TransTab Update_Term
53
54" Script Management
55syn keyword tsaltFunction	ArgCount Call CallD CompileScript GetRunPath
56syn keyword tsaltFunction	Is_Loaded Load_Scr ScriptVersion
57syn keyword tsaltFunction	TelixForWindows Unload_Scr
58
59" Sound Functions
60syn keyword tsaltFunction	Alarm PlayWave Tone
61
62" String Handling
63syn keyword tsaltFunction	CopyChrs CopyStr DelChrs GetS GetSXY
64syn keyword tsaltFunction	InputBox InsChrs ItoS SetChr StoI StrCat
65syn keyword tsaltFunction	StrChr StrCompI StrLen StrLower StrMaxLen
66syn keyword tsaltFunction	StrPos StrPosI StrUpper SubChr SubChrs
67syn keyword tsaltFunction	SubStr
68
69" Time, Date, and Timer Operations
70syn keyword tsaltFunction	CurTime Date Delay Delay_Scr Get_OnlineTime
71syn keyword tsaltFunction	tDay tHour tMin tMonth tSec tYear Time
72syn keyword tsaltFunction	Time_Up Timer_Free Time_Restart
73syn keyword tsaltFunction	Time_Start Time_Total
74
75" Video Operations
76syn keyword tsaltFunction	Box CNewLine Cursor_OnOff Clear_Scr
77syn keyword tsaltFunction	GetTermHeight GetTermWidth GetX GetY
78syn keyword tsaltFunction	GotoXY MsgBox NewLine PrintC PrintC_Trm
79syn keyword tsaltFunction	PrintN PrintN_Trm PrintS PrintS_Trm
80syn keyword tsaltFunction	PrintSC PRintSC_Trm
81syn keyword tsaltFunction	PStrA PStrAXY Scroll Status_Wind vGetChr
82syn keyword tsaltFunction	vGetChrs vGetChrsA  vPutChr vPutChrs
83syn keyword tsaltFunction	vPutChrsA vRstrArea vSaveArea
84
85" Dynamic Data Exchange (DDE) Operations
86syn keyword tsaltFunction	DDEExecute DDEInitate DDEPoke DDERequest
87syn keyword tsaltFunction	DDETerminate DDETerminateAll
88"END FUNCTIONS
89
90"PREDEFINED VARAIABLES
91syn keyword tsaltSysVar	_add_lf _alarm_on _answerback_str _asc_rcrtrans
92syn keyword tsaltSysVar	_asc_remabort _asc_rlftrans _asc_scpacing
93syn keyword tsaltSysVar	_asc_scrtrans _asc_secho _asc_slpacing
94syn keyword tsaltSysVar	_asc_spacechr _asc_striph _back_color
95syn keyword tsaltSysVar	_capture_fname _connect_str _dest_bs
96syn keyword tsaltSysVar	_dial_pause _dial_time _dial_post
97syn keyword tsaltSysVar	_dial_pref1 _dial_pref2 _dial_pref3
98syn keyword tsaltSysVar	_dial_pref4 _dir_prog _down_dir
99syn keyword tsaltSysVar	_entry_bbstype _entry_comment _entry_enum
100syn keyword tsaltSysVar	_entry_name _entry_num _entry_logonname
101syn keyword tsaltSysVar	_entry_pass _fore_color _image_file
102syn keyword tsaltSysVar	_local_echo _mdm_hang_str _mdm_init_str
103syn keyword tsaltSysVar	_no_connect1 _no_connect2 _no_connect3
104syn keyword tsaltSysVar	_no_connect4 _no_connect5 _redial_stop
105syn keyword tsaltSysVar	_scr_chk_key _script_dir _sound_on
106syn keyword tsaltSysVar	_strip_high _swap_bs _telix_dir _up_dir
107syn keyword tsaltSysVar	_usage_fname _zmodauto _zmod_rcrash
108syn keyword tsaltSysVar	_zmod_scrash
109"END PREDEFINED VARAIABLES
110
111"TYPE
112syn keyword tsaltType	str int
113"END TYPE
114
115"KEYWORDS
116syn keyword tsaltStatement	goto break return continue
117syn keyword tsaltConditional	if then else
118syn keyword tsaltRepeat		while for do
119"END KEYWORDS
120
121syn keyword tsaltTodo contained	TODO
122
123" the rest is pretty close to C -----------------------------------------
124
125" String and Character constants
126" Highlight special characters (those which have a backslash) differently
127syn match tsaltSpecial		contained "\^\d\d\d\|\^."
128syn region tsaltString		start=+"+  skip=+\\\\\|\\"+  end=+"+  contains=tsaltSpecial
129syn match tsaltCharacter	"'[^\\]'"
130syn match tsaltSpecialCharacter	"'\\.'"
131
132"catch errors caused by wrong parenthesis
133syn region tsaltParen		transparent start='(' end=')' contains=ALLBUT,tsaltParenError,tsaltIncluded,tsaltSpecial,tsaltTodo
134syn match tsaltParenError		")"
135syn match tsaltInParen		contained "[{}]"
136
137hi link tsaltParenError		tsaltError
138hi link tsaltInParen		tsaltError
139
140"integer number, or floating point number without a dot and with "f".
141syn match  tsaltNumber		"\<\d\+\(u\=l\=\|lu\|f\)\>"
142"floating point number, with dot, optional exponent
143syn match  tsaltFloat		"\<\d\+\.\d*\(e[-+]\=\d\+\)\=[fl]\=\>"
144"floating point number, starting with a dot, optional exponent
145syn match  tsaltFloat		"\.\d\+\(e[-+]\=\d\+\)\=[fl]\=\>"
146"floating point number, without dot, with exponent
147syn match  tsaltFloat		"\<\d\+e[-+]\=\d\+[fl]\=\>"
148"hex number
149syn match  tsaltNumber		"0x[0-9a-f]\+\(u\=l\=\|lu\)\>"
150"syn match  cIdentifier	"\<[a-z_][a-z0-9_]*\>"
151
152syn region tsaltComment		start="/\*"  end="\*/" contains=cTodo
153syn match  tsaltComment		"//.*" contains=cTodo
154syn match  tsaltCommentError	"\*/"
155
156syn region tsaltPreCondit	start="^[ \t]*#[ \t]*\(if\>\|ifdef\>\|ifndef\>\|elif\>\|else\>\|endif\>\)"  skip="\\$"  end="$" contains=tsaltComment,tsaltString,tsaltCharacter,tsaltNumber,tsaltCommentError
157syn region tsaltIncluded	contained start=+"+  skip=+\\\\\|\\"+  end=+"+
158syn match  tsaltIncluded	contained "<[^>]*>"
159syn match  tsaltInclude		"^[ \t]*#[ \t]*include\>[ \t]*["<]" contains=tsaltIncluded
160"syn match  TelixSalyLineSkip	"\\$"
161syn region tsaltDefine		start="^[ \t]*#[ \t]*\(define\>\|undef\>\)" skip="\\$" end="$" contains=ALLBUT,tsaltPreCondit,tsaltIncluded,tsaltInclude,tsaltDefine,tsaltInParen
162syn region tsaltPreProc		start="^[ \t]*#[ \t]*\(pragma\>\|line\>\|warning\>\|warn\>\|error\>\)" skip="\\$" end="$" contains=ALLBUT,tsaltPreCondit,tsaltIncluded,tsaltInclude,tsaltDefine,tsaltInParen
163
164" Highlight User Labels
165syn region tsaltMulti	transparent start='?' end=':' contains=ALLBUT,tsaltIncluded,tsaltSpecial,tsaltTodo
166
167syn sync ccomment tsaltComment
168
169
170" Define the default highlighting.
171" For version 5.7 and earlier: only when not done already
172" For version 5.8 and later: only when an item doesn't have highlighting yet
173if version >= 508 || !exists("did_tsalt_syntax_inits")
174  if version < 508
175    let did_tsalt_syntax_inits = 1
176    command -nargs=+ HiLink hi link <args>
177  else
178    command -nargs=+ HiLink hi def link <args>
179  endif
180
181	HiLink tsaltFunction		Statement
182	HiLink tsaltSysVar		Type
183	"HiLink tsaltLibFunc		UserDefFunc
184	"HiLink tsaltConstants		Type
185	"HiLink tsaltFuncArg		Type
186	"HiLink tsaltOperator		Operator
187	"HiLink tsaltLabel		Label
188	"HiLink tsaltUserLabel		Label
189	HiLink tsaltConditional		Conditional
190	HiLink tsaltRepeat		Repeat
191	HiLink tsaltCharacter		SpecialChar
192	HiLink tsaltSpecialCharacter	SpecialChar
193	HiLink tsaltNumber		Number
194	HiLink tsaltFloat		Float
195	HiLink tsaltCommentError	tsaltError
196	HiLink tsaltInclude		Include
197	HiLink tsaltPreProc		PreProc
198	HiLink tsaltDefine		Macro
199	HiLink tsaltIncluded		tsaltString
200	HiLink tsaltError		Error
201	HiLink tsaltStatement		Statement
202	HiLink tsaltPreCondit		PreCondit
203	HiLink tsaltType		Type
204	HiLink tsaltString		String
205	HiLink tsaltComment		Comment
206	HiLink tsaltSpecial		Special
207	HiLink tsaltTodo		Todo
208
209  delcommand HiLink
210endif
211
212let b:current_syntax = "tsalt"
213
214" vim: ts=8
215