home *** CD-ROM | disk | FTP | other *** search
- " 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.
- " For version 5.x: Clear all syntax items
- " For version 6.x: Quit when a syntax file was already loaded
- if version < 600
- syntax clear
- elseif 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. HiLink 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
-
- if version < 600
- syn region sasMacroVar start="\&" skip="[_&]" end="\W"he=e-1
- else " for the older Vim's just do it their way ...
- syn region sasMacroVar start="&" skip="[_&]" end="\W"he=e-1
- endif
-
-
- " 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.
- " For version 5.7 and earlier: only when not done already
- " For version 5.8 and later: only when an item doesn't have highlighting yet
-
- if version >= 508 || !exists("did_sas_syntax_inits")
- if version < 508
- let did_sas_syntax_inits = 1
- command -nargs=+ HiLink hi link <args>
- else
- command -nargs=+ HiLink hi def link <args>
- endif
-
- " 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
-
- HiLink sasComment sComment
- HiLink sasConditional sKeyword
- HiLink sasStep sSection
- HiLink sasFunction sKeyword
- HiLink sasMacro mKeyword
- HiLink sasMacroVar NonText
- HiLink sasNumber sNumber
- HiLink sasStatement sKeyword
- HiLink sasString sString
- HiLink sasProc sProc
- " (Bob Heckel)
- HiLink sasTodo Todo
- HiLink sasErrMsg lError
- HiLink sasWarnMsg lWarning
- HiLink sasLogMsg lNote
- HiLink sasCards sCard
- " (Bob Heckel)
- HiLink sasUnderscore PreProc
- delcommand HiLink
- endif
-
- " 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
-