" Vim syntax file:" Language: Clipper 5.2 & FlagShip" Maintainer: C R Zamana <zamana@zip.net>" Some things based on c.vim by Bram Moolenaar and pascal.vim by Mario Eusebio" Last Change: Sat Sep 09 2000" For version 5.x: Clear all syntax items" For version 6.x: Quit when a syntax file was already loadedif version < 600 syntax clearelseif exists("b:current_syntax") finishendif" Exceptions for my "Very Own" (TM) user variables naming style." If you don't like this, comment itsyn match clipperUserVariable "\<[a,b,c,d,l,n,o,u,x][A-Z][A-Za-z0-9_]*\>"syn match clipperUserVariable "\<[a-z]\>"" Clipper is case insensitive ( see "exception" above )syn case ignore" Clipper keywords ( in no particular order )syn keyword clipperStatement ACCEPT APPEND BLANK FROM AVERAGE CALL CANCELsyn keyword clipperStatement CLEAR ALL GETS MEMORY TYPEAHEAD CLOSEsyn keyword clipperStatement COMMIT CONTINUE SHARED NEW PICTsyn keyword clipperStatement COPY FILE STRUCTURE STRU EXTE TO COUNTsyn keyword clipperStatement CREATE FROM NILsyn keyword clipperStatement DELETE FILE DIR DISPLAY EJECT ERASE FIND GOsyn keyword clipperStatement INDEX INPUT VALID WHENsyn keyword clipperStatement JOIN KEYBOARD LABEL FORM LIST LOCATE MENU TOsyn keyword clipperStatement NOTE PACK QUIT READsyn keyword clipperStatement RECALL REINDEX RELEASE RENAME REPLACE REPORTsyn keyword clipperStatement RETURN FORM RESTOREsyn keyword clipperStatement RUN SAVE SEEK SELECTsyn keyword clipperStatement SKIP SORT STORE SUM TEXT TOTAL TYPE UNLOCKsyn keyword clipperStatement UPDATE USE WAIT ZAPsyn keyword clipperStatement BEGIN SEQUENCEsyn keyword clipperStatement SET ALTERNATE BELL CENTURY COLOR CONFIRM CONSOLEsyn keyword clipperStatement CURSOR DATE DECIMALS DEFAULT DELETED DELIMITERSsyn keyword clipperStatement DEVICE EPOCH ESCAPE EXACT EXCLUSIVE FILTER FIXEDsyn keyword clipperStatement FORMAT FUNCTION INTENSITY KEY MARGIN MESSAGEsyn keyword clipperStatement ORDER PATH PRINTER PROCEDURE RELATION SCOREBOARDsyn keyword clipperStatement SOFTSEEK TYPEAHEAD UNIQUE WRAPsyn keyword clipperStatement BOX CLEAR GET PROMPT SAY ? ??syn keyword clipperStatement DELETE TAG GO RTLINKCMD TMP DBLOCKINFOsyn keyword clipperStatement DBEVALINFO DBFIELDINFO DBFILTERINFO DBFUNCTABLEsyn keyword clipperStatement DBOPENINFO DBORDERCONDINFO DBORDERCREATEINFsyn keyword clipperStatement DBORDERINFO DBRELINFO DBSCOPEINFO DBSORTINFOsyn keyword clipperStatement DBSORTITEM DBTRANSINFO DBTRANSITEM WORKAREA" Conditionalssyn keyword clipperConditional CASE OTHERWISE ENDCASEsyn keyword clipperConditional IF ELSE ENDIF IIF IFDEF IFNDEF" Loopssyn keyword clipperRepeat DO WHILE ENDDOsyn keyword clipperRepeat FOR TO NEXT STEP" Visibilitysyn keyword clipperStorageClass ANNOUNCE STATICsyn keyword clipperStorageClass DECLARE EXTERNAL LOCAL MEMVAR PARAMETERSsyn keyword clipperStorageClass PRIVATE PROCEDURE PUBLIC REQUEST STATICsyn keyword clipperStorageClass FIELD FUNCTIONsyn keyword clipperStorageClass EXIT PROCEDURE INIT PROCEDURE" Operatorssyn match clipperOperator "$\|%\|&\|+\|-\|->\|!"syn match clipperOperator "\.AND\.\|\.NOT\.\|\.OR\."syn match clipperOperator ":=\|<\|<=\|<>\|!=\|#\|=\|==\|>\|>=\|@"syn match clipperOperator "*"" Numberssyn match clipperNumber "\<\d\+\(u\=l\=\|lu\|f\)\>"" Includessyn region clipperIncluded contained start=+"+ skip=+\\\\\|\\"+ end=+"+syn match clipperIncluded contained "<[^>]*>"syn match clipperInclude "^\s*#\s*include\>\s*["<]" contains=clipperIncluded" String and Character constantssyn region clipperString start=+"+ end=+"+syn region clipperString start=+'+ end=+'+" Delimiterssyn match ClipperDelimiters "[()]\|[\[\]]\|[{}]\|[||]"" Specialsyn match clipperLineContinuation ";"" This is from Bram Moolenaar:if exists("c_comment_strings") " A comment can contain cString, cCharacter and cNumber. " But a "*/" inside a cString in a clipperComment DOES end the comment! " So we need to use a special type of cString: clipperCommentString, which " also ends on "*/", and sees a "*" at the start of the line as comment " again. Unfortunately this doesn't very well work for // type of comments :-( syntax match clipperCommentSkip contained "^\s*\*\($\|\s\+\)" syntax region clipperCommentString contained start=+"+ skip=+\\\\\|\\"+ end=+"+ end=+\*/+me=s-1 contains=clipperCommentSkip syntax region clipperComment2String contained start=+"+ skip=+\\\\\|\\"+ end=+"+ end="$" syntax region clipperComment start="/\*" end="\*/" contains=clipperCommentString,clipperCharacter,clipperNumber,clipperString syntax match clipperComment "//.*" contains=clipperComment2String,clipperCharacter,clipperNumberelse syn region clipperComment start="/\*" end="\*/" syn match clipperComment "//.*"endifsyntax match clipperCommentError "\*/"" Lines beggining with an "*" are comments toosyntax match clipperComment "^\*.*"" 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 yetif version >= 508 || !exists("did_clipper_syntax_inits") if version < 508 let did_clipper_syntax_inits = 1 command -nargs=+ HiLink hi link <args> else command -nargs=+ HiLink hi def link <args> endif HiLink clipperConditional Conditional HiLink clipperRepeat Repeat HiLink clipperNumber Number HiLink clipperInclude Include HiLink clipperComment Comment HiLink clipperOperator Operator HiLink clipperStorageClass StorageClass HiLink clipperStatement Statement HiLink clipperString String HiLink clipperFunction Function HiLink clipperLineContinuation Special HiLink clipperDelimiters Delimiter HiLink clipperUserVariable Identifier delcommand HiLinkendiflet b:current_syntax = "clipper"" vim: ts=4
" Vim syntax file:
" Language: Clipper 5.2 & FlagShip
" Maintainer: C R Zamana <zamana@zip.net>
" Some things based on c.vim by Bram Moolenaar and pascal.vim by Mario Eusebio
" Last Change: Sat Sep 09 2000
" 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
" Exceptions for my "Very Own" (TM) user variables naming style.
" If you don't like this, comment it
syn match clipperUserVariable "\<[a,b,c,d,l,n,o,u,x][A-Z][A-Za-z0-9_]*\>"
syn match clipperUserVariable "\<[a-z]\>"
" Clipper is case insensitive ( see "exception" above )
syn case ignore
" Clipper keywords ( in no particular order )
syn keyword clipperStatement ACCEPT APPEND BLANK FROM AVERAGE CALL CANCEL
syn keyword clipperStatement CLEAR ALL GETS MEMORY TYPEAHEAD CLOSE
syn keyword clipperStatement COMMIT CONTINUE SHARED NEW PICT
syn keyword clipperStatement COPY FILE STRUCTURE STRU EXTE TO COUNT
syn keyword clipperStatement CREATE FROM NIL
syn keyword clipperStatement DELETE FILE DIR DISPLAY EJECT ERASE FIND GO
syn keyword clipperStatement INDEX INPUT VALID WHEN
syn keyword clipperStatement JOIN KEYBOARD LABEL FORM LIST LOCATE MENU TO
syn keyword clipperStatement NOTE PACK QUIT READ
syn keyword clipperStatement RECALL REINDEX RELEASE RENAME REPLACE REPORT
syn keyword clipperStatement RETURN FORM RESTORE
syn keyword clipperStatement RUN SAVE SEEK SELECT
syn keyword clipperStatement SKIP SORT STORE SUM TEXT TOTAL TYPE UNLOCK
syn keyword clipperStatement UPDATE USE WAIT ZAP
syn keyword clipperStatement BEGIN SEQUENCE
syn keyword clipperStatement SET ALTERNATE BELL CENTURY COLOR CONFIRM CONSOLE
syn keyword clipperStatement CURSOR DATE DECIMALS DEFAULT DELETED DELIMITERS
syn keyword clipperStatement DEVICE EPOCH ESCAPE EXACT EXCLUSIVE FILTER FIXED
syn keyword clipperStatement FORMAT FUNCTION INTENSITY KEY MARGIN MESSAGE
syn keyword clipperStatement ORDER PATH PRINTER PROCEDURE RELATION SCOREBOARD
syn keyword clipperStatement SOFTSEEK TYPEAHEAD UNIQUE WRAP
syn keyword clipperStatement BOX CLEAR GET PROMPT SAY ? ??
syn keyword clipperStatement DELETE TAG GO RTLINKCMD TMP DBLOCKINFO
syn keyword clipperStatement DBEVALINFO DBFIELDINFO DBFILTERINFO DBFUNCTABLE
syn keyword clipperStatement DBOPENINFO DBORDERCONDINFO DBORDERCREATEINF
syn keyword clipperStatement DBORDERINFO DBRELINFO DBSCOPEINFO DBSORTINFO
syn keyword clipperStatement DBSORTITEM DBTRANSINFO DBTRANSITEM WORKAREA
" Conditionals
syn keyword clipperConditional CASE OTHERWISE ENDCASE
syn keyword clipperConditional IF ELSE ENDIF IIF IFDEF IFNDEF
" Loops
syn keyword clipperRepeat DO WHILE ENDDO
syn keyword clipperRepeat FOR TO NEXT STEP
" Visibility
syn keyword clipperStorageClass ANNOUNCE STATIC
syn keyword clipperStorageClass DECLARE EXTERNAL LOCAL MEMVAR PARAMETERS
syn keyword clipperStorageClass PRIVATE PROCEDURE PUBLIC REQUEST STATIC
syn keyword clipperStorageClass FIELD FUNCTION
syn keyword clipperStorageClass EXIT PROCEDURE INIT PROCEDURE
" Operators
syn match clipperOperator "$\|%\|&\|+\|-\|->\|!"
syn match clipperOperator "\.AND\.\|\.NOT\.\|\.OR\."
syn match clipperOperator ":=\|<\|<=\|<>\|!=\|#\|=\|==\|>\|>=\|@"
syn match clipperOperator "*"
" Numbers
syn match clipperNumber "\<\d\+\(u\=l\=\|lu\|f\)\>"
" Includes
syn region clipperIncluded contained start=+"+ skip=+\\\\\|\\"+ end=+"+
syn match clipperIncluded contained "<[^>]*>"
syn match clipperInclude "^\s*#\s*include\>\s*["<]" contains=clipperIncluded
" String and Character constants
syn region clipperString start=+"+ end=+"+
syn region clipperString start=+'+ end=+'+
" Delimiters
syn match ClipperDelimiters "[()]\|[\[\]]\|[{}]\|[||]"
" Special
syn match clipperLineContinuation ";"
" This is from Bram Moolenaar:
if exists("c_comment_strings")
" A comment can contain cString, cCharacter and cNumber.
" But a "*/" inside a cString in a clipperComment DOES end the comment!
" So we need to use a special type of cString: clipperCommentString, which
" also ends on "*/", and sees a "*" at the start of the line as comment
" again. Unfortunately this doesn't very well work for // type of comments :-(
syntax match clipperCommentSkip contained "^\s*\*\($\|\s\+\)"
syntax region clipperCommentString contained start=+"+ skip=+\\\\\|\\"+ end=+"+ end=+\*/+me=s-1 contains=clipperCommentSkip
syntax region clipperComment2String contained start=+"+ skip=+\\\\\|\\"+ end=+"+ end="$"
syntax region clipperComment start="/\*" end="\*/" contains=clipperCommentString,clipperCharacter,clipperNumber,clipperString
syntax match clipperComment "//.*" contains=clipperComment2String,clipperCharacter,clipperNumber
else
syn region clipperComment start="/\*" end="\*/"
syn match clipperComment "//.*"
endif
syntax match clipperCommentError "\*/"
" Lines beggining with an "*" are comments too
syntax match clipperComment "^\*.*"
" 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_clipper_syntax_inits")
if version < 508
let did_clipper_syntax_inits = 1
command -nargs=+ HiLink hi link <args>
else
command -nargs=+ HiLink hi def link <args>
endif
HiLink clipperConditional Conditional
HiLink clipperRepeat Repeat
HiLink clipperNumber Number
HiLink clipperInclude Include
HiLink clipperComment Comment
HiLink clipperOperator Operator
HiLink clipperStorageClass StorageClass
HiLink clipperStatement Statement
HiLink clipperString String
HiLink clipperFunction Function
HiLink clipperLineContinuation Special
HiLink clipperDelimiters Delimiter
HiLink clipperUserVariable Identifier
delcommand HiLink
endif
let b:current_syntax = "clipper"
" vim: ts=4