Bram Moolenaar | e2db695 | 2013-07-24 19:53:36 +0200 | [diff] [blame] | 1 | " Vim syntax file |
| 2 | " Modified from http://plnet.org/files/vim/ |
| 3 | " using keywords from http://www.kednos.com/pli/docs/reference_manual/6291pro_contents.html |
| 4 | " 2012-11-13 Alan Thompson |
| 5 | |
Bram Moolenaar | 89bcfda | 2016-08-30 23:26:57 +0200 | [diff] [blame] | 6 | " quit when a syntax file was already loaded |
| 7 | if exists("b:current_syntax") |
Bram Moolenaar | e2db695 | 2013-07-24 19:53:36 +0200 | [diff] [blame] | 8 | finish |
| 9 | endif |
| 10 | |
| 11 | syn case ignore |
| 12 | |
| 13 | " Todo. |
| 14 | syn keyword pl1Todo TODO FIXME XXX DEBUG NOTE |
| 15 | |
| 16 | " pl1CommentGroup allows adding matches for special things in comments |
| 17 | " 20010723az: Added this so that these could be matched in comments... |
| 18 | syn cluster pl1CommentGroup contains=pl1Todo |
| 19 | |
| 20 | syn match pl1Garbage "[^ \t()]" |
| 21 | syn match pl1Identifier "[a-z][a-z0-9$_#]*" |
| 22 | syn match pl1HostIdentifier ":[a-z][a-z0-9$_#]*" |
| 23 | |
| 24 | " 20010723az: When wanted, highlight the trailing whitespace -- this is |
| 25 | " based on c_space_errors |
| 26 | if exists("c_space_errors") |
| 27 | if !exists("c_no_trail_space_error") |
| 28 | syn match pl1SpaceError "\s\+$" |
| 29 | endif |
| 30 | if !exists("c_no_tab_space_error") |
| 31 | syn match pl1SpaceError " \+\t"me=e-1 |
| 32 | endif |
| 33 | endif |
| 34 | |
| 35 | " Symbols. |
| 36 | syn match pl1Symbol "\(;\|,\|\.\)" |
| 37 | syn match pl1PreProcSym "%" |
| 38 | |
| 39 | " Operators. |
| 40 | syn match pl1Operator "\(&\|:\|!\|+\|-\|\*\|/\|=\|<\|>\|@\|\*\*\|!=\|\~=\)" |
| 41 | syn match pl1Operator "\(\^\|\^=\|<=\|>=\|:=\|=>\|\.\.\|||\|<<\|>>\|\"\)" |
| 42 | |
| 43 | " Attributes |
| 44 | syn keyword pl1Attribute BACKWARDS BUFFERED BUF CONNECTED CONN CONSTANT EVENT |
| 45 | syn keyword pl1Attribute EXCLUSIVE EXCL FORMAT GENERIC IRREDUCIBLE IRRED LOCAL |
| 46 | syn keyword pl1Attribute REDUCIBLE RED TASK TRANSIENT UNBUFFERED UNBUF ALIGNED ANY |
| 47 | syn keyword pl1Attribute AREA AUTOMATIC AUTO BASED BUILTIN CONDITION COND CONTROLLED |
| 48 | syn keyword pl1Attribute CTL DEFINED DEF DIRECT ENVIRONMENT ENV EXTERNAL EXT FILE |
| 49 | syn keyword pl1Attribute GLOBALDEF GLOBALREF INITIAL INIT INPUT INTERNAL INT KEYED |
| 50 | syn keyword pl1Attribute LABEL LIKE LIST MEMBER NONVARYING NONVAR OPTIONAL OPTIONS |
| 51 | syn keyword pl1Attribute OUTPUT PARAMETER PARM PICTURE PIC POSITION POS PRECISION |
| 52 | syn keyword pl1Attribute PREC PRINT READONLY RECORD REFER RETURNS SEQUENTIAL SEQL |
| 53 | syn keyword pl1Attribute STATIC STREAM STRUCTURE TRUNCATE UNALIGNED UNAL UNION UPDATE |
| 54 | syn keyword pl1Attribute VARIABLE VARYING VAR COMPLEX CPLX REAL BINARY BIN BIT |
| 55 | syn keyword pl1Attribute CHARACTER CHAR DECIMAL DEC DESCRIPTOR DESC DIMENSION DIM |
| 56 | syn keyword pl1Attribute FIXED FLOAT OFFSET POINTER PTR REFERENCE VALUE VAL |
| 57 | |
| 58 | " Functions |
| 59 | syn keyword pl1Function AFTER ALL ANY BEFORE COMPLETION CPLN CONJG COUNT |
| 60 | syn keyword pl1Function CURRENTSTORAGE CSTG DATAFIELD DECAT DOT ERF ERFC IMAG |
| 61 | syn keyword pl1Function ONCOUNT ONFIELD ONLOC POLY PRIORITY REPEAT SAMEKEY STATUS |
| 62 | syn keyword pl1Function STORAGE STG ABS ACOS ACTUALCOUNT ADD ADDR ADDREL ALLOCATION |
| 63 | syn keyword pl1Function ALLOCN ASIN ATAN ATAND ATANH BOOL BYTE BYTESIZE CEIL COLLATE |
| 64 | syn keyword pl1Function COPY COS COSD COSH DATE DATETIME DECODE DISPLAY DIVIDE EMPTY |
| 65 | syn keyword pl1Function ENCODE ERROR EVERY EXP EXTEND FLOOR FLUSH FREE HBOUND HIGH |
| 66 | syn keyword pl1Function INDEX INFORM INT LBOUND LENGTH LINE LINENO LOG LOG10 LOG2 |
| 67 | syn keyword pl1Function LOW LTRIM MAX MAXLENGTH MIN MOD MULTIPLY NEXT_VOLUME NULL |
| 68 | syn keyword pl1Function ONARGSLIST ONCHAR ONCODE ONFILE ONKEY ONSOURCE PAGENO POSINT |
| 69 | syn keyword pl1Function PRESENT PROD RANK RELEASE RESIGNAL REVERSE REWIND ROUND |
| 70 | syn keyword pl1Function RTRIM SEARCH SIGN SIN SIND SINH SIZE SOME SPACEBLOCK SQRT |
| 71 | syn keyword pl1Function STRING SUBSTR SUBTRACT SUM TAN TAND TANH TIME TRANSLATE TRIM |
| 72 | syn keyword pl1Function TRUNC UNSPEC VALID VARIANT VERIFY WARN |
| 73 | |
| 74 | " Other keywords |
| 75 | syn keyword pl1Other ATTENTION ATTN C CONVERSION CONV DATA NAME NOCONVERSION |
| 76 | syn keyword pl1Other NOCONV NOFIXEDOVERFLOW NOFOFL NOOVERFLOW NOSIZE |
| 77 | syn keyword pl1Other NOSTRINGRANGE NOSTRG NOSTRINGSIZE NOSTRZ NOSUBSCRIPTRANGE |
| 78 | syn keyword pl1Other NOSUBRG NOZERODIVIDE NOZDIV OVERFLOW OFL PENDING RECORD |
| 79 | syn keyword pl1Other REENTRANT SIZE STRINGRANGE STRG STRINGSIZE STRZ |
| 80 | syn keyword pl1Other SUBSCRIPTRANGE SUBRG TRANSMIT A ANYCONDITION APPEND B B1 B2 |
| 81 | syn keyword pl1Other B3 B4 BACKUP_DATE BATCH BLOCK_BOUNDARY_FORMAT BLOCK_IO |
| 82 | syn keyword pl1Other BLOCK_SIZE BUCKET_SIZE BY CANCEL_CONTROL_O |
| 83 | syn keyword pl1Other CARRIAGE_RETURN_FORMAT COLUMN COL CONTIGUOUS |
| 84 | syn keyword pl1Other CONTIGUOUS_BEST_TRY CONVERSION CONV CREATION_DATE |
| 85 | syn keyword pl1Other CURRENT_POSITION DEFAULT_FILE_NAME DEFERRED_WRITE E EDIT |
| 86 | syn keyword pl1Other ENDFILE ENDPAGE EXPIRATION_DATE EXTENSION_SIZE F FAST_DELETE |
| 87 | syn keyword pl1Other FILE_ID FILE_ID_TO FILE_SIZE FINISH FIXEDOVERFLOW FOFL |
| 88 | syn keyword pl1Other FIXED_CONTROL_FROM FIXED_CONTROL_SIZE FIXED_CONTROL_SIZE_TO |
| 89 | syn keyword pl1Other FIXED_CONTROL_TO FIXED_LENGTH_RECORDS FROM GROUP_PROTECTION |
| 90 | syn keyword pl1Other IDENT IGNORE_LINE_MARKS IN INDEXED INDEX_NUMBER INITIAL_FILL |
| 91 | syn keyword pl1Other INTO KEY KEYFROM KEYTO LINESIZE LOCK_ON_READ LOCK_ON_WRITE |
| 92 | syn keyword pl1Other MAIN MANUAL_UNLOCKING MATCH_GREATER MATCH_GREATER_EQUAL |
| 93 | syn keyword pl1Other MATCH_NEXT MATCH_NEXT_EQUAL MAXIMUM_RECORD_NUMBER |
| 94 | syn keyword pl1Other MAXIMUM_RECORD_SIZE MULTIBLOCK_COUNT MULTIBUFFER_COUNT |
| 95 | syn keyword pl1Other NOLOCK NONEXISTENT_RECORD NONRECURSIVE NO_ECHO NO_FILTER |
| 96 | syn keyword pl1Other NO_SHARE OVERFLOW OFL OWNER_GROUP OWNER_ID OWNER_MEMBER |
| 97 | syn keyword pl1Other OWNER_PROTECTION P PAGE PAGESIZE PRINTER_FORMAT PROMPT |
| 98 | syn keyword pl1Other PURGE_TYPE_AHEAD R READ_AHEAD READ_CHECK READ_REGARDLESS |
| 99 | syn keyword pl1Other RECORD_ID RECORD_ID_ACCESS RECORD_ID_TO RECURSIVE REPEAT |
| 100 | syn keyword pl1Other RETRIEVAL_POINTERS REVISION_DATE REWIND_ON_CLOSE |
| 101 | syn keyword pl1Other REWIND_ON_OPEN SCALARVARYING SET SHARED_READ SHARED_WRITE |
| 102 | syn keyword pl1Other SKIP SPOOL STORAGE STRINGRANGE STRG SUBSCRIPTRANGE SUBRG |
| 103 | syn keyword pl1Other SUPERSEDE SYSIN SYSPRINT SYSTEM_PROTECTION TAB TEMPORARY |
| 104 | syn keyword pl1Other TIMEOUT_PERIOD TITLE TO UNDEFINEDFILE UNDF UNDERFLOW UFL |
| 105 | syn keyword pl1Other UNTIL USER_OPEN VAXCONDITION WAIT_FOR_RECORD WHILE |
| 106 | syn keyword pl1Other WORLD_PROTECTION WRITE_BEHIND WRITE_CHECK X ZERODIVIDE ZDIV |
| 107 | |
| 108 | " PreProcessor keywords |
| 109 | syn keyword pl1PreProc ACTIVATE DEACTIVATE DECLARE DCL DICTIONARY DO END ERROR |
| 110 | syn keyword pl1PreProc FATAL GOTO IF INCLUDE INFORM LIST NOLIST PAGE PROCEDURE PROC |
| 111 | syn keyword pl1PreProc REPLACE RETURN SBTTL TITLE WARN THEN ELSE |
| 112 | |
| 113 | " Statements |
| 114 | syn keyword pl1Statement CALL SUB ENTRY BY NAME CASE CHECK COPY DEFAULT DFT DELAY |
| 115 | syn keyword pl1Statement DESCRIPTORS DISPLAY EXIT FETCH HALT IGNORE LIST LOCATE |
| 116 | syn keyword pl1Statement NOCHECK NOLOCK NONE ORDER RANGE RELEASE REORDER REPLY SNAP |
| 117 | syn keyword pl1Statement SYSTEM TAB UNLOCK WAIT ALLOCATE ALLOC BEGIN CALL CLOSE |
| 118 | syn keyword pl1Statement DECLARE DCL DELETE DO ELSE END FORMAT GET GOTO GO TO IF |
| 119 | syn keyword pl1Statement LEAVE NORESCAN ON OPEN OTHERWISE OTHER PROCEDURE PROC PUT |
| 120 | syn keyword pl1Statement READ RESCAN RETURN REVERT REWRITE SELECT SIGNAL SNAP |
| 121 | syn keyword pl1Statement STATEMENT STOP SYSTEM THEN WHEN WRITE |
| 122 | |
| 123 | " PL1's own keywords |
| 124 | " syn match pl1Keyword "\<END\>" |
| 125 | " syn match pl1Keyword "\.COUNT\>"hs=s+1 |
| 126 | " syn match pl1Keyword "\.EXISTS\>"hs=s+1 |
| 127 | " syn match pl1Keyword "\.FIRST\>"hs=s+1 |
| 128 | " syn match pl1Keyword "\.LAST\>"hs=s+1 |
| 129 | " syn match pl1Keyword "\.DELETE\>"hs=s+1 |
| 130 | " syn match pl1Keyword "\.PREV\>"hs=s+1 |
| 131 | " syn match pl1Keyword "\.NEXT\>"hs=s+1 |
| 132 | |
| 133 | if exists("pl1_highlight_triggers") |
| 134 | syn keyword pl1Trigger INSERTING UPDATING DELETING |
| 135 | endif |
| 136 | |
| 137 | " Conditionals. |
| 138 | syn keyword pl1Conditional ELSIF ELSE IF |
| 139 | syn match pl1Conditional "\<END\s\+IF\>" |
| 140 | |
| 141 | " Loops. |
| 142 | syn keyword pl1Repeat FOR LOOP WHILE FORALL |
| 143 | syn match pl1Repeat "\<END\s\+LOOP\>" |
| 144 | |
| 145 | " Various types of comments. |
| 146 | " 20010723az: Added the ability to treat strings within comments just like |
| 147 | " C does. |
| 148 | if exists("c_comment_strings") |
| 149 | syntax match pl1CommentSkip contained "^\s*\*\($\|\s\+\)" |
| 150 | syntax region pl1CommentString contained start=+L\="+ skip=+\\\\\|\\"+ end=+"+ end=+\*/+me=s-1 contains=pl1CommentSkip |
| 151 | syntax region pl1Comment2String contained start=+L\="+ skip=+\\\\\|\\"+ end=+"+ end="$" |
| 152 | syntax region pl1CommentL start="--" skip="\\$" end="$" keepend contains=@pl1CommentGroup,pl1Comment2String,pl1CharLiteral,pl1BooleanLiteral,pl1NumbersCom,pl1SpaceError |
| 153 | syntax region pl1Comment start="/\*" end="\*/" contains=@pl1CommentGroup,pl1Comment2String,pl1CharLiteral,pl1BooleanLiteral,pl1NumbersCom,pl1SpaceError |
| 154 | else |
| 155 | syntax region pl1CommentL start="--" skip="\\$" end="$" keepend contains=@pl1CommentGroup,pl1SpaceError |
| 156 | syntax region pl1Comment start="/\*" end="\*/" contains=@pl1CommentGroup,pl1SpaceError |
| 157 | endif |
| 158 | |
| 159 | " 20010723az: These are the old comment commands ... commented out. |
| 160 | " syn match pl1Comment "--.*$" contains=pl1Todo |
| 161 | " syn region pl1Comment start="/\*" end="\*/" contains=pl1Todo |
| 162 | syn sync ccomment pl1Comment |
| 163 | syn sync ccomment pl1CommentL |
| 164 | |
| 165 | " To catch unterminated string literals. |
| 166 | syn match pl1StringError "'.*$" |
| 167 | |
| 168 | " Various types of literals. |
| 169 | " 20010723az: Added stuff for comment matching. |
| 170 | syn match pl1Numbers transparent "\<[+-]\=\d\|[+-]\=\.\d" contains=pl1IntLiteral,pl1FloatLiteral |
| 171 | syn match pl1NumbersCom contained transparent "\<[+-]\=\d\|[+-]\=\.\d" contains=pl1IntLiteral,pl1FloatLiteral |
| 172 | syn match pl1IntLiteral contained "[+-]\=\d\+" |
| 173 | syn match pl1FloatLiteral contained "[+-]\=\d\+\.\d*" |
| 174 | syn match pl1FloatLiteral contained "[+-]\=\d*\.\d*" |
| 175 | "syn match pl1FloatLiteral "[+-]\=\([0-9]*\.[0-9]\+\|[0-9]\+\.[0-9]\+\)\(e[+-]\=[0-9]\+\)\=" |
| 176 | syn match pl1CharLiteral "'[^']'" |
| 177 | syn match pl1StringLiteral "'\([^']\|''\)*'" |
| 178 | syn keyword pl1BooleanLiteral TRUE FALSE NULL |
| 179 | |
| 180 | " The built-in types. |
| 181 | syn keyword pl1Storage ANYDATA ANYTYPE BFILE BINARY_INTEGER BLOB BOOLEAN |
| 182 | syn keyword pl1Storage BYTE CHAR CHARACTER CLOB CURSOR DATE DAY DEC DECIMAL |
| 183 | syn keyword pl1Storage DOUBLE DSINTERVAL_UNCONSTRAINED FLOAT HOUR |
| 184 | syn keyword pl1Storage INT INTEGER INTERVAL LOB LONG MINUTE |
| 185 | syn keyword pl1Storage MLSLABEL MONTH NATURAL NATURALN NCHAR NCHAR_CS NCLOB |
| 186 | syn keyword pl1Storage NUMBER NUMERIC NVARCHAR PLS_INT PLS_INTEGER |
| 187 | syn keyword pl1Storage POSITIVE POSITIVEN PRECISION RAW REAL RECORD |
| 188 | syn keyword pl1Storage SECOND SIGNTYPE SMALLINT STRING SYS_REFCURSOR TABLE TIME |
| 189 | syn keyword pl1Storage TIMESTAMP TIMESTAMP_UNCONSTRAINED |
| 190 | syn keyword pl1Storage TIMESTAMP_TZ_UNCONSTRAINED |
| 191 | syn keyword pl1Storage TIMESTAMP_LTZ_UNCONSTRAINED UROWID VARCHAR |
| 192 | syn keyword pl1Storage VARCHAR2 YEAR YMINTERVAL_UNCONSTRAINED ZONE |
| 193 | |
| 194 | " A type-attribute is really a type. |
| 195 | " 20020916bp: Removed leading part of pattern to avoid highlighting the |
| 196 | " object |
| 197 | syn match pl1TypeAttribute "%\(TYPE\|ROWTYPE\)\>" |
| 198 | |
| 199 | " All other attributes. |
| 200 | syn match pl1Attribute "%\(BULK_EXCEPTIONS\|BULK_ROWCOUNT\|ISOPEN\|FOUND\|NOTFOUND\|ROWCOUNT\)\>" |
| 201 | |
| 202 | " Catch errors caused by wrong parentheses and brackets |
| 203 | " 20010723az: significantly more powerful than the values -- commented out |
| 204 | " below the replaced values. This adds the C functionality to PL/SQL. |
| 205 | syn cluster pl1ParenGroup contains=pl1ParenError,@pl1CommentGroup,pl1CommentSkip,pl1IntLiteral,pl1FloatLiteral,pl1NumbersCom |
| 206 | if exists("c_no_bracket_error") |
| 207 | syn region pl1Paren transparent start='(' end=')' contains=ALLBUT,@pl1ParenGroup |
| 208 | syn match pl1ParenError ")" |
| 209 | syn match pl1ErrInParen contained "[{}]" |
| 210 | else |
| 211 | syn region pl1Paren transparent start='(' end=')' contains=ALLBUT,@pl1ParenGroup,pl1ErrInBracket |
| 212 | syn match pl1ParenError "[\])]" |
| 213 | syn match pl1ErrInParen contained "[{}]" |
| 214 | syn region pl1Bracket transparent start='\[' end=']' contains=ALLBUT,@pl1ParenGroup,pl1ErrInParen |
| 215 | syn match pl1ErrInBracket contained "[);{}]" |
| 216 | endif |
| 217 | " syn region pl1Paren transparent start='(' end=')' contains=ALLBUT,pl1ParenError |
| 218 | " syn match pl1ParenError ")" |
| 219 | |
| 220 | " Syntax Synchronizing |
| 221 | syn sync minlines=10 maxlines=100 |
| 222 | |
| 223 | " Define the default highlighting. |
Bram Moolenaar | 89bcfda | 2016-08-30 23:26:57 +0200 | [diff] [blame] | 224 | " Only when and item doesn't have highlighting yet. |
Bram Moolenaar | e2db695 | 2013-07-24 19:53:36 +0200 | [diff] [blame] | 225 | |
Bram Moolenaar | f37506f | 2016-08-31 22:22:10 +0200 | [diff] [blame] | 226 | hi def link pl1Attribute Macro |
| 227 | hi def link pl1BlockError Error |
| 228 | hi def link pl1BooleanLiteral Boolean |
| 229 | hi def link pl1CharLiteral Character |
| 230 | hi def link pl1Comment Comment |
| 231 | hi def link pl1CommentL Comment |
| 232 | hi def link pl1Conditional Conditional |
| 233 | hi def link pl1Error Error |
| 234 | hi def link pl1ErrInBracket Error |
| 235 | hi def link pl1ErrInBlock Error |
| 236 | hi def link pl1ErrInParen Error |
| 237 | hi def link pl1Exception Function |
| 238 | hi def link pl1FloatLiteral Float |
| 239 | hi def link pl1Function Function |
| 240 | hi def link pl1Garbage Error |
| 241 | hi def link pl1HostIdentifier Label |
| 242 | hi def link pl1Identifier Normal |
| 243 | hi def link pl1IntLiteral Number |
| 244 | hi def link pl1Operator Operator |
| 245 | hi def link pl1Paren Normal |
| 246 | hi def link pl1ParenError Error |
| 247 | hi def link pl1SpaceError Error |
| 248 | hi def link pl1Pseudo PreProc |
| 249 | hi def link pl1PreProc PreProc |
| 250 | hi def link pl1PreProcSym PreProc |
| 251 | hi def link pl1Keyword Keyword |
| 252 | hi def link pl1Other Keyword |
| 253 | hi def link pl1Repeat Repeat |
| 254 | hi def link pl1Statement Keyword |
| 255 | hi def link pl1Storage StorageClass |
| 256 | hi def link pl1StringError Error |
| 257 | hi def link pl1StringLiteral String |
| 258 | hi def link pl1CommentString String |
| 259 | hi def link pl1Comment2String String |
| 260 | hi def link pl1Symbol Normal |
| 261 | hi def link pl1Trigger Function |
| 262 | hi def link pl1TypeAttribute StorageClass |
| 263 | hi def link pl1Todo Todo |
Bram Moolenaar | e2db695 | 2013-07-24 19:53:36 +0200 | [diff] [blame] | 264 | |
Bram Moolenaar | e2db695 | 2013-07-24 19:53:36 +0200 | [diff] [blame] | 265 | |
| 266 | let b:current_syntax = "pl1" |