Bram Moolenaar | 1056d98 | 2006-03-09 22:37:52 +0000 | [diff] [blame] | 1 | " Vim syntax file |
Bram Moolenaar | d042dc8 | 2015-11-24 19:18:36 +0100 | [diff] [blame] | 2 | " Language: SQL, PL/SQL (Oracle 11g) |
| 3 | " Maintainer: Christian Brabandt |
| 4 | " Repository: https://github.com/chrisbra/vim-sqloracle-syntax |
| 5 | " License: Vim |
| 6 | " Previous Maintainer: Paul Moore |
Bram Moolenaar | 6f1d9a0 | 2016-07-24 14:12:38 +0200 | [diff] [blame] | 7 | " Last Change: 2016 Jul 22 |
| 8 | |
| 9 | " Changes: |
| 10 | " 02.04.2016: Support for when keyword |
| 11 | " 03.04.2016: Support for join related keywords |
| 12 | " 22.07.2016: Support Oracle Q-Quote-Syntax |
Bram Moolenaar | 1056d98 | 2006-03-09 22:37:52 +0000 | [diff] [blame] | 13 | |
Bram Moolenaar | d042dc8 | 2015-11-24 19:18:36 +0100 | [diff] [blame] | 14 | if exists("b:current_syntax") |
Bram Moolenaar | 1056d98 | 2006-03-09 22:37:52 +0000 | [diff] [blame] | 15 | finish |
| 16 | endif |
| 17 | |
| 18 | syn case ignore |
| 19 | |
| 20 | " The SQL reserved words, defined as keywords. |
| 21 | |
Bram Moolenaar | d042dc8 | 2015-11-24 19:18:36 +0100 | [diff] [blame] | 22 | syn keyword sqlSpecial false null true |
Bram Moolenaar | 1056d98 | 2006-03-09 22:37:52 +0000 | [diff] [blame] | 23 | |
Bram Moolenaar | d042dc8 | 2015-11-24 19:18:36 +0100 | [diff] [blame] | 24 | syn keyword sqlKeyword access add as asc begin by case check cluster column |
| 25 | syn keyword sqlKeyword cache compress connect current cursor decimal default desc |
Bram Moolenaar | 1056d98 | 2006-03-09 22:37:52 +0000 | [diff] [blame] | 26 | syn keyword sqlKeyword else elsif end exception exclusive file for from |
| 27 | syn keyword sqlKeyword function group having identified if immediate increment |
Bram Moolenaar | d042dc8 | 2015-11-24 19:18:36 +0100 | [diff] [blame] | 28 | syn keyword sqlKeyword index initial initrans into is level link logging loop |
| 29 | syn keyword sqlKeyword maxextents maxtrans mode modify monitoring |
| 30 | syn keyword sqlKeyword nocache nocompress nologging noparallel nowait of offline on online start |
| 31 | syn keyword sqlKeyword parallel successful synonym table tablespace then to trigger uid |
Bram Moolenaar | 6f1d9a0 | 2016-07-24 14:12:38 +0200 | [diff] [blame] | 32 | syn keyword sqlKeyword unique user validate values view when whenever |
Bram Moolenaar | d042dc8 | 2015-11-24 19:18:36 +0100 | [diff] [blame] | 33 | syn keyword sqlKeyword where with option order pctfree pctused privileges procedure |
Bram Moolenaar | 1056d98 | 2006-03-09 22:37:52 +0000 | [diff] [blame] | 34 | syn keyword sqlKeyword public resource return row rowlabel rownum rows |
| 35 | syn keyword sqlKeyword session share size smallint type using |
Bram Moolenaar | 6f1d9a0 | 2016-07-24 14:12:38 +0200 | [diff] [blame] | 36 | syn keyword sqlKeyword join cross inner outer left right |
Bram Moolenaar | 1056d98 | 2006-03-09 22:37:52 +0000 | [diff] [blame] | 37 | |
| 38 | syn keyword sqlOperator not and or |
| 39 | syn keyword sqlOperator in any some all between exists |
| 40 | syn keyword sqlOperator like escape |
Bram Moolenaar | d042dc8 | 2015-11-24 19:18:36 +0100 | [diff] [blame] | 41 | syn keyword sqlOperator union intersect minus |
| 42 | syn keyword sqlOperator prior distinct |
Bram Moolenaar | 1056d98 | 2006-03-09 22:37:52 +0000 | [diff] [blame] | 43 | syn keyword sqlOperator sysdate out |
| 44 | |
Bram Moolenaar | d042dc8 | 2015-11-24 19:18:36 +0100 | [diff] [blame] | 45 | syn keyword sqlStatement analyze audit comment commit |
| 46 | syn keyword sqlStatement delete drop execute explain grant lock noaudit |
| 47 | syn keyword sqlStatement rename revoke rollback savepoint set |
| 48 | syn keyword sqlStatement truncate |
| 49 | " next ones are contained, so folding works. |
| 50 | syn keyword sqlStatement create update alter select insert contained |
Bram Moolenaar | 1056d98 | 2006-03-09 22:37:52 +0000 | [diff] [blame] | 51 | |
| 52 | syn keyword sqlType boolean char character date float integer long |
| 53 | syn keyword sqlType mlslabel number raw rowid varchar varchar2 varray |
| 54 | |
Bram Moolenaar | d042dc8 | 2015-11-24 19:18:36 +0100 | [diff] [blame] | 55 | " Strings: |
Bram Moolenaar | 6f1d9a0 | 2016-07-24 14:12:38 +0200 | [diff] [blame] | 56 | syn region sqlString matchgroup=Quote start=+"+ skip=+\\\\\|\\"+ end=+"+ |
| 57 | syn region sqlString matchgroup=Quote start=+'+ skip=+\\\\\|\\'+ end=+'+ |
| 58 | syn region sqlString matchgroup=Quote start=+n\?q'\z([^[(<{]\)+ end=+\z1'+ |
| 59 | syn region sqlString matchgroup=Quote start=+n\?q'<+ end=+>'+ |
| 60 | syn region sqlString matchgroup=Quote start=+n\?q'{+ end=+}'+ |
| 61 | syn region sqlString matchgroup=Quote start=+n\?q'(+ end=+)'+ |
| 62 | syn region sqlString matchgroup=Quote start=+n\?q'\[+ end=+]'+ |
Bram Moolenaar | 1056d98 | 2006-03-09 22:37:52 +0000 | [diff] [blame] | 63 | |
| 64 | " Numbers: |
Bram Moolenaar | d042dc8 | 2015-11-24 19:18:36 +0100 | [diff] [blame] | 65 | syn match sqlNumber "-\=\<\d*\.\=[0-9_]\>" |
Bram Moolenaar | 1056d98 | 2006-03-09 22:37:52 +0000 | [diff] [blame] | 66 | |
| 67 | " Comments: |
Bram Moolenaar | d042dc8 | 2015-11-24 19:18:36 +0100 | [diff] [blame] | 68 | syn region sqlComment start="/\*" end="\*/" contains=sqlTodo,@Spell fold |
| 69 | syn match sqlComment "--.*$" contains=sqlTodo,@Spell |
| 70 | |
| 71 | " Setup Folding: |
| 72 | " this is a hack, to get certain statements folded. |
| 73 | " the keywords create/update/alter/select/insert need to |
| 74 | " have contained option. |
| 75 | syn region sqlFold start='^\s*\zs\c\(Create\|Update\|Alter\|Select\|Insert\)' end=';$\|^$' transparent fold contains=ALL |
Bram Moolenaar | 1056d98 | 2006-03-09 22:37:52 +0000 | [diff] [blame] | 76 | |
| 77 | syn sync ccomment sqlComment |
| 78 | |
Bram Moolenaar | d042dc8 | 2015-11-24 19:18:36 +0100 | [diff] [blame] | 79 | " Functions: |
| 80 | " (Oracle 11g) |
| 81 | " Aggregate Functions |
| 82 | syn keyword sqlFunction avg collect corr corr_s corr_k count covar_pop covar_samp cume_dist dense_rank first |
| 83 | syn keyword sqlFunction group_id grouping grouping_id last max median min percentile_cont percentile_disc percent_rank rank |
| 84 | syn keyword sqlFunction regr_slope regr_intercept regr_count regr_r2 regr_avgx regr_avgy regr_sxx regr_syy regr_sxy |
| 85 | syn keyword sqlFunction stats_binomial_test stats_crosstab stats_f_test stats_ks_test stats_mode stats_mw_test |
| 86 | syn keyword sqlFunction stats_one_way_anova stats_t_test_one stats_t_test_paired stats_t_test_indep stats_t_test_indepu |
| 87 | syn keyword sqlFunction stats_wsr_test stddev stddev_pop stddev_samp sum |
| 88 | syn keyword sqlFunction sys_xmlagg var_pop var_samp variance xmlagg |
| 89 | " Char Functions |
| 90 | syn keyword sqlFunction ascii chr concat initcap instr length lower lpad ltrim |
| 91 | syn keyword sqlFunction nls_initcap nls_lower nlssort nls_upper regexp_instr regexp_replace |
| 92 | syn keyword sqlFunction regexp_substr replace rpad rtrim soundex substr translate treat trim upper |
| 93 | " Comparison Functions |
| 94 | syn keyword sqlFunction greatest least |
| 95 | " Conversion Functions |
| 96 | syn keyword sqlFunction asciistr bin_to_num cast chartorowid compose convert |
| 97 | syn keyword sqlFunction decompose hextoraw numtodsinterval numtoyminterval rawtohex rawtonhex rowidtochar |
| 98 | syn keyword sqlFunction rowidtonchar scn_to_timestamp timestamp_to_scn to_binary_double to_binary_float |
| 99 | syn keyword sqlFunction to_char to_char to_char to_clob to_date to_dsinterval to_lob to_multi_byte |
| 100 | syn keyword sqlFunction to_nchar to_nchar to_nchar to_nclob to_number to_dsinterval to_single_byte |
| 101 | syn keyword sqlFunction to_timestamp to_timestamp_tz to_yminterval to_yminterval translate unistr |
| 102 | " DataMining Functions |
| 103 | syn keyword sqlFunction cluster_id cluster_probability cluster_set feature_id feature_set |
| 104 | syn keyword sqlFunction feature_value prediction prediction_bounds prediction_cost |
| 105 | syn keyword sqlFunction prediction_details prediction_probability prediction_set |
| 106 | " Datetime Functions |
| 107 | syn keyword sqlFunction add_months current_date current_timestamp dbtimezone extract |
| 108 | syn keyword sqlFunction from_tz last_day localtimestamp months_between new_time |
| 109 | syn keyword sqlFunction next_day numtodsinterval numtoyminterval round sessiontimezone |
| 110 | syn keyword sqlFunction sys_extract_utc sysdate systimestamp to_char to_timestamp |
| 111 | syn keyword sqlFunction to_timestamp_tz to_dsinterval to_yminterval trunc tz_offset |
| 112 | " Numeric Functions |
| 113 | syn keyword sqlFunction abs acos asin atan atan2 bitand ceil cos cosh exp |
| 114 | syn keyword sqlFunction floor ln log mod nanvl power remainder round sign |
| 115 | syn keyword sqlFunction sin sinh sqrt tan tanh trunc width_bucket |
| 116 | " NLS Functions |
| 117 | syn keyword sqlFunction ls_charset_decl_len nls_charset_id nls_charset_name |
| 118 | " Various Functions |
| 119 | syn keyword sqlFunction bfilename cardin coalesce collect decode dump empty_blob empty_clob |
| 120 | syn keyword sqlFunction lnnvl nullif nvl nvl2 ora_hash powermultiset powermultiset_by_cardinality |
| 121 | syn keyword sqlFunction sys_connect_by_path sys_context sys_guid sys_typeid uid user userenv vsizeality |
| 122 | " XML Functions |
| 123 | syn keyword sqlFunction appendchildxml deletexml depth extract existsnode extractvalue insertchildxml |
| 124 | syn keyword sqlFunction insertxmlbefore path sys_dburigen sys_xmlagg sys_xmlgen updatexml xmlagg xmlcast |
| 125 | syn keyword sqlFunction xmlcdata xmlcolattval xmlcomment xmlconcat xmldiff xmlelement xmlexists xmlforest |
| 126 | syn keyword sqlFunction xmlparse xmlpatch xmlpi xmlquery xmlroot xmlsequence xmlserialize xmltable xmltransform |
| 127 | " Todo: |
| 128 | syn keyword sqlTodo TODO FIXME XXX DEBUG NOTE contained |
Bram Moolenaar | 1056d98 | 2006-03-09 22:37:52 +0000 | [diff] [blame] | 129 | |
| 130 | " Define the default highlighting. |
Bram Moolenaar | f37506f | 2016-08-31 22:22:10 +0200 | [diff] [blame] | 131 | hi def link Quote Special |
| 132 | hi def link sqlComment Comment |
| 133 | hi def link sqlFunction Function |
| 134 | hi def link sqlKeyword sqlSpecial |
| 135 | hi def link sqlNumber Number |
| 136 | hi def link sqlOperator sqlStatement |
| 137 | hi def link sqlSpecial Special |
| 138 | hi def link sqlStatement Statement |
| 139 | hi def link sqlString String |
| 140 | hi def link sqlType Type |
| 141 | hi def link sqlTodo Todo |
Bram Moolenaar | 1056d98 | 2006-03-09 22:37:52 +0000 | [diff] [blame] | 142 | |
Bram Moolenaar | 1056d98 | 2006-03-09 22:37:52 +0000 | [diff] [blame] | 143 | let b:current_syntax = "sql" |
Bram Moolenaar | 1056d98 | 2006-03-09 22:37:52 +0000 | [diff] [blame] | 144 | " vim: ts=8 |