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