271 lines
13 KiB
VimL
271 lines
13 KiB
VimL
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1
|
|
|
|
" 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"
|
|
|
|
endif
|