mirror of
				https://github.com/vim/vim.git
				synced 2025-10-31 09:57:14 -04:00 
			
		
		
		
	
		
			
	
	
		
			279 lines
		
	
	
		
			13 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
		
		
			
		
	
	
			279 lines
		
	
	
		
			13 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
|   | " Vim syntax file | ||
|  | " Modified from  http://plnet.org/files/vim/ | ||
|  | " using keywords from http://www.kednos.com/pli/docs/reference_manual/6291pro_contents.html | ||
|  | "    2012-11-13 Alan Thompson | ||
|  | 
 | ||
|  | if version < 600 | ||
|  |     syntax clear | ||
|  | elseif exists("b:current_syntax") | ||
|  |     finish | ||
|  | endif | ||
|  | 
 | ||
|  | syn case ignore | ||
|  | 
 | ||
|  | " Todo. | ||
|  | syn keyword pl1Todo TODO FIXME XXX DEBUG NOTE | ||
|  | 
 | ||
|  | " pl1CommentGroup allows adding matches for special things in comments | ||
|  | " 20010723az: Added this so that these could be matched in comments...   | ||
|  | syn cluster pl1CommentGroup contains=pl1Todo | ||
|  | 
 | ||
|  | syn match   pl1Garbage        "[^ \t()]" | ||
|  | syn match   pl1Identifier     "[a-z][a-z0-9$_#]*" | ||
|  | syn match   pl1HostIdentifier ":[a-z][a-z0-9$_#]*" | ||
|  | 
 | ||
|  | " 20010723az: When wanted, highlight the trailing whitespace -- this is | ||
|  | " based on c_space_errors  | ||
|  | if exists("c_space_errors") | ||
|  |     if !exists("c_no_trail_space_error") | ||
|  |         syn match pl1SpaceError "\s\+$" | ||
|  |     endif | ||
|  |     if !exists("c_no_tab_space_error") | ||
|  |         syn match pl1SpaceError " \+\t"me=e-1 | ||
|  |     endif | ||
|  | endif | ||
|  | 
 | ||
|  | " Symbols.   | ||
|  | syn match   pl1Symbol         "\(;\|,\|\.\)" | ||
|  | syn match   pl1PreProcSym     "%" | ||
|  | 
 | ||
|  | " Operators. | ||
|  | syn match   pl1Operator       "\(&\|:\|!\|+\|-\|\*\|/\|=\|<\|>\|@\|\*\*\|!=\|\~=\)" | ||
|  | syn match   pl1Operator       "\(\^\|\^=\|<=\|>=\|:=\|=>\|\.\.\|||\|<<\|>>\|\"\)" | ||
|  | 
 | ||
|  | " Attributes | ||
|  | syn keyword pl1Attribute BACKWARDS BUFFERED BUF CONNECTED CONN CONSTANT EVENT | ||
|  | syn keyword pl1Attribute EXCLUSIVE EXCL FORMAT GENERIC IRREDUCIBLE IRRED LOCAL | ||
|  | syn keyword pl1Attribute REDUCIBLE RED TASK TRANSIENT UNBUFFERED UNBUF ALIGNED ANY | ||
|  | syn keyword pl1Attribute AREA AUTOMATIC AUTO BASED BUILTIN CONDITION COND CONTROLLED | ||
|  | syn keyword pl1Attribute CTL DEFINED DEF DIRECT ENVIRONMENT ENV EXTERNAL EXT FILE | ||
|  | syn keyword pl1Attribute GLOBALDEF GLOBALREF INITIAL INIT INPUT INTERNAL INT KEYED | ||
|  | syn keyword pl1Attribute LABEL LIKE LIST MEMBER NONVARYING NONVAR OPTIONAL OPTIONS | ||
|  | syn keyword pl1Attribute OUTPUT PARAMETER PARM PICTURE PIC POSITION POS PRECISION | ||
|  | syn keyword pl1Attribute PREC PRINT READONLY RECORD REFER RETURNS SEQUENTIAL SEQL | ||
|  | syn keyword pl1Attribute STATIC STREAM STRUCTURE TRUNCATE UNALIGNED UNAL UNION UPDATE | ||
|  | syn keyword pl1Attribute VARIABLE VARYING VAR COMPLEX CPLX REAL BINARY BIN BIT | ||
|  | syn keyword pl1Attribute CHARACTER CHAR DECIMAL DEC DESCRIPTOR DESC DIMENSION DIM | ||
|  | syn keyword pl1Attribute FIXED FLOAT OFFSET POINTER PTR REFERENCE VALUE VAL  | ||
|  | 
 | ||
