xref: /vim-8.2.3635/runtime/syntax/clipper.vim (revision f37506f6)
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