pli.vim 13 KB

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