|  | " Functions | ||
|  | syn keyword pl1Function AFTER ALL ANY BEFORE COMPLETION CPLN CONJG COUNT | ||
|  | syn keyword pl1Function CURRENTSTORAGE CSTG DATAFIELD DECAT DOT ERF ERFC IMAG | ||
|  | syn keyword pl1Function ONCOUNT ONFIELD ONLOC POLY PRIORITY REPEAT SAMEKEY STATUS | ||
|  | syn keyword pl1Function STORAGE STG ABS ACOS ACTUALCOUNT ADD ADDR ADDREL ALLOCATION | ||
|  | syn keyword pl1Function ALLOCN ASIN ATAN ATAND ATANH BOOL BYTE BYTESIZE CEIL COLLATE | ||
|  | syn keyword pl1Function COPY COS COSD COSH DATE DATETIME DECODE DISPLAY DIVIDE EMPTY | ||
|  | syn keyword pl1Function ENCODE ERROR EVERY EXP EXTEND FLOOR FLUSH FREE HBOUND HIGH | ||
|  | syn keyword pl1Function INDEX INFORM INT LBOUND LENGTH LINE LINENO LOG LOG10 LOG2 | ||
|  | syn keyword pl1Function LOW LTRIM MAX MAXLENGTH MIN MOD MULTIPLY NEXT_VOLUME NULL | ||
|  | syn keyword pl1Function ONARGSLIST ONCHAR ONCODE ONFILE ONKEY ONSOURCE PAGENO POSINT | ||
|  | syn keyword pl1Function PRESENT PROD RANK RELEASE RESIGNAL REVERSE REWIND ROUND | ||
|  | syn keyword pl1Function RTRIM SEARCH SIGN SIN SIND SINH SIZE SOME SPACEBLOCK SQRT | ||
|  | syn keyword pl1Function STRING SUBSTR SUBTRACT SUM TAN TAND TANH TIME TRANSLATE TRIM | ||
|  | syn keyword pl1Function TRUNC UNSPEC VALID VARIANT VERIFY WARN  | ||
|  | 
 | ||
