blob: 90d411dc8baf2cadc7c9b335abc1b8451c1f65a5 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
|
" Vim syntax file
" Language: SAS
" Maintainer: James Kidd <james.kidd@covance.com>
" Last Change: 2012 Apr 20
" Corrected bug causing some keywords to appear as strings instead
" 18 Jul 2008 by Paulo Tanimoto <ptanimoto@gmail.com>
" Fixed comments with * taking multiple lines.
" Fixed highlighting of macro keywords.
" Added words to cases that didn't fit anywhere.
" 02 Jun 2003
" Added highlighting for additional keywords and such;
" Attempted to match SAS default syntax colors;
" Changed syncing so it doesn't lose colors on large blocks;
" Much thanks to Bob Heckel for knowledgeable tweaking.
" quit when a syntax file was already loaded
if exists("b:current_syntax")
finish
endif
syn case ignore
syn region sasString start=+"+ skip=+\\\\\|\\"+ end=+"+
syn region sasString start=+'+ skip=+\\\\\|\\"+ end=+'+
" Want region from 'cards;' to ';' to be captured (Bob Heckel)
syn region sasCards start="^\s*CARDS.*" end="^\s*;\s*$"
syn region sasCards start="^\s*DATALINES.*" end="^\s*;\s*$"
syn match sasNumber "-\=\<\d*\.\=[0-9_]\>"
" Block comment
syn region sasComment start="/\*" end="\*/" contains=sasTodo
" Ignore misleading //JCL SYNTAX... (Bob Heckel)
syn region sasComment start="[^/][^/]/\*" end="\*/" contains=sasTodo
" Previous code for comments was written by Bob Heckel
" Comments with * may take multiple lines (Paulo Tanimoto)
syn region sasComment start=";\s*\*"hs=s+1 end=";" contains=sasTodo
" Comments with * starting after a semicolon (Paulo Tanimoto)
syn region sasComment start="^\s*\*" end=";" contains=sasTodo
" This line defines macro variables in code. "hi def link" at end of file
" defines the color scheme. Begin region with ampersand and end with
" any non-word character offset by -1; put ampersand in the skip list
" just in case it is used to concatenate macro variable values.
" Thanks to ronald höllwarth for this fix to an intra-versioning
" problem with this little feature
syn region sasMacroVar start="&" skip="[_&]" end="\W"he=e-1
" I dont think specific PROCs need to be listed if use this line (Bob Heckel).
syn match sasProc "^\s*PROC \w\+"
syn keyword sasStep RUN QUIT DATA
" Base SAS Procs - version 8.1
syn keyword sasConditional DO ELSE END IF THEN UNTIL WHILE
syn keyword sasStatement ABORT ARRAY ATTRIB BY CALL CARDS CARDS4 CATNAME
syn keyword sasStatement CONTINUE DATALINES DATALINES4 DELETE DISPLAY
syn keyword sasStatement DM DROP ENDSAS ERROR FILE FILENAME FOOTNOTE
syn keyword sasStatement FORMAT GOTO INFILE INFORMAT INPUT KEEP
syn keyword sasStatement LABEL LEAVE LENGTH LIBNAME LINK LIST LOSTCARD
syn keyword sasStatement MERGE MISSING MODIFY OPTIONS OUTPUT PAGE
syn keyword sasStatement PUT REDIRECT REMOVE RENAME REPLACE RETAIN
syn keyword sasStatement RETURN SELECT SET SKIP STARTSAS STOP TITLE
syn keyword sasStatement UPDATE WAITSAS WHERE WINDOW X SYSTASK
" Keywords that are used in Proc SQL
" I left them as statements because SAS's enhanced editor highlights
" them the same as normal statements used in data steps (Jim Kidd)
syn keyword sasStatement ADD AND ALTER AS CASCADE CHECK CREATE
syn keyword sasStatement DELETE DESCRIBE DISTINCT DROP FOREIGN
syn keyword sasStatement FROM GROUP HAVING INDEX INSERT INTO IN
syn keyword sasStatement KEY LIKE MESSAGE MODIFY MSGTYPE NOT
syn keyword sasStatement NULL ON OR ORDER PRIMARY REFERENCES
syn keyword sasStatement RESET RESTRICT SELECT SET TABLE
syn keyword sasStatement UNIQUE UPDATE VALIDATE VIEW WHERE
" Match declarations have to appear one per line (Paulo Tanimoto)
syn match sasStatement "FOOTNOTE\d"
syn match sasStatement "TITLE\d"
" Match declarations have to appear one per line (Paulo Tanimoto)
syn match sasMacro "%BQUOTE"
syn match sasMacro "%NRBQUOTE"
syn match sasMacro "%CMPRES"
syn match sasMacro "%QCMPRES"
syn match sasMacro "%COMPSTOR"
syn match sasMacro "%DATATYP"
syn match sasMacro "%DISPLAY"
syn match sasMacro "%DO"
syn match sasMacro "%ELSE"
syn match sasMacro "%END"
syn match sasMacro "%EVAL"
syn match sasMacro "%GLOBAL"
syn match sasMacro "%GOTO"
syn match sasMacro "%IF"
syn match sasMacro "%INDEX"
syn match sasMacro "%INPUT"
syn match sasMacro "%KEYDEF"
syn match sasMacro "%LABEL"
syn match sasMacro "%LEFT"
syn match sasMacro "%LENGTH"
syn match sasMacro "%LET"
syn match sasMacro "%LOCAL"
syn match sasMacro "%LOWCASE"
syn match sasMacro "%MACRO"
syn match sasMacro "%MEND"
syn match sasMacro "%NRBQUOTE"
syn match sasMacro "%NRQUOTE"
syn match sasMacro "%NRSTR"
syn match sasMacro "%PUT"
syn match sasMacro "%QCMPRES"
syn match sasMacro "%QLEFT"
syn match sasMacro "%QLOWCASE"
syn match sasMacro "%QSCAN"
syn match sasMacro "%QSUBSTR"
syn match sasMacro "%QSYSFUNC"
syn match sasMacro "%QTRIM"
syn match sasMacro "%QUOTE"
syn match sasMacro "%QUPCASE"
syn match sasMacro "%SCAN"
syn match sasMacro "%STR"
syn match sasMacro "%SUBSTR"
syn match sasMacro "%SUPERQ"
syn match sasMacro "%SYSCALL"
syn match sasMacro "%SYSEVALF"
syn match sasMacro "%SYSEXEC"
syn match sasMacro "%SYSFUNC"
syn match sasMacro "%SYSGET"
syn match sasMacro "%SYSLPUT"
syn match sasMacro "%SYSPROD"
syn match sasMacro "%SYSRC"
syn match sasMacro "%SYSRPUT"
syn match sasMacro "%THEN"
syn match sasMacro "%TO"
syn match sasMacro "%TRIM"
syn match sasMacro "%UNQUOTE"
syn match sasMacro "%UNTIL"
syn match sasMacro "%UPCASE"
syn match sasMacro "%VERIFY"
syn match sasMacro "%WHILE"
syn match sasMacro "%WINDOW"
" SAS Functions
syn keyword sasFunction ABS ADDR AIRY ARCOS ARSIN ATAN ATTRC ATTRN
syn keyword sasFunction BAND BETAINV BLSHIFT BNOT BOR BRSHIFT BXOR
syn keyword sasFunction BYTE CDF CEIL CEXIST CINV CLOSE CNONCT COLLATE
syn keyword sasFunction COMPBL COMPOUND COMPRESS COS COSH CSS CUROBS
syn keyword sasFunction CV DACCDB DACCDBSL DACCSL DACCSYD DACCTAB
syn keyword sasFunction DAIRY DATE DATEJUL DATEPART DATETIME DAY
syn keyword sasFunction DCLOSE DEPDB DEPDBSL DEPDBSL DEPSL DEPSL
syn keyword sasFunction DEPSYD DEPSYD DEPTAB DEPTAB DEQUOTE DHMS
syn keyword sasFunction DIF DIGAMMA DIM DINFO DNUM DOPEN DOPTNAME
syn keyword sasFunction DOPTNUM DREAD DROPNOTE DSNAME ERF ERFC EXIST
syn keyword sasFunction EXP FAPPEND FCLOSE FCOL FDELETE FETCH FETCHOBS
syn keyword sasFunction FEXIST FGET FILEEXIST FILENAME FILEREF FINFO
syn keyword sasFunction FINV FIPNAME FIPNAMEL FIPSTATE FLOOR FNONCT
syn keyword sasFunction FNOTE FOPEN FOPTNAME FOPTNUM FPOINT FPOS
syn keyword sasFunction FPUT FREAD FREWIND FRLEN FSEP FUZZ FWRITE
syn keyword sasFunction GAMINV GAMMA GETOPTION GETVARC GETVARN HBOUND
syn keyword sasFunction HMS HOSTHELP HOUR IBESSEL INDEX INDEXC
syn keyword sasFunction INDEXW INPUT INPUTC INPUTN INT INTCK INTNX
syn keyword sasFunction INTRR IRR JBESSEL JULDATE KURTOSIS LAG LBOUND
syn keyword sasFunction LEFT LENGTH LGAMMA LIBNAME LIBREF LOG LOG10
syn keyword sasFunction LOG2 LOGPDF LOGPMF LOGSDF LOWCASE MAX MDY
syn keyword sasFunction MEAN MIN MINUTE MOD MONTH MOPEN MORT N
syn keyword sasFunction NETPV NMISS NORMAL NOTE NPV OPEN ORDINAL
syn keyword sasFunction PATHNAME PDF PEEK PEEKC PMF POINT POISSON POKE
syn keyword sasFunction PROBBETA PROBBNML PROBCHI PROBF PROBGAM
syn keyword sasFunction PROBHYPR PROBIT PROBNEGB PROBNORM PROBT PUT
syn keyword sasFunction PUTC PUTN QTR QUOTE RANBIN RANCAU RANEXP
syn keyword sasFunction RANGAM RANGE RANK RANNOR RANPOI RANTBL RANTRI
syn keyword sasFunction RANUNI REPEAT RESOLVE REVERSE REWIND RIGHT
syn keyword sasFunction ROUND SAVING SCAN SDF SECOND SIGN SIN SINH
syn keyword sasFunction SKEWNESS SOUNDEX SPEDIS SQRT STD STDERR STFIPS
syn keyword sasFunction STNAME STNAMEL SUBSTR SUM SYMGET SYSGET SYSMSG
syn keyword sasFunction SYSPROD SYSRC SYSTEM TAN TANH TIME TIMEPART
syn keyword sasFunction TINV TNONCT TODAY TRANSLATE TRANWRD TRIGAMMA
syn keyword sasFunction TRIM TRIMN TRUNC UNIFORM UPCASE USS VAR
syn keyword sasFunction VARFMT VARINFMT VARLABEL VARLEN VARNAME
syn keyword sasFunction VARNUM VARRAY VARRAYX VARTYPE VERIFY VFORMAT
syn keyword sasFunction VFORMATD VFORMATDX VFORMATN VFORMATNX VFORMATW
syn keyword sasFunction VFORMATWX VFORMATX VINARRAY VINARRAYX VINFORMAT
syn keyword sasFunction VINFORMATD VINFORMATDX VINFORMATN VINFORMATNX
syn keyword sasFunction VINFORMATW VINFORMATWX VINFORMATX VLABEL
syn keyword sasFunction VLABELX VLENGTH VLENGTHX VNAME VNAMEX VTYPE
syn keyword sasFunction VTYPEX WEEKDAY YEAR YYQ ZIPFIPS ZIPNAME ZIPNAMEL
syn keyword sasFunction ZIPSTATE
" Handy settings for using vim with log files
syn keyword sasLogMsg NOTE
syn keyword sasWarnMsg WARNING
syn keyword sasErrMsg ERROR
" Always contained in a comment (Bob Heckel)
syn keyword sasTodo TODO TBD FIXME contained
" These don't fit anywhere else (Bob Heckel).
" Added others that were missing.
syn keyword sasUnderscore _ALL_ _AUTOMATIC_ _CHARACTER_ _INFILE_ _N_ _NAME_ _NULL_ _NUMERIC_ _USER_ _WEBOUT_
" End of SAS Functions
" Define the default highlighting.
" Only when an item doesn't have highlighting yet
" Default sas enhanced editor color syntax
hi sComment term=bold cterm=NONE ctermfg=Green ctermbg=Black gui=NONE guifg=DarkGreen guibg=White
hi sCard term=bold cterm=NONE ctermfg=Black ctermbg=Yellow gui=NONE guifg=Black guibg=LightYellow
hi sDate_Time term=NONE cterm=bold ctermfg=Green ctermbg=Black gui=bold guifg=SeaGreen guibg=White
hi sKeyword term=NONE cterm=NONE ctermfg=Blue ctermbg=Black gui=NONE guifg=Blue guibg=White
hi sFmtInfmt term=NONE cterm=NONE ctermfg=LightGreen ctermbg=Black gui=NONE guifg=SeaGreen guibg=White
hi sString term=NONE cterm=NONE ctermfg=Magenta ctermbg=Black gui=NONE guifg=Purple guibg=White
hi sText term=NONE cterm=NONE ctermfg=White ctermbg=Black gui=bold guifg=Black guibg=White
hi sNumber term=NONE cterm=bold ctermfg=Green ctermbg=Black gui=bold guifg=SeaGreen guibg=White
hi sProc term=NONE cterm=bold ctermfg=Blue ctermbg=Black gui=bold guifg=Navy guibg=White
hi sSection term=NONE cterm=bold ctermfg=Blue ctermbg=Black gui=bold guifg=Navy guibg=White
hi mDefine term=NONE cterm=bold ctermfg=White ctermbg=Black gui=bold guifg=Black guibg=White
hi mKeyword term=NONE cterm=NONE ctermfg=Blue ctermbg=Black gui=NONE guifg=Blue guibg=White
hi mReference term=NONE cterm=bold ctermfg=White ctermbg=Black gui=bold guifg=Blue guibg=White
hi mSection term=NONE cterm=NONE ctermfg=Blue ctermbg=Black gui=bold guifg=Navy guibg=White
hi mText term=NONE cterm=NONE ctermfg=White ctermbg=Black gui=bold guifg=Black guibg=White
" Colors that closely match SAS log colors for default color scheme
hi lError term=NONE cterm=NONE ctermfg=Red ctermbg=Black gui=none guifg=Red guibg=White
hi lWarning term=NONE cterm=NONE ctermfg=Green ctermbg=Black gui=none guifg=Green guibg=White
hi lNote term=NONE cterm=NONE ctermfg=Cyan ctermbg=Black gui=none guifg=Blue guibg=White
" Special hilighting for the SAS proc section
hi def link sasComment sComment
hi def link sasConditional sKeyword
hi def link sasStep sSection
hi def link sasFunction sKeyword
hi def link sasMacro mKeyword
hi def link sasMacroVar NonText
hi def link sasNumber sNumber
hi def link sasStatement sKeyword
hi def link sasString sString
hi def link sasProc sProc
" (Bob Heckel)
hi def link sasTodo Todo
hi def link sasErrMsg lError
hi def link sasWarnMsg lWarning
hi def link sasLogMsg lNote
hi def link sasCards sCard
" (Bob Heckel)
hi def link sasUnderscore PreProc
" Syncronize from beginning to keep large blocks from losing
" syntax coloring while moving through code.
syn sync fromstart
let b:current_syntax = "sas"
" vim: ts=8
|