| " Vim syntax file |
| " Language: Oracle Procedureal SQL (PL/SQL) |
| " Maintainer: Jeff Lanzarotta (jefflanzarotta at yahoo dot com) |
| " Original Maintainer: C. Laurence Gonsalves (clgonsal@kami.com) |
| " URL: http://lanzarotta.tripod.com/vim/syntax/plsql.vim.zip |
| " Last Change: September 18, 2002 |
| " History: Geoff Evans & Bill Pribyl (bill at plnet dot org) |
| " Added 9i keywords. |
| " Austin Ziegler (austin at halostatue dot ca) |
| " Added 8i+ features. |
| " |
| " For version 5.x, clear all syntax items. |
| " For version 6.x, quit when a syntax file was already loaded. |
| if version < 600 |
| syntax clear |
| elseif exists("b:current_syntax") |
| finish |
| endif |
| |
| " Todo. |
| syn keyword plsqlTodo TODO FIXME XXX DEBUG NOTE |
| syn cluster plsqlCommentGroup contains=plsqlTodo |
| |
| syn case ignore |
| |
| syn match plsqlGarbage "[^ \t()]" |
| syn match plsqlIdentifier "[a-z][a-z0-9$_#]*" |
| syn match plsqlHostIdentifier ":[a-z][a-z0-9$_#]*" |
| |
| " When wanted, highlight the trailing whitespace. |
| if exists("c_space_errors") |
| if !exists("c_no_trail_space_error") |
| syn match plsqlSpaceError "\s\+$" |
| endif |
| |
| if !exists("c_no_tab_space_error") |
| syn match plsqlSpaceError " \+\t"me=e-1 |
| endif |
| endif |
| |
| " Symbols. |
| syn match plsqlSymbol "\(;\|,\|\.\)" |
| |
| " Operators. |
| syn match plsqlOperator "\(+\|-\|\*\|/\|=\|<\|>\|@\|\*\*\|!=\|\~=\)" |
| syn match plsqlOperator "\(^=\|<=\|>=\|:=\|=>\|\.\.\|||\|<<\|>>\|\"\)" |
| |
| " Some of Oracle's SQL keywords. |
| syn keyword plsqlSQLKeyword ABORT ACCESS ACCESSED ADD AFTER ALL ALTER AND ANY |
| syn keyword plsqlSQLKeyword AS ASC ATTRIBUTE AUDIT AUTHORIZATION AVG BASE_TABLE |
| syn keyword plsqlSQLKeyword BEFORE BETWEEN BY CASCADE CAST CHECK CLUSTER |
| syn keyword plsqlSQLKeyword CLUSTERS COLAUTH COLUMN COMMENT COMPRESS CONNECT |
| syn keyword plsqlSQLKeyword CONSTRAINT CRASH CREATE CURRENT DATA DATABASE |
| syn keyword plsqlSQLKeyword DATA_BASE DBA DEFAULT DELAY DELETE DESC DISTINCT |
| syn keyword plsqlSQLKeyword DROP DUAL ELSE EXCLUSIVE EXISTS EXTENDS EXTRACT |
| syn keyword plsqlSQLKeyword FILE FORCE FOREIGN FROM GRANT GROUP HAVING HEAP |
| syn keyword plsqlSQLKeyword IDENTIFIED IDENTIFIER IMMEDIATE IN INCLUDING |
| syn keyword plsqlSQLKeyword INCREMENT INDEX INDEXES INITIAL INSERT INSTEAD |
| syn keyword plsqlSQLKeyword INTERSECT INTO INVALIDATE IS ISOLATION KEY LIBRARY |
| syn keyword plsqlSQLKeyword LIKE LOCK MAXEXTENTS MINUS MODE MODIFY MULTISET |
| syn keyword plsqlSQLKeyword NESTED NOAUDIT NOCOMPRESS NOT NOWAIT OF OFF OFFLINE |
| syn keyword plsqlSQLKeyword ON ONLINE OPERATOR OPTION OR ORDER ORGANIZATION |
| syn keyword plsqlSQLKeyword PCTFREE PRIMARY PRIOR PRIVATE PRIVILEGES PUBLIC |
| syn keyword plsqlSQLKeyword QUOTA RELEASE RENAME REPLACE RESOURCE REVOKE ROLLBACK |
| syn keyword plsqlSQLKeyword ROW ROWLABEL ROWS SCHEMA SELECT SEPARATE SESSION SET |
| syn keyword plsqlSQLKeyword SHARE SIZE SPACE START STORE SUCCESSFUL SYNONYM |
| syn keyword plsqlSQLKeyword SYSDATE TABLE TABLES TABLESPACE TEMPORARY TO TREAT |
| syn keyword plsqlSQLKeyword TRIGGER TRUNCATE UID UNION UNIQUE UNLIMITED UPDATE |
| syn keyword plsqlSQLKeyword USE USER VALIDATE VALUES VIEW WHENEVER WHERE WITH |
| |
| " PL/SQL's own keywords. |
| syn keyword plsqlKeyword AGENT AND ANY ARRAY ASSIGN AS AT AUTHID BEGIN BODY BY |
| syn keyword plsqlKeyword BULK C CASE CHAR_BASE CHARSETFORM CHARSETID CLOSE |
| syn keyword plsqlKeyword COLLECT CONSTANT CONSTRUCTOR CONTEXT CURRVAL DECLARE |
| syn keyword plsqlKeyword DVOID EXCEPTION EXCEPTION_INIT EXECUTE EXIT FETCH |
| syn keyword plsqlKeyword FINAL FUNCTION GOTO HASH IMMEDIATE IN INDICATOR |
| syn keyword plsqlKeyword INSTANTIABLE IS JAVA LANGUAGE LIBRARY MAP MAXLEN |
| syn keyword plsqlKeyword MEMBER NAME NEW NOCOPY NUMBER_BASE OBJECT OCICOLL |
| syn keyword plsqlKeyword OCIDATE OCIDATETIME OCILOBLOCATOR OCINUMBER OCIRAW |
| syn keyword plsqlKeyword OCISTRING OF OPAQUE OPEN OR ORDER OTHERS OUT |
| syn keyword plsqlKeyword OVERRIDING PACKAGE PARALLEL_ENABLE PARAMETERS |
| syn keyword plsqlKeyword PARTITION PIPELINED PRAGMA PROCEDURE RAISE RANGE REF |
| syn keyword plsqlKeyword RESULT RETURN REVERSE ROWTYPE SB1 SELF SHORT SIZE_T |
| syn keyword plsqlKeyword SQL SQLCODE SQLERRM STATIC STRUCT SUBTYPE TDO THEN |
| syn keyword plsqlKeyword TABLE TIMEZONE_ABBR TIMEZONE_HOUR TIMEZONE_MINUTE |
| syn keyword plsqlKeyword TIMEZONE_REGION TYPE UNDER UNSIGNED USING VARIANCE |
| syn keyword plsqlKeyword VARRAY VARYING WHEN WRITE |
| syn match plsqlKeyword "\<END\>" |
| syn match plsqlKeyword "\.COUNT\>"hs=s+1 |
| syn match plsqlKeyword "\.EXISTS\>"hs=s+1 |
| syn match plsqlKeyword "\.FIRST\>"hs=s+1 |
| syn match plsqlKeyword "\.LAST\>"hs=s+1 |
| syn match plsqlKeyword "\.DELETE\>"hs=s+1 |
| syn match plsqlKeyword "\.PREV\>"hs=s+1 |
| syn match plsqlKeyword "\.NEXT\>"hs=s+1 |
| |
| " PL/SQL functions. |
| syn keyword plsqlFunction ABS ACOS ADD_MONTHS ASCII ASCIISTR ASIN ATAN ATAN2 |
| syn keyword plsqlFunction BFILENAME BITAND CEIL CHARTOROWID CHR COALESCE |
| syn keyword plsqlFunction COMMIT COMMIT_CM COMPOSE CONCAT CONVERT COS COSH |
| syn keyword plsqlFunction COUNT CUBE CURRENT_DATE CURRENT_TIME CURRENT_TIMESTAMP |
| syn keyword plsqlFunction DBTIMEZONE DECODE DECOMPOSE DEREF DUMP EMPTY_BLOB |
| syn keyword plsqlFunction EMPTY_CLOB EXISTS EXP FLOOR FROM_TZ GETBND GLB |
| syn keyword plsqlFunction GREATEST GREATEST_LB GROUPING HEXTORAW INITCAP |
| syn keyword plsqlFunction INSTR INSTR2 INSTR4 INSTRB INSTRC ISNCHAR LAST_DAY |
| syn keyword plsqlFunction LEAST LEAST_UB LENGTH LENGTH2 LENGTH4 LENGTHB LENGTHC |
| syn keyword plsqlFunction LN LOCALTIME LOCALTIMESTAMP LOG LOWER LPAD |
| syn keyword plsqlFunction LTRIM LUB MAKE_REF MAX MIN MOD MONTHS_BETWEEN |
| syn keyword plsqlFunction NCHARTOROWID NCHR NEW_TIME NEXT_DAY NHEXTORAW |
| syn keyword plsqlFunction NLS_CHARSET_DECL_LEN NLS_CHARSET_ID NLS_CHARSET_NAME |
| syn keyword plsqlFunction NLS_INITCAP NLS_LOWER NLSSORT NLS_UPPER NULLFN NULLIF |
| syn keyword plsqlFunction NUMTODSINTERVAL NUMTOYMINTERVAL NVL POWER |
| syn keyword plsqlFunction RAISE_APPLICATION_ERROR RAWTOHEX RAWTONHEX REF |
| syn keyword plsqlFunction REFTOHEX REPLACE ROLLBACK_NR ROLLBACK_SV ROLLUP ROUND |
| syn keyword plsqlFunction ROWIDTOCHAR ROWIDTONCHAR ROWLABEL RPAD RTRIM |
| syn keyword plsqlFunction SAVEPOINT SESSIONTIMEZONE SETBND SET_TRANSACTION_USE |
| syn keyword plsqlFunction SIGN SIN SINH SOUNDEX SQLCODE SQLERRM SQRT STDDEV |
| syn keyword plsqlFunction SUBSTR SUBSTR2 SUBSTR4 SUBSTRB SUBSTRC SUM |
| syn keyword plsqlFunction SYS_AT_TIME_ZONE SYS_CONTEXT SYSDATE SYS_EXTRACT_UTC |
| syn keyword plsqlFunction SYS_GUID SYS_LITERALTODATE SYS_LITERALTODSINTERVAL |
| syn keyword plsqlFunction SYS_LITERALTOTIME SYS_LITERALTOTIMESTAMP |
| syn keyword plsqlFunction SYS_LITERALTOTZTIME SYS_LITERALTOTZTIMESTAMP |
| syn keyword plsqlFunction SYS_LITERALTOYMINTERVAL SYS_OVER__DD SYS_OVER__DI |
| syn keyword plsqlFunction SYS_OVER__ID SYS_OVER_IID SYS_OVER_IIT |
| syn keyword plsqlFunction SYS_OVER__IT SYS_OVER__TI SYS_OVER__TT |
| syn keyword plsqlFunction SYSTIMESTAMP TAN TANH TO_ANYLOB TO_BLOB TO_CHAR |
| syn keyword plsqlFunction TO_CLOB TO_DATE TO_DSINTERVAL TO_LABEL TO_MULTI_BYTE |
| syn keyword plsqlFunction TO_NCHAR TO_NCLOB TO_NUMBER TO_RAW TO_SINGLE_BYTE |
| syn keyword plsqlFunction TO_TIME TO_TIMESTAMP TO_TIMESTAMP_TZ TO_TIME_TZ |
| syn keyword plsqlFunction TO_YMINTERVAL TRANSLATE TREAT TRIM TRUNC TZ_OFFSET UID |
| syn keyword plsqlFunction UNISTR UPPER UROWID USER USERENV VALUE VARIANCE |
| syn keyword plsqlFunction VSIZE WORK XOR |
| syn match plsqlFunction "\<SYS\$LOB_REPLICATION\>" |
| |
| " PL/SQL Exceptions |
| syn keyword plsqlException ACCESS_INTO_NULL CASE_NOT_FOUND COLLECTION_IS_NULL |
| syn keyword plsqlException CURSOR_ALREADY_OPEN DUP_VAL_ON_INDEX INVALID_CURSOR |
| syn keyword plsqlException INVALID_NUMBER LOGIN_DENIED NO_DATA_FOUND |
| syn keyword plsqlException NOT_LOGGED_ON PROGRAM_ERROR ROWTYPE_MISMATCH |
| syn keyword plsqlException SELF_IS_NULL STORAGE_ERROR SUBSCRIPT_BEYOND_COUNT |
| syn keyword plsqlException SUBSCRIPT_OUTSIDE_LIMIT SYS_INVALID_ROWID |
| syn keyword plsqlException TIMEOUT_ON_RESOURCE TOO_MANY_ROWS VALUE_ERROR |
| syn keyword plsqlException ZERO_DIVIDE |
| |
| " Oracle Pseudo Colums. |
| syn keyword plsqlPseudo CURRVAL LEVEL NEXTVAL ROWID ROWNUM |
| |
| if exists("plsql_highlight_triggers") |
| syn keyword plsqlTrigger INSERTING UPDATING DELETING |
| endif |
| |
| " Conditionals. |
| syn keyword plsqlConditional ELSIF ELSE IF |
| syn match plsqlConditional "\<END\s\+IF\>" |
| |
| " Loops. |
| syn keyword plsqlRepeat FOR LOOP WHILE FORALL |
| syn match plsqlRepeat "\<END\s\+LOOP\>" |
| |
| " Various types of comments. |
| if exists("c_comment_strings") |
| syntax match plsqlCommentSkip contained "^\s*\*\($\|\s\+\)" |
| syntax region plsqlCommentString contained start=+L\="+ skip=+\\\\\|\\"+ end=+"+ end=+\*/+me=s-1 contains=plsqlCommentSkip |
| syntax region plsqlComment2String contained start=+L\="+ skip=+\\\\\|\\"+ end=+"+ end="$" |
| syntax region plsqlCommentL start="--" skip="\\$" end="$" keepend contains=@plsqlCommentGroup,plsqlComment2String,plsqlCharLiteral,plsqlBooleanLiteral,plsqlNumbersCom,plsqlSpaceError |
| syntax region plsqlComment start="/\*" end="\*/" contains=@plsqlCommentGroup,plsqlComment2String,plsqlCharLiteral,plsqlBooleanLiteral,plsqlNumbersCom,plsqlSpaceError |
| else |
| syntax region plsqlCommentL start="--" skip="\\$" end="$" keepend contains=@plsqlCommentGroup,plsqlSpaceError |
| syntax region plsqlComment start="/\*" end="\*/" contains=@plsqlCommentGroup,plsqlSpaceError |
| endif |
| |
| syn sync ccomment plsqlComment |
| syn sync ccomment plsqlCommentL |
| |
| " To catch unterminated string literals. |
| syn match plsqlStringError "'.*$" |
| |
| " Various types of literals. |
| syn match plsqlNumbers transparent "\<[+-]\=\d\|[+-]\=\.\d" contains=plsqlIntLiteral,plsqlFloatLiteral |
| syn match plsqlNumbersCom contained transparent "\<[+-]\=\d\|[+-]\=\.\d" contains=plsqlIntLiteral,plsqlFloatLiteral |
| syn match plsqlIntLiteral contained "[+-]\=\d\+" |
| syn match plsqlFloatLiteral contained "[+-]\=\d\+\.\d*" |
| syn match plsqlFloatLiteral contained "[+-]\=\d*\.\d*" |
| syn match plsqlCharLiteral "'[^']'" |
| syn match plsqlStringLiteral "'\([^']\|''\)*'" |
| syn keyword plsqlBooleanLiteral TRUE FALSE NULL |
| |
| " The built-in types. |
| syn keyword plsqlStorage ANYDATA ANYTYPE BFILE BINARY_INTEGER BLOB BOOLEAN |
| syn keyword plsqlStorage BYTE CHAR CHARACTER CLOB CURSOR DATE DAY DEC DECIMAL |
| syn keyword plsqlStorage DOUBLE DSINTERVAL_UNCONSTRAINED FLOAT HOUR |
| syn keyword plsqlStorage INT INTEGER INTERVAL LOB LONG MINUTE |
| syn keyword plsqlStorage MLSLABEL MONTH NATURAL NATURALN NCHAR NCHAR_CS NCLOB |
| syn keyword plsqlStorage NUMBER NUMERIC NVARCHAR PLS_INT PLS_INTEGER |
| syn keyword plsqlStorage POSITIVE POSITIVEN PRECISION RAW REAL RECORD |
| syn keyword plsqlStorage SECOND SIGNTYPE SMALLINT STRING SYS_REFCURSOR TABLE TIME |
| syn keyword plsqlStorage TIMESTAMP TIMESTAMP_UNCONSTRAINED |
| syn keyword plsqlStorage TIMESTAMP_TZ_UNCONSTRAINED |
| syn keyword plsqlStorage TIMESTAMP_LTZ_UNCONSTRAINED UROWID VARCHAR |
| syn keyword plsqlStorage VARCHAR2 YEAR YMINTERVAL_UNCONSTRAINED ZONE |
| |
| " A type-attribute is really a type. |
| syn match plsqlTypeAttribute "%\(TYPE\|ROWTYPE\)\>" |
| |
| " All other attributes. |
| syn match plsqlAttribute "%\(BULK_EXCEPTIONS\|BULK_ROWCOUNT\|ISOPEN\|FOUND\|NOTFOUND\|ROWCOUNT\)\>" |
| |
| " This'll catch mis-matched close-parens. |
| syn cluster plsqlParenGroup contains=plsqlParenError,@plsqlCommentGroup,plsqlCommentSkip,plsqlIntLiteral,plsqlFloatLiteral,plsqlNumbersCom |
| if exists("c_no_bracket_error") |
| syn region plsqlParen transparent start='(' end=')' contains=ALLBUT,@plsqlParenGroup |
| syn match plsqlParenError ")" |
| syn match plsqlErrInParen contained "[{}]" |
| else |
| syn region plsqlParen transparent start='(' end=')' contains=ALLBUT,@plsqlParenGroup,plsqlErrInBracket |
| syn match plsqlParenError "[\])]" |
| syn match plsqlErrInParen contained "[{}]" |
| syn region plsqlBracket transparent start='\[' end=']' contains=ALLBUT,@plsqlParenGroup,plsqlErrInParen |
| syn match plsqlErrInBracket contained "[);{}]" |
| endif |
| |
| " 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 an item doesn't have highlighting yet. |
| if version >= 508 || !exists("did_plsql_syn_inits") |
| if version < 508 |
| let did_plsql_syn_inits = 1 |
| command -nargs=+ HiLink hi link <args> |
| else |
| command -nargs=+ HiLink hi def link <args> |
| endif |
| |
| HiLink plsqlAttribute Macro |
| HiLink plsqlBlockError Error |
| HiLink plsqlBooleanLiteral Boolean |
| HiLink plsqlCharLiteral Character |
| HiLink plsqlComment Comment |
| HiLink plsqlCommentL Comment |
| HiLink plsqlConditional Conditional |
| HiLink plsqlError Error |
| HiLink plsqlErrInBracket Error |
| HiLink plsqlErrInBlock Error |
| HiLink plsqlErrInParen Error |
| HiLink plsqlException Function |
| HiLink plsqlFloatLiteral Float |
| HiLink plsqlFunction Function |
| HiLink plsqlGarbage Error |
| HiLink plsqlHostIdentifier Label |
| HiLink plsqlIdentifier Normal |
| HiLink plsqlIntLiteral Number |
| HiLink plsqlOperator Operator |
| HiLink plsqlParen Normal |
| HiLink plsqlParenError Error |
| HiLink plsqlSpaceError Error |
| HiLink plsqlPseudo PreProc |
| HiLink plsqlKeyword Keyword |
| HiLink plsqlRepeat Repeat |
| HiLink plsqlStorage StorageClass |
| HiLink plsqlSQLKeyword Function |
| HiLink plsqlStringError Error |
| HiLink plsqlStringLiteral String |
| HiLink plsqlCommentString String |
| HiLink plsqlComment2String String |
| HiLink plsqlSymbol Normal |
| HiLink plsqlTrigger Function |
| HiLink plsqlTypeAttribute StorageClass |
| HiLink plsqlTodo Todo |
| |
| delcommand HiLink |
| endif |
| |
| let b:current_syntax = "plsql" |
| |
| " vim: ts=8 sw=2 |