|  | " Other keywords | ||
|  | syn keyword pl1Other ATTENTION ATTN C CONVERSION CONV DATA NAME NOCONVERSION | ||
|  | syn keyword pl1Other NOCONV NOFIXEDOVERFLOW NOFOFL NOOVERFLOW NOSIZE | ||
|  | syn keyword pl1Other NOSTRINGRANGE NOSTRG NOSTRINGSIZE NOSTRZ NOSUBSCRIPTRANGE | ||
|  | syn keyword pl1Other NOSUBRG NOZERODIVIDE NOZDIV OVERFLOW OFL PENDING RECORD | ||
|  | syn keyword pl1Other REENTRANT SIZE STRINGRANGE STRG STRINGSIZE STRZ | ||
|  | syn keyword pl1Other SUBSCRIPTRANGE SUBRG TRANSMIT A ANYCONDITION APPEND B B1 B2 | ||
|  | syn keyword pl1Other B3 B4 BACKUP_DATE BATCH BLOCK_BOUNDARY_FORMAT BLOCK_IO | ||
|  | syn keyword pl1Other BLOCK_SIZE BUCKET_SIZE BY CANCEL_CONTROL_O | ||
|  | syn keyword pl1Other CARRIAGE_RETURN_FORMAT COLUMN COL CONTIGUOUS | ||
|  | syn keyword pl1Other CONTIGUOUS_BEST_TRY CONVERSION CONV CREATION_DATE | ||
|  | syn keyword pl1Other CURRENT_POSITION DEFAULT_FILE_NAME DEFERRED_WRITE E EDIT | ||
|  | syn keyword pl1Other ENDFILE ENDPAGE EXPIRATION_DATE EXTENSION_SIZE F FAST_DELETE | ||
|  | syn keyword pl1Other FILE_ID FILE_ID_TO FILE_SIZE FINISH FIXEDOVERFLOW FOFL | ||
|  | syn keyword pl1Other FIXED_CONTROL_FROM FIXED_CONTROL_SIZE FIXED_CONTROL_SIZE_TO | ||
|  | syn keyword pl1Other FIXED_CONTROL_TO FIXED_LENGTH_RECORDS FROM GROUP_PROTECTION | ||
|  | syn keyword pl1Other IDENT IGNORE_LINE_MARKS IN INDEXED INDEX_NUMBER INITIAL_FILL | ||
|  | syn keyword pl1Other INTO KEY KEYFROM KEYTO LINESIZE LOCK_ON_READ LOCK_ON_WRITE | ||
|  | syn keyword pl1Other MAIN MANUAL_UNLOCKING MATCH_GREATER MATCH_GREATER_EQUAL | ||
|  | syn keyword pl1Other MATCH_NEXT MATCH_NEXT_EQUAL MAXIMUM_RECORD_NUMBER | ||
|  | syn keyword pl1Other MAXIMUM_RECORD_SIZE MULTIBLOCK_COUNT MULTIBUFFER_COUNT | ||
|  | syn keyword pl1Other NOLOCK NONEXISTENT_RECORD NONRECURSIVE NO_ECHO NO_FILTER | ||
|  | syn keyword pl1Other NO_SHARE OVERFLOW OFL OWNER_GROUP OWNER_ID OWNER_MEMBER | ||
|  | syn keyword pl1Other OWNER_PROTECTION P PAGE PAGESIZE PRINTER_FORMAT PROMPT | ||
|  | syn keyword pl1Other PURGE_TYPE_AHEAD R READ_AHEAD READ_CHECK READ_REGARDLESS | ||
|  | syn keyword pl1Other RECORD_ID RECORD_ID_ACCESS RECORD_ID_TO RECURSIVE REPEAT | ||
|  | syn keyword pl1Other RETRIEVAL_POINTERS REVISION_DATE REWIND_ON_CLOSE | ||
|  | syn keyword pl1Other REWIND_ON_OPEN SCALARVARYING SET SHARED_READ SHARED_WRITE | ||
|  | syn keyword pl1Other SKIP SPOOL STORAGE STRINGRANGE STRG SUBSCRIPTRANGE SUBRG | ||
|  | syn keyword pl1Other SUPERSEDE SYSIN SYSPRINT SYSTEM_PROTECTION TAB TEMPORARY | ||
|  | syn keyword pl1Other TIMEOUT_PERIOD TITLE TO UNDEFINEDFILE UNDF UNDERFLOW UFL | ||
|  | syn keyword pl1Other UNTIL USER_OPEN VAXCONDITION WAIT_FOR_RECORD WHILE | ||
|  | syn keyword pl1Other WORLD_PROTECTION WRITE_BEHIND WRITE_CHECK X ZERODIVIDE ZDIV  | ||
|  | 
 | ||
|  | " PreProcessor keywords | ||
|  | syn keyword pl1PreProc ACTIVATE DEACTIVATE DECLARE DCL DICTIONARY DO END ERROR | ||
|  | syn keyword pl1PreProc FATAL GOTO IF INCLUDE INFORM LIST NOLIST PAGE PROCEDURE PROC | ||
|  | syn keyword pl1PreProc REPLACE RETURN SBTTL TITLE WARN THEN ELSE  | ||
|  | 
 | ||
