xref: /vim-8.2.3635/runtime/syntax/clipper.vim (revision 818c9e7e)
1" Vim syntax file:
2" Language:	Clipper 5.2 & FlagShip
3" Maintainer:	C R Zamana <[email protected]>
4" Some things based on c.vim by Bram Moolenaar and pascal.vim by Mario Eusebio
5" Last Change:	2011 Dec 29 by Thilo Six
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
15let s:cpo_save = &cpo
16set cpo&vim
17
18" 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
146let &cpo = s:cpo_save
147unlet s:cpo_save
148" vim: ts=8
149