1" Vim syntax file: 2" Language: Clipper 5.2 & FlagShip 3" Maintainer: C R Zamana <zamana@zip.net> 4" Some things based on c.vim by Bram Moolenaar and pascal.vim by Mario Eusebio 5" Last Change: Sat Sep 09 2000 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" Exceptions for my "Very Own" (TM) user variables naming style. 16" If you don't like this, comment it 17syn match clipperUserVariable "\<[a,b,c,d,l,n,o,u,x][A-Z][A-Za-z0-9_]*\>" 18syn match clipperUserVariable "\<[a-z]\>" 19 20" Clipper is case insensitive ( see "exception" above ) 21syn case ignore 22 23" Clipper keywords ( in no particular order ) 24syn keyword clipperStatement ACCEPT APPEND BLANK FROM AVERAGE CALL CANCEL 25syn keyword clipperStatement CLEAR ALL GETS MEMORY TYPEAHEAD CLOSE 26syn keyword clipperStatement COMMIT CONTINUE SHARED NEW PICT 27syn keyword clipperStatement COPY FILE STRUCTURE STRU EXTE TO COUNT 28syn keyword clipperStatement CREATE FROM NIL 29syn keyword clipperStatement DELETE FILE DIR DISPLAY EJECT ERASE FIND GO 30syn keyword clipperStatement INDEX INPUT VALID WHEN 31syn keyword clipperStatement JOIN KEYBOARD LABEL FORM LIST LOCATE MENU TO 32syn keyword clipperStatement NOTE PACK QUIT READ 33syn keyword clipperStatement RECALL REINDEX RELEASE RENAME REPLACE REPORT 34syn keyword clipperStatement RETURN FORM RESTORE 35syn keyword clipperStatement RUN SAVE SEEK SELECT 36syn keyword clipperStatement SKIP SORT STORE SUM TEXT TOTAL TYPE UNLOCK 37syn keyword clipperStatement UPDATE USE WAIT ZAP 38syn keyword clipperStatement BEGIN SEQUENCE 39syn keyword clipperStatement SET ALTERNATE BELL CENTURY COLOR CONFIRM CONSOLE 40syn keyword clipperStatement CURSOR DATE DECIMALS DEFAULT DELETED DELIMITERS 41syn keyword clipperStatement DEVICE EPOCH ESCAPE EXACT EXCLUSIVE FILTER FIXED 42syn keyword clipperStatement FORMAT FUNCTION INTENSITY KEY MARGIN MESSAGE 43syn keyword clipperStatement ORDER PATH PRINTER PROCEDURE RELATION SCOREBOARD 44syn keyword clipperStatement SOFTSEEK TYPEAHEAD UNIQUE WRAP 45syn keyword clipperStatement BOX CLEAR GET PROMPT SAY ? ?? 46syn keyword clipperStatement DELETE TAG GO RTLINKCMD TMP DBLOCKINFO 47syn keyword clipperStatement DBEVALINFO DBFIELDINFO DBFILTERINFO DBFUNCTABLE 48syn keyword clipperStatement DBOPENINFO DBORDERCONDINFO DBORDERCREATEINF 49syn keyword clipperStatement DBORDERINFO DBRELINFO DBSCOPEINFO DBSORTINFO 50syn keyword clipperStatement DBSORTITEM DBTRANSINFO DBTRANSITEM WORKAREA 51 52" Conditionals 53syn keyword clipperConditional CASE OTHERWISE ENDCASE 54syn keyword clipperConditional IF ELSE ENDIF IIF IFDEF IFNDEF 55 56" Loops 57syn keyword clipperRepeat DO WHILE ENDDO 58syn keyword clipperRepeat FOR TO NEXT STEP 59 60" Visibility 61syn keyword clipperStorageClass ANNOUNCE STATIC 62syn keyword clipperStorageClass DECLARE EXTERNAL LOCAL MEMVAR PARAMETERS 63syn keyword clipperStorageClass PRIVATE PROCEDURE PUBLIC REQUEST STATIC 64syn keyword clipperStorageClass FIELD FUNCTION 65syn keyword clipperStorageClass EXIT PROCEDURE INIT PROCEDURE 66 67" Operators 68syn match clipperOperator "$\|%\|&\|+\|-\|->\|!" 69syn match clipperOperator "\.AND\.\|\.NOT\.\|\.OR\." 70syn match clipperOperator ":=\|<\|<=\|<>\|!=\|#\|=\|==\|>\|>=\|@" 71syn match clipperOperator "*" 72 73" Numbers 74syn match clipperNumber "\<\d\+\(u\=l\=\|lu\|f\)\>" 75 76" Includes 77syn region clipperIncluded contained start=+"+ skip=+\\\\\|\\"+ end=+"+ 78syn match clipperIncluded contained "<[^>]*>" 79syn match clipperInclude "^\s*#\s*include\>\s*["<]" contains=clipperIncluded 80 81" String and Character constants 82syn region clipperString start=+"+ end=+"+ 83syn region clipperString start=+'+ end=+'+ 84 85" Delimiters 86syn match ClipperDelimiters "[()]\|[\[\]]\|[{}]\|[||]" 87 88" Special 89syn match clipperLineContinuation ";" 90 91" This is from Bram Moolenaar: 92if exists("c_comment_strings") 93 " A comment can contain cString, cCharacter and cNumber. 94 " But a "*/" inside a cString in a clipperComment DOES end the comment! 95 " So we need to use a special type of cString: clipperCommentString, which 96 " also ends on "*/", and sees a "*" at the start of the line as comment 97 " again. Unfortunately this doesn't very well work for // type of comments :-( 98 syntax match clipperCommentSkip contained "^\s*\*\($\|\s\+\)" 99 syntax region clipperCommentString contained start=+"+ skip=+\\\\\|\\"+ end=+"+ end=+\*/+me=s-1 contains=clipperCommentSkip 100 syntax region clipperComment2String contained start=+"+ skip=+\\\\\|\\"+ end=+"+ end="$" 101 syntax region clipperComment start="/\*" end="\*/" contains=clipperCommentString,clipperCharacter,clipperNumber,clipperString 102 syntax match clipperComment "//.*" contains=clipperComment2String,clipperCharacter,clipperNumber 103else 104 syn region clipperComment start="/\*" end="\*/" 105 syn match clipperComment "//.*" 106endif 107syntax match clipperCommentError "\*/" 108 109" Lines beggining with an "*" are comments too 110syntax match clipperComment "^\*.*" 111 112 113" Define the default highlighting. 114" For version 5.7 and earlier: only when not done already 115" For version 5.8 and later: only when an item doesn't have highlighting yet 116if version >= 508 || !exists("did_clipper_syntax_inits") 117 if version < 508 118 let did_clipper_syntax_inits = 1 119 command -nargs=+ HiLink hi link <args> 120 else 121 command -nargs=+ HiLink hi def link <args> 122 endif 123 124 HiLink clipperConditional Conditional 125 HiLink clipperRepeat Repeat 126 HiLink clipperNumber Number 127 HiLink clipperInclude Include 128 HiLink clipperComment Comment 129 HiLink clipperOperator Operator 130 HiLink clipperStorageClass StorageClass 131 HiLink clipperStatement Statement 132 HiLink clipperString String 133 HiLink clipperFunction Function 134 HiLink clipperLineContinuation Special 135 HiLink clipperDelimiters Delimiter 136 HiLink clipperUserVariable Identifier 137 138 delcommand HiLink 139endif 140 141let b:current_syntax = "clipper" 142 143" vim: ts=4 144