|  | " Statements | ||
|  | syn keyword pl1Statement CALL SUB ENTRY BY NAME CASE CHECK COPY DEFAULT DFT DELAY | ||
|  | syn keyword pl1Statement DESCRIPTORS DISPLAY EXIT FETCH HALT IGNORE LIST LOCATE | ||
|  | syn keyword pl1Statement NOCHECK NOLOCK NONE ORDER RANGE RELEASE REORDER REPLY SNAP | ||
|  | syn keyword pl1Statement SYSTEM TAB UNLOCK WAIT ALLOCATE ALLOC BEGIN CALL CLOSE | ||
|  | syn keyword pl1Statement DECLARE DCL DELETE DO ELSE END FORMAT GET GOTO GO TO IF | ||
|  | syn keyword pl1Statement LEAVE NORESCAN ON OPEN OTHERWISE OTHER PROCEDURE PROC PUT | ||
|  | syn keyword pl1Statement READ RESCAN RETURN REVERT REWRITE SELECT SIGNAL SNAP | ||
|  | syn keyword pl1Statement STATEMENT STOP SYSTEM THEN WHEN WRITE  | ||
|  | 
 | ||
|  | " PL1's own keywords | ||
|  | " syn match   pl1Keyword "\<END\>" | ||
|  | " syn match   pl1Keyword "\.COUNT\>"hs=s+1 | ||
|  | " syn match   pl1Keyword "\.EXISTS\>"hs=s+1 | ||
|  | " syn match   pl1Keyword "\.FIRST\>"hs=s+1 | ||
|  | " syn match   pl1Keyword "\.LAST\>"hs=s+1 | ||
|  | " syn match   pl1Keyword "\.DELETE\>"hs=s+1 | ||
|  | " syn match   pl1Keyword "\.PREV\>"hs=s+1 | ||
|  | " syn match   pl1Keyword "\.NEXT\>"hs=s+1 | ||
|  | 
 | ||
|  | if exists("pl1_highlight_triggers") | ||
|  |     syn keyword pl1Trigger  INSERTING UPDATING DELETING | ||
|  | endif | ||
|  | 
 | ||
|  | " Conditionals. | ||
|  | syn keyword pl1Conditional ELSIF ELSE IF | ||
|  | syn match   pl1Conditional "\<END\s\+IF\>" | ||
|  | 
 | ||
|  | " Loops. | ||
|  | syn keyword pl1Repeat FOR LOOP WHILE FORALL | ||
|  | syn match   pl1Repeat "\<END\s\+LOOP\>" | ||
|  | 
 | ||
|  | " Various types of comments. | ||
|  | " 20010723az: Added the ability to treat strings within comments just like | ||
|  | " C does. | ||
|  | if exists("c_comment_strings") | ||
|  |     syntax match pl1CommentSkip contained "^\s*\*\($\|\s\+\)" | ||
|  |     syntax region pl1CommentString contained start=+L\="+ skip=+\\\\\|\\"+ end=+"+ end=+\*/+me=s-1 contains=pl1CommentSkip | ||
|  |     syntax region pl1Comment2String contained start=+L\="+ skip=+\\\\\|\\"+ end=+"+ end="$" | ||
|  |     syntax region pl1CommentL start="--" skip="\\$" end="$" keepend contains=@pl1CommentGroup,pl1Comment2String,pl1CharLiteral,pl1BooleanLiteral,pl1NumbersCom,pl1SpaceError | ||
|  |     syntax region pl1Comment start="/\*" end="\*/" contains=@pl1CommentGroup,pl1Comment2String,pl1CharLiteral,pl1BooleanLiteral,pl1NumbersCom,pl1SpaceError | ||
|  | else | ||
|  |     syntax region pl1CommentL start="--" skip="\\$" end="$" keepend contains=@pl1CommentGroup,pl1SpaceError | ||
|  |     syntax region pl1Comment start="/\*" end="\*/" contains=@pl1CommentGroup,pl1SpaceError | ||
|  | endif | ||
|  | 
 | ||
|  | " 20010723az: These are the old comment commands ... commented out. | ||
|  | " syn match   pl1Comment    "--.*$" contains=pl1Todo | ||
|  | " syn region  pl1Comment    start="/\*" end="\*/" contains=pl1Todo | ||
|  | syn sync ccomment pl1Comment | ||
|  | syn sync ccomment pl1CommentL | ||
|  | 
 | ||
