-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathClarion.tmLanguage.sublime-syntax
100 lines (100 loc) · 7.19 KB
/
Clarion.tmLanguage.sublime-syntax
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
%YAML 1.2
---
# http://www.sublimetext.com/docs/3/syntax.html
name: Clarion
file_extensions:
- clw
- equ
- inc
- int
- txa
- txd
- tpl
- tpw
scope: source.clarion
contexts:
main:
- include: comments
- include: classLabels
- include: labels
- include: langConstants
- include: langProps
- include: langFunctions
- include: userVars
- include: implicits
- include: hardReservedKeywords
- include: softReservedKeywords
- include: directives
- include: baseTypes
- include: specialTypes
- include: strings
- include: attributes
- include: operators
- include: currencyInPicture
- include: numericConstants
attributes:
- match: \b(?i:ABOVE|ABSOLUTE|ALONE|ALRT|ANGLE|AT|AUTO|AUTOSIZE|AVE|BELOW|BEVEL|BINARY|BINDABLE|BITMAP|BOXED|C|CAP|CENTER|CENTERED|CNT|COLOR|COLUMN|COM|COMPATIBILITY|CONST|CURSOR|DEFAULT|DELAY|DERIVED|DIM|DLL|COM|DOCUMENT|DOCK|DOCKED|DOWN|DRAGID|DRIVER|DROP|DROPID|DUP|ENCRYPT|EXPAND|EXTEND|EXTERNAL|FILL|FILTER|FIRST|FIX|FIXED|FLAT|FONT|FROM|FULL|GLOBALCLASS|GRAY|GRID|HIDE|HLP|HSCROLL|HVSCROLL|ICON|ICONIZE|IMM|IMPLEMENTS|INNER|INS|LANDSCAPE|LAST|LATE|LAYOUT|LENGTH|LFT|LINEWIDTH|LINK|LOCATE|MARK|MASK|MAX|MAXIMIZE|MDI|META|MIN|MM|MODAL|MSG|NAME|NOBAR|NOCASE|NOFRAME|NOMEMO|NOMERGE|NOSHEET|OEM|OPT|ORDER|OUTER|OVER|OVR|OWNER|PAGE|PAGEAFTER|PAGEBEFORE|PALETTE|PAPER|PASCAL|PASSWORD|POINTS|PRE|PREVIEW|PRIMARY|PRIVATE|PROC|PROTECTED|RANGE|RAW|READONLY|RECLAIM|REPEAT|REPLACE|REQ|RESIZE|SCROLL|SINGLE|SMOOTH|SPREAD|STATIC|STD|STEP|STRETCH|SUM|SUPPRESS|TALLY|TARGET|THOUS|TILED|TIMER|TIP|TOGETHER|TOOLBOX|TRN|UP|UPR|USE|VALUE|VERTICAL|VCR|VIRTUAL|VSCROLL|WALLPAPER|WIDTH|WITHNEXT|WITHPRIOR|WIZARD|WRAP|ZOOM|CHECK|DOUBLE|SEPARATOR|PAGENO|RTF|SYSTEM|TYPE)\b
scope: entity.other.attribute-name.clarion
baseTypes:
- match: \b(?i:ANY|ASTRING|BFLOAT4|BFLOAT8|BLOB|MEMO|BOOL|BSTRING|BYTE|CSTRING|DATE|DECIMAL|DOUBLE|FLOAT4|LONG|PDECIMAL|PSTRING|REAL|SHORT|SIGNED|SREAL|STRING|TIME|ULONG|UNSIGNED|USHORT|VARIANT)\b
scope: storage.type.base-types.clarion
classLabels:
- match: '^[A-Za-z_][A-Za-z0-9_:]*\.([A-Za-z_][A-Za-z0-9_:\.]*)\s'
comment: label declarations with a different highlight for method names
scope: entity.name.class.clarion
captures:
1: entity.other.inherited-class.clarion
comments:
- match: (\!|\|).*
comment: Comments
scope: comment.line.clarion
currencyInPicture:
- match: '@[Nn][\-]?[0-9\.]*\~'
push:
- meta_scope: constant.numeric.clarion
- match: \~
pop: true
directives:
- match: \b(?i:ASSERT|BEGIN|COMPILE|EQUATE|INCLUDE|ITEMIZE|OMIT|ONCE|SECTION|SIZE)\b
scope: storage.modifier.directives.clarion
hardReservedKeywords:
- match: \b(?i:ACCEPT|BREAK|BY|CASE|CHOOSE|CYCLE|DO|ELSE|ELSIF|END|EXECUTE|EXIT|FUNCTION|GOTO|IF|LOOP|MEMBER|NEW|OF|OROF|PARENT|PROCEDURE|PROGRAM|RETURN|ROUTINE|SELF|THEN|TIMES|TO|UNTIL|WHILE)\b
scope: keyword.clarion
implicits:
- match: '([A-Za-z][A-Za-z0-9_]+)(\$|#|")'
scope: keyword.implicit.clarion
captures:
1: constant.numeric.implicit.clarion
labels:
- match: '^([A-Za-z_][A-Za-z0-9_:\.]*)\s'
scope: entity.name.function.clarion
langConstants:
- match: \b(?i:TRUE|FALSE)\b
scope: support.constant.clarion
langFunctions:
- match: \b(?i:ADD|DISPOSE|ADDRESS|GET|BAND|BUILD|CLEAR|CLOSE|DELETE|DUPLICATE|FIXFORMAT|FREESTATE|GETNULLS|GETSTATE|HOLD|LOCK|OPEN|POINTER|POSITION|RECORDS|REGET|RESET|RESTORESTATE|SET|SETNULLS|STATUS|UNBIND|UNFIXFORMAT|_PROC|_PROC1|_PROC2|_PROC3|ACCEPTED|ACOS|ALERT|ALIAS|ALL|ARC|ASIN|ASK|ATAN|BEEP|BINDEXPRESSION |BLANK|BOF|BOX|BUFFER|BYTES|CALL|CENTER|CHAIN|CHANGE|CHANGES|CHOICE|CHORD|CLIP|CLIPBOARD|CLOCK|CLONE|COLORDIALOG|COMMAND|COMMIT|COMPRESS |CONVERTANSITOOEM|CONVERTOEMTOANSI|CONTENTS|COPY|COS|DATE|DAY|DEBUGHOOK|DECOMPRESS |DELETEREG|DESTROY|DIRECTORY|DIRECTORY|DISABLE|DISPLAY|DRAGID|DROPID|ELLIPSE|EMPTY|ENABLE|ENDPAGE|EOF|ERASE|ERROR|ERRORCODE|ERRORFILE|EVALUATE|EXISTS|FIELD|FILEDIALOG|FILEDIALOGA|FILEERROR|FILEERRORCODE|FIRSTFIELD|FLUSH|FOCUS|FONTDIALOG|FONTDIALOGA|FORWARDKEY|FREE|FREEZE|GETEXITCODE|GETFONT|GETGROUP|GETREG|GETREGSUBKEYS|GETREGVALUES|GETINI|GETPOSITION|HALT|HELP|HIDE|HOWMANY|IDLE|IMAGE|INCOMPLETE|INSTANCE|INSTRING|ISALPHA|ISGROUP|ISLOWER|ISUPPER|ISSTRING|KEYBOARD|KEYCHAR|KEYCODE|KEYSTATE|LASTFIELD|LEFT|LEN|LINE|LOCALE|LOCKTHREAD|LOG10|LOGE|LONGPATH|LOWER|MATCH|MESSAGE|MONTH|MOUSEX|MOUSEY|NAME|NEXT|NOMEMO|NOTIFICATION|NOTIFY|NUMERIC|PACK|PATH|PENCOLOR|PENWIDTH|PENSTYLE|PIE|POLYGON|POPBIND|POPERRORS|POPUP|POST|PRESS|PRESSKEY|PREVIOUS|PRINTERDIALOG|PRINTERDIALOGA|PUSHBIND|PUSHERRORS|PUT|PUTREG|PUTINI|QUOTE|RANDOM|REGISTER|REGISTEREVENT|EVENT|RELEASE|REMOVE|RESUME|RIGHT|ROLLBACK|ROUNDBOX|RUN|RUNCODE|REJECTCODE|SELECT|SELECTED|SEND|SET3DLOOK|SETCLIPBOARD|SETCLOCK|SETCOMMAND|SETCURSOR|SETDROPID|SETEXITCODE|SETFONT|SETFONT|SETKEYCHAR|SETKEYCODE|SETLAYOUT|SETPATH|SETPENWIDTH|SETPENSTYLE|SETPENCOLOR|SETPOSITION|SETPOSITION|SETTARGET|SETTODAY|SHARE|SHORTPATH|SHOW|SHUTDOWN|SIN|SKIP|SQRT|START|STATUS|STOP|STREAM|STRPOS|SUB|SUSPEND|TAN|THREAD|THREADLOCKED|TIE|TIED|TODAY|TYPE|UNFREEZE|UNHIDE|UNLOAD|UNLOCK|UNLOCKTHREAD|UNQUOTE|UNREGISTER|UNREGISTEREVENT|UNTIE|UPDATE|UPPER|WATCH|WHAT|WHAT|WHERE|WHERE|WHO|WHO|YEAR|YIELD|ABS|AFTER|AGE|APPEND|BEFORE|BIND|BINDEXPRESSION|BOR|BSHIFT|BXOR|CHR|COMPRESS|CREATE|DDEACKNOWLEDGE|DDEAPP|DDECHANNEL|DDECLIENT|DDECLOSE|DDEEXECUTE|DDEITEM|DDEPOKE|DDEQUERY|DDEREAD|DDESERVER|DDETOPIC|DDEVALUE|DDEWRITE|DECOMPRESS|DEFORMAT|FILEEXISTS|FORMAT|FULLNAME|INLIST|INRANGE|INT|LOGOUT|OCXLOADIMAGE|OCXREGISTEREVENTPROC|OCXREGISTERPROPCHANGE|OCXREGISTERPROPEDIT|OCXSETPARAM|OCXUNREGISTEREVENTPROC|OCXUNREGISTERPROPCHANGE|OCXUNREGISTERPROPEDIT|OLEDIRECTORY|OMITTED|PEEK|POKE|PRAGMA|PRINT|PRINTER|RENAME|ROUND|SAVEDIALOG|SETNONULL|SETNULL|SHIFT|SORT|VAL|XOR)\b
scope: support.function.clarion
langProps:
- match: \b(?i:PROP|EVENT|COLOR|CREATE|BRUSH|FILE|LEVEL|STD|CURSOR|ICON|BEEP|REJECT|FONT|CHARSET|PEN|LISTZONE|BUTTON|MSGMODE|WINDOW|TEXT|FREEZE|DDE|FF_|OCX|DOCK|MATCH|PAPER|DRIVEROP|DATATYPE|GradientTypes):\w*\b
scope: support.constant.clarion
numericConstants:
- match: '\b(([0-9][0-9a-fA-F]*(h|H))|([0-1]*(b|B))|([0-7]*(o|O))|(([0-9]+\.?[0-9]*)|(\.[0-9]+))((e|E)(\+|-)?[0-9]+)?)\b'
scope: constant.numeric.clarion
operators:
- match: '\?|\{|\}|\+|\-|\*|\*\*|/|//|%|<|>|&|\||\^|~|=|:=:|,|\(|\)'
scope: keyword.operator.clarion
softReservedKeywords:
- match: \b(?i:APPLICATION|CLASS|CODE|DATA|DETAIL|ENUM|FILE|FOOTER|FORM|GROUP|HEADER|INLINE|ITEM|JOIN|MAP|MENU|MENUBAR|MODULE|OLECONTROL|OPTION|QUEUE|RECORD|REPORT|ROW|SHEET|STRUCT|TAB|TABLE|TOOLBAR|VIEW|WINDOW|PROPERTY|INDEXER)\b
scope: entity.name.tag.clarion
specialTypes:
- match: \b(?i:APPLICATION|BUTTON|CHECK|CLASS|COMBO|CUSTOM|DETAIL|ELLIPSE|ENTRY|FILE|FOOTER|FORM|GROUP|HEADER|IMAGE|INTERFACE|ITEM|KEY|INDEX|LINE|LIST|MENU|MENUBAR|OCX|OLE|OPTION|PANEL|PROGRESS|PROJECT|PROMPT|QUEUE|RADIO|REGION|REPORT|SEPARATOR|SHEET|SPIN|TAB|TABLE|TEXT|TOOLBAR|VBX|VIEW)\b
scope: storage.type.specialTypes.clarion
strings:
- match: \'
push:
- meta_scope: string.quoted.single.clarion
- match: \'
pop: true
userVars:
- match: \b(?i:LOC|GLO):\w*\b
scope: variable.parameter.clarion