neovim

Neovim text editor
git clone https://git.dasho.dev/neovim.git
Log | Files | Refs | README

pli.vim (13222B)


      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 
      6 " quit when a syntax file was already loaded
      7 if exists("b:current_syntax")
      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.
    224 " Only when and item doesn't have highlighting yet.
    225 
    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
    264 
    265 
    266 let b:current_syntax = "pl1"