|  | " To catch unterminated string literals. | ||
|  | syn match   pl1StringError    "'.*$" | ||
|  | 
 | ||
|  | " Various types of literals. | ||
|  | " 20010723az: Added stuff for comment matching. | ||
|  | syn match pl1Numbers transparent "\<[+-]\=\d\|[+-]\=\.\d" contains=pl1IntLiteral,pl1FloatLiteral | ||
|  | syn match pl1NumbersCom contained transparent "\<[+-]\=\d\|[+-]\=\.\d" contains=pl1IntLiteral,pl1FloatLiteral | ||
|  | syn match pl1IntLiteral contained "[+-]\=\d\+" | ||
|  | syn match pl1FloatLiteral contained "[+-]\=\d\+\.\d*" | ||
|  | syn match pl1FloatLiteral contained "[+-]\=\d*\.\d*" | ||
|  | "syn match pl1FloatLiteral "[+-]\=\([0-9]*\.[0-9]\+\|[0-9]\+\.[0-9]\+\)\(e[+-]\=[0-9]\+\)\=" | ||
|  | syn match   pl1CharLiteral    "'[^']'" | ||
|  | syn match   pl1StringLiteral  "'\([^']\|''\)*'" | ||
|  | syn keyword pl1BooleanLiteral TRUE FALSE NULL | ||
|  | 
 | ||
|  | " The built-in types. | ||
|  | syn keyword pl1Storage ANYDATA ANYTYPE BFILE BINARY_INTEGER BLOB BOOLEAN | ||
|  | syn keyword pl1Storage BYTE CHAR CHARACTER CLOB CURSOR DATE DAY DEC DECIMAL | ||
|  | syn keyword pl1Storage DOUBLE DSINTERVAL_UNCONSTRAINED FLOAT HOUR | ||
|  | syn keyword pl1Storage INT INTEGER INTERVAL LOB LONG MINUTE | ||
|  | syn keyword pl1Storage MLSLABEL MONTH NATURAL NATURALN NCHAR NCHAR_CS NCLOB | ||
|  | syn keyword pl1Storage NUMBER NUMERIC NVARCHAR PLS_INT PLS_INTEGER | ||
|  | syn keyword pl1Storage POSITIVE POSITIVEN PRECISION RAW REAL RECORD | ||
|  | syn keyword pl1Storage SECOND SIGNTYPE SMALLINT STRING SYS_REFCURSOR TABLE TIME | ||
|  | syn keyword pl1Storage TIMESTAMP TIMESTAMP_UNCONSTRAINED | ||
|  | syn keyword pl1Storage TIMESTAMP_TZ_UNCONSTRAINED | ||
|  | syn keyword pl1Storage TIMESTAMP_LTZ_UNCONSTRAINED UROWID VARCHAR | ||
|  | syn keyword pl1Storage VARCHAR2 YEAR YMINTERVAL_UNCONSTRAINED ZONE | ||
|  | 
 | ||
|  | " A type-attribute is really a type. | ||
|  | " 20020916bp: Removed leading part of pattern to avoid highlighting the | ||
|  | "             object | ||
|  | syn match   pl1TypeAttribute  "%\(TYPE\|ROWTYPE\)\>" | ||
|  | 
 | ||
|  | " All other attributes. | ||
|  | syn match   pl1Attribute "%\(BULK_EXCEPTIONS\|BULK_ROWCOUNT\|ISOPEN\|FOUND\|NOTFOUND\|ROWCOUNT\)\>" | ||
|  | 
 | ||
