1071d4279SBram Moolenaar" Vim syntax file: 2071d4279SBram Moolenaar" Language: Clipper 5.2 & FlagShip 3071d4279SBram Moolenaar" Maintainer: C R Zamana <[email protected]> 4071d4279SBram Moolenaar" Some things based on c.vim by Bram Moolenaar and pascal.vim by Mario Eusebio 5b6b046b2SBram Moolenaar" Last Change: 2011 Dec 29 by Thilo Six 6071d4279SBram Moolenaar 789bcfda6SBram Moolenaar" quit when a syntax file was already loaded 889bcfda6SBram Moolenaarif exists("b:current_syntax") 9071d4279SBram Moolenaar finish 10071d4279SBram Moolenaarendif 11071d4279SBram Moolenaar 12b6b046b2SBram Moolenaarlet s:cpo_save = &cpo 13b6b046b2SBram Moolenaarset cpo&vim 14b6b046b2SBram Moolenaar 15071d4279SBram Moolenaar" Exceptions for my "Very Own" (TM) user variables naming style. 16071d4279SBram Moolenaar" If you don't like this, comment it 17071d4279SBram Moolenaarsyn match clipperUserVariable "\<[a,b,c,d,l,n,o,u,x][A-Z][A-Za-z0-9_]*\>" 18071d4279SBram Moolenaarsyn match clipperUserVariable "\<[a-z]\>" 19071d4279SBram Moolenaar 20071d4279SBram Moolenaar" Clipper is case insensitive ( see "exception" above ) 21071d4279SBram Moolenaarsyn case ignore 22071d4279SBram Moolenaar 23071d4279SBram Moolenaar" Clipper keywords ( in no particular order ) 24071d4279SBram Moolenaarsyn keyword clipperStatement ACCEPT APPEND BLANK FROM AVERAGE CALL CANCEL 25071d4279SBram Moolenaarsyn keyword clipperStatement CLEAR ALL GETS MEMORY TYPEAHEAD CLOSE 26071d4279SBram Moolenaarsyn keyword clipperStatement COMMIT CONTINUE SHARED NEW PICT 27071d4279SBram Moolenaarsyn keyword clipperStatement COPY FILE STRUCTURE STRU EXTE TO COUNT 28071d4279SBram Moolenaarsyn keyword clipperStatement CREATE FROM NIL 29071d4279SBram Moolenaarsyn keyword clipperStatement DELETE FILE DIR DISPLAY EJECT ERASE FIND GO 30071d4279SBram Moolenaarsyn keyword clipperStatement INDEX INPUT VALID WHEN 31071d4279SBram Moolenaarsyn keyword clipperStatement JOIN KEYBOARD LABEL FORM LIST LOCATE MENU TO 32071d4279SBram Moolenaarsyn keyword clipperStatement NOTE PACK QUIT READ 33071d4279SBram Moolenaarsyn keyword clipperStatement RECALL REINDEX RELEASE RENAME REPLACE REPORT 34071d4279SBram Moolenaarsyn keyword clipperStatement RETURN FORM RESTORE 35071d4279SBram Moolenaarsyn keyword clipperStatement RUN SAVE SEEK SELECT 36071d4279SBram Moolenaarsyn keyword clipperStatement SKIP SORT STORE SUM TEXT TOTAL TYPE UNLOCK 37071d4279SBram Moolenaarsyn keyword clipperStatement UPDATE USE WAIT ZAP 38071d4279SBram Moolenaarsyn keyword clipperStatement BEGIN SEQUENCE 39071d4279SBram Moolenaarsyn keyword clipperStatement SET ALTERNATE BELL CENTURY COLOR CONFIRM CONSOLE 40071d4279SBram Moolenaarsyn keyword clipperStatement CURSOR DATE DECIMALS DEFAULT DELETED DELIMITERS 41071d4279SBram Moolenaarsyn keyword clipperStatement DEVICE EPOCH ESCAPE EXACT EXCLUSIVE FILTER FIXED 42071d4279SBram Moolenaarsyn keyword clipperStatement FORMAT FUNCTION INTENSITY KEY MARGIN MESSAGE 43071d4279SBram Moolenaarsyn keyword clipperStatement ORDER PATH PRINTER PROCEDURE RELATION SCOREBOARD 44071d4279SBram Moolenaarsyn keyword clipperStatement SOFTSEEK TYPEAHEAD UNIQUE WRAP 45071d4279SBram Moolenaarsyn keyword clipperStatement BOX CLEAR GET PROMPT SAY ? ?? 46071d4279SBram Moolenaarsyn keyword clipperStatement DELETE TAG GO RTLINKCMD TMP DBLOCKINFO 47071d4279SBram Moolenaarsyn keyword clipperStatement DBEVALINFO DBFIELDINFO DBFILTERINFO DBFUNCTABLE 48071d4279SBram Moolenaarsyn keyword clipperStatement DBOPENINFO DBORDERCONDINFO DBORDERCREATEINF 49071d4279SBram Moolenaarsyn keyword clipperStatement DBORDERINFO DBRELINFO DBSCOPEINFO DBSORTINFO 50071d4279SBram Moolenaarsyn keyword clipperStatement DBSORTITEM DBTRANSINFO DBTRANSITEM WORKAREA 51071d4279SBram Moolenaar 52071d4279SBram Moolenaar" Conditionals 53071d4279SBram Moolenaarsyn keyword clipperConditional CASE OTHERWISE ENDCASE 54071d4279SBram Moolenaarsyn keyword clipperConditional IF ELSE ENDIF IIF IFDEF IFNDEF 55071d4279SBram Moolenaar 56071d4279SBram Moolenaar" Loops 57071d4279SBram Moolenaarsyn keyword clipperRepeat DO WHILE ENDDO 58071d4279SBram Moolenaarsyn keyword clipperRepeat FOR TO NEXT STEP 59071d4279SBram Moolenaar 60071d4279SBram Moolenaar" Visibility 61071d4279SBram Moolenaarsyn keyword clipperStorageClass ANNOUNCE STATIC 62071d4279SBram Moolenaarsyn keyword clipperStorageClass DECLARE EXTERNAL LOCAL MEMVAR PARAMETERS 63071d4279SBram Moolenaarsyn keyword clipperStorageClass PRIVATE PROCEDURE PUBLIC REQUEST STATIC 64071d4279SBram Moolenaarsyn keyword clipperStorageClass FIELD FUNCTION 65071d4279SBram Moolenaarsyn keyword clipperStorageClass EXIT PROCEDURE INIT PROCEDURE 66071d4279SBram Moolenaar 67071d4279SBram Moolenaar" Operators 68071d4279SBram Moolenaarsyn match clipperOperator "$\|%\|&\|+\|-\|->\|!" 69071d4279SBram Moolenaarsyn match clipperOperator "\.AND\.\|\.NOT\.\|\.OR\." 70071d4279SBram Moolenaarsyn match clipperOperator ":=\|<\|<=\|<>\|!=\|#\|=\|==\|>\|>=\|@" 71071d4279SBram Moolenaarsyn match clipperOperator "*" 72071d4279SBram Moolenaar 73071d4279SBram Moolenaar" Numbers 74071d4279SBram Moolenaarsyn match clipperNumber "\<\d\+\(u\=l\=\|lu\|f\)\>" 75071d4279SBram Moolenaar 76071d4279SBram Moolenaar" Includes 77071d4279SBram Moolenaarsyn region clipperIncluded contained start=+"+ skip=+\\\\\|\\"+ end=+"+ 78071d4279SBram Moolenaarsyn match clipperIncluded contained "<[^>]*>" 79071d4279SBram Moolenaarsyn match clipperInclude "^\s*#\s*include\>\s*["<]" contains=clipperIncluded 80071d4279SBram Moolenaar 81071d4279SBram Moolenaar" String and Character constants 82071d4279SBram Moolenaarsyn region clipperString start=+"+ end=+"+ 83071d4279SBram Moolenaarsyn region clipperString start=+'+ end=+'+ 84071d4279SBram Moolenaar 85071d4279SBram Moolenaar" Delimiters 86071d4279SBram Moolenaarsyn match ClipperDelimiters "[()]\|[\[\]]\|[{}]\|[||]" 87071d4279SBram Moolenaar 88071d4279SBram Moolenaar" Special 89071d4279SBram Moolenaarsyn match clipperLineContinuation ";" 90071d4279SBram Moolenaar 91071d4279SBram Moolenaar" This is from Bram Moolenaar: 92071d4279SBram Moolenaarif exists("c_comment_strings") 93071d4279SBram Moolenaar " A comment can contain cString, cCharacter and cNumber. 94071d4279SBram Moolenaar " But a "*/" inside a cString in a clipperComment DOES end the comment! 95071d4279SBram Moolenaar " So we need to use a special type of cString: clipperCommentString, which 96071d4279SBram Moolenaar " also ends on "*/", and sees a "*" at the start of the line as comment 97071d4279SBram Moolenaar " again. Unfortunately this doesn't very well work for // type of comments :-( 98071d4279SBram Moolenaar syntax match clipperCommentSkip contained "^\s*\*\($\|\s\+\)" 99071d4279SBram Moolenaar syntax region clipperCommentString contained start=+"+ skip=+\\\\\|\\"+ end=+"+ end=+\*/+me=s-1 contains=clipperCommentSkip 100071d4279SBram Moolenaar syntax region clipperComment2String contained start=+"+ skip=+\\\\\|\\"+ end=+"+ end="$" 101071d4279SBram Moolenaar syntax region clipperComment start="/\*" end="\*/" contains=clipperCommentString,clipperCharacter,clipperNumber,clipperString 102071d4279SBram Moolenaar syntax match clipperComment "//.*" contains=clipperComment2String,clipperCharacter,clipperNumber 103071d4279SBram Moolenaarelse 104071d4279SBram Moolenaar syn region clipperComment start="/\*" end="\*/" 105071d4279SBram Moolenaar syn match clipperComment "//.*" 106071d4279SBram Moolenaarendif 107071d4279SBram Moolenaarsyntax match clipperCommentError "\*/" 108071d4279SBram Moolenaar 109071d4279SBram Moolenaar" Lines beggining with an "*" are comments too 110071d4279SBram Moolenaarsyntax match clipperComment "^\*.*" 111071d4279SBram Moolenaar 112071d4279SBram Moolenaar 113071d4279SBram Moolenaar" Define the default highlighting. 11489bcfda6SBram Moolenaar" Only when an item doesn't have highlighting yet 115071d4279SBram Moolenaar 116*f37506f6SBram Moolenaarhi def link clipperConditional Conditional 117*f37506f6SBram Moolenaarhi def link clipperRepeat Repeat 118*f37506f6SBram Moolenaarhi def link clipperNumber Number 119*f37506f6SBram Moolenaarhi def link clipperInclude Include 120*f37506f6SBram Moolenaarhi def link clipperComment Comment 121*f37506f6SBram Moolenaarhi def link clipperOperator Operator 122*f37506f6SBram Moolenaarhi def link clipperStorageClass StorageClass 123*f37506f6SBram Moolenaarhi def link clipperStatement Statement 124*f37506f6SBram Moolenaarhi def link clipperString String 125*f37506f6SBram Moolenaarhi def link clipperFunction Function 126*f37506f6SBram Moolenaarhi def link clipperLineContinuation Special 127*f37506f6SBram Moolenaarhi def link clipperDelimiters Delimiter 128*f37506f6SBram Moolenaarhi def link clipperUserVariable Identifier 129071d4279SBram Moolenaar 130071d4279SBram Moolenaar 131071d4279SBram Moolenaarlet b:current_syntax = "clipper" 132071d4279SBram Moolenaar 133b6b046b2SBram Moolenaarlet &cpo = s:cpo_save 134b6b046b2SBram Moolenaarunlet s:cpo_save 135b6b046b2SBram Moolenaar" vim: ts=8 136