mirror of
				https://github.com/vim/vim.git
				synced 2025-10-30 09:47:20 -04:00 
			
		
		
		
	
		
			
				
	
	
		
			267 lines
		
	
	
		
			13 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
			
		
		
	
	
			267 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
 | |
| 
 | |
| " quit when a syntax file was already loaded
 | |
| if 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.
 | |
| " Only when and item doesn't have highlighting yet.
 | |
| 
 | |
| hi def link pl1Attribute       Macro
 | |
| hi def link pl1BlockError      Error
 | |
| hi def link pl1BooleanLiteral  Boolean
 | |
| hi def link pl1CharLiteral     Character
 | |
| hi def link pl1Comment         Comment
 | |
| hi def link pl1CommentL        Comment
 | |
| hi def link pl1Conditional     Conditional
 | |
| hi def link pl1Error           Error
 | |
| hi def link pl1ErrInBracket    Error
 | |
| hi def link pl1ErrInBlock      Error
 | |
| hi def link pl1ErrInParen      Error
 | |
| hi def link pl1Exception       Function
 | |
| hi def link pl1FloatLiteral    Float
 | |
| hi def link pl1Function        Function
 | |
| hi def link pl1Garbage         Error
 | |
| hi def link pl1HostIdentifier  Label
 | |
| hi def link pl1Identifier      Normal
 | |
| hi def link pl1IntLiteral      Number
 | |
| hi def link pl1Operator        Operator
 | |
| hi def link pl1Paren           Normal
 | |
| hi def link pl1ParenError      Error
 | |
| hi def link pl1SpaceError      Error
 | |
| hi def link pl1Pseudo          PreProc
 | |
| hi def link pl1PreProc         PreProc
 | |
| hi def link pl1PreProcSym      PreProc
 | |
| hi def link pl1Keyword         Keyword
 | |
| hi def link pl1Other           Keyword
 | |
| hi def link pl1Repeat          Repeat
 | |
| hi def link pl1Statement       Keyword
 | |
| hi def link pl1Storage         StorageClass
 | |
| hi def link pl1StringError     Error
 | |
| hi def link pl1StringLiteral   String
 | |
| hi def link pl1CommentString   String
 | |
| hi def link pl1Comment2String  String
 | |
| hi def link pl1Symbol          Normal
 | |
| hi def link pl1Trigger         Function
 | |
| hi def link pl1TypeAttribute   StorageClass
 | |
| hi def link pl1Todo            Todo
 | |
| 
 | |
| 
 | |
| let b:current_syntax = "pl1"
 |