|  | " Catch errors caused by wrong parentheses and brackets | ||
|  | " 20010723az: significantly more powerful than the values -- commented out | ||
|  | " below the replaced values. This adds the C functionality to PL/SQL. | ||
|  | syn cluster pl1ParenGroup contains=pl1ParenError,@pl1CommentGroup,pl1CommentSkip,pl1IntLiteral,pl1FloatLiteral,pl1NumbersCom | ||
|  | if exists("c_no_bracket_error") | ||
|  |     syn region pl1Paren transparent start='(' end=')' contains=ALLBUT,@pl1ParenGroup | ||
|  |     syn match pl1ParenError ")" | ||
|  |     syn match pl1ErrInParen contained "[{}]" | ||
|  | else | ||
|  |     syn region pl1Paren transparent start='(' end=')' contains=ALLBUT,@pl1ParenGroup,pl1ErrInBracket | ||
|  |     syn match pl1ParenError "[\])]" | ||
|  |     syn match pl1ErrInParen contained "[{}]" | ||
|  |     syn region pl1Bracket transparent start='\[' end=']' contains=ALLBUT,@pl1ParenGroup,pl1ErrInParen | ||
|  |     syn match pl1ErrInBracket contained "[);{}]" | ||
|  | endif | ||
|  | " syn region pl1Paren       transparent start='(' end=')' contains=ALLBUT,pl1ParenError | ||
|  | " syn match pl1ParenError   ")" | ||
|  | 
 | ||
|  | " Syntax Synchronizing | ||
|  | syn sync minlines=10 maxlines=100 | ||
|  | 
 | ||
|  | " Define the default highlighting. | ||
|  | " For version 5.x and earlier, only when not done already. | ||
|  | " For version 5.8 and later, only when and item doesn't have highlighting | ||
|  | " yet. | ||
|  | if version >= 508 || !exists("did_pl1_syn_inits") | ||
|  |     if version < 508 | ||
|  |         let did_pl1_syn_inits = 1 | ||
|  |         command -nargs=+ HiLink hi link <args> | ||
|  |     else | ||
|  |         command -nargs=+ HiLink hi def link <args> | ||
|  |     endif | ||
|  | 
 | ||
|  |     HiLink pl1Attribute       Macro | ||
|  |     HiLink pl1BlockError      Error | ||
|  |     HiLink pl1BooleanLiteral  Boolean | ||
|  |     HiLink pl1CharLiteral     Character | ||
|  |     HiLink pl1Comment         Comment | ||
|  |     HiLink pl1CommentL        Comment | ||
|  |     HiLink pl1Conditional     Conditional | ||
|  |     HiLink pl1Error           Error | ||
|  |     HiLink pl1ErrInBracket    Error | ||
|  |     HiLink pl1ErrInBlock      Error | ||
|  |     HiLink pl1ErrInParen      Error | ||
|  |     HiLink pl1Exception       Function | ||
|  |     HiLink pl1FloatLiteral    Float | ||
|  |     HiLink pl1Function        Function | ||
|  |     HiLink pl1Garbage         Error | ||
|  |     HiLink pl1HostIdentifier  Label | ||
|  |     HiLink pl1Identifier      Normal | ||
|  |     HiLink pl1IntLiteral      Number | ||
|  |     HiLink pl1Operator        Operator | ||
|  |     HiLink pl1Paren           Normal | ||
|  |     HiLink pl1ParenError      Error | ||
|  |     HiLink pl1SpaceError      Error | ||
|  |     HiLink pl1Pseudo          PreProc | ||
|  |     HiLink pl1PreProc         PreProc | ||
|  |     HiLink pl1PreProcSym      PreProc | ||
|  |     HiLink pl1Keyword         Keyword | ||
|  |     HiLink pl1Other           Keyword | ||
|  |     HiLink pl1Repeat          Repeat | ||
|  |     HiLink pl1Statement       Keyword | ||
|  |     HiLink pl1Storage         StorageClass | ||
|  |     HiLink pl1StringError     Error | ||
|  |     HiLink pl1StringLiteral   String | ||
|  |     HiLink pl1CommentString   String | ||
|  |     HiLink pl1Comment2String  String | ||
|  |     HiLink pl1Symbol          Normal | ||
|  |     HiLink pl1Trigger         Function | ||
|  |     HiLink pl1TypeAttribute   StorageClass | ||
|  |     HiLink pl1Todo            Todo | ||
|  | 
 | ||
|  |     delcommand HiLink | ||
|  | endif | ||
|  | 
 | ||
|  | let b:current_syntax = "pl1" |