diff options
| author | Adam Stankiewicz <sheerun@sher.pl> | 2020-08-18 23:22:09 +0200 | 
|---|---|---|
| committer | Adam Stankiewicz <sheerun@sher.pl> | 2020-08-18 23:22:09 +0200 | 
| commit | 7e38f4288a4f7199240d8a8fce87c8d0cc0198c3 (patch) | |
| tree | 021cd6f6c9e609997332a176e5017597b62ed2d8 | |
| parent | e521ba3ae205b2c79df9030a3db767405caf0457 (diff) | |
| download | vim-polyglot-7e38f4288a4f7199240d8a8fce87c8d0cc0198c3.tar.gz vim-polyglot-7e38f4288a4f7199240d8a8fce87c8d0cc0198c3.zip | |
Add improved sql syntax, closes #505
| -rw-r--r-- | README.md | 3 | ||||
| -rwxr-xr-x | build | 1 | ||||
| -rwxr-xr-x | build.py | 1 | ||||
| -rw-r--r-- | ftdetect/polyglot.vim | 4 | ||||
| -rw-r--r-- | syntax/sql.vim | 266 | 
5 files changed, 274 insertions, 1 deletions
| @@ -10,7 +10,7 @@ A collection of language packs for Vim.  > One to rule them all, one to find them, one to bring them all and in the darkness bind them.  - It **won't affect your startup time**, as scripts are loaded only on demand\*. -- It **installs and updates 120+ times faster** than the <!--Package Count-->154<!--/Package Count--> packages it consists of. +- It **installs and updates 120+ times faster** than the <!--Package Count-->155<!--/Package Count--> packages it consists of.  - Solid syntax and indentation support (other features skipped). Only the best language packs.  - All unnecessary files are ignored (like enormous documentation from php support).  - No support for esoteric languages, only most popular ones (modern too, like `slim`). @@ -167,6 +167,7 @@ If you need full functionality of any plugin, please use it directly with your p  - [slime](https://github.com/slime-lang/vim-slime-syntax) (syntax, indent)  - [smt2](https://github.com/bohlender/vim-smt2) (syntax, autoload, ftplugin)  - [solidity](https://github.com/tomlion/vim-solidity) (syntax, indent, ftplugin) +- [sql](https://github.com/shmup/vim-sql-syntax) (syntax)  - [stylus](https://github.com/wavded/vim-stylus) (syntax, indent, ftplugin)  - [svelte](https://github.com/evanleck/vim-svelte#main) (syntax, indent, ftplugin)  - [svg-indent](https://github.com/jasonshell/vim-svg-indent) (indent) @@ -261,6 +261,7 @@ PACKS="    slime:slime-lang/vim-slime-syntax    smt2:bohlender/vim-smt2    solidity:tomlion/vim-solidity +  sql:shmup/vim-sql-syntax    stylus:wavded/vim-stylus    svelte:evanleck/vim-svelte#main    svg-indent:jasonshell/vim-svg-indent @@ -255,6 +255,7 @@ language("Zig", extra_extensions=[".zir"])  language("Zir", extensions=[".zir"], polyglot="zig", filetype="zir")  language("Jsonnet")  language("Fennel", extensions=[".fnl"]) +language("mcfunction")  lines.append('" restore Vi compatibility settings')  lines.append('let &cpo = s:cpo_save') diff --git a/ftdetect/polyglot.vim b/ftdetect/polyglot.vim index 028b8eb4..5909463b 100644 --- a/ftdetect/polyglot.vim +++ b/ftdetect/polyglot.vim @@ -1151,6 +1151,10 @@ if index(g:polyglot_disabled, 'fennel') == -1    au BufNewFile,BufRead *.fnl set ft=fennel  endif +if index(g:polyglot_disabled, 'mcfunction') == -1 +  au BufNewFile,BufRead *.mcfunction set ft=mcfunction +endif +  " restore Vi compatibility settings  let &cpo = s:cpo_save  unlet s:cpo_save
\ No newline at end of file diff --git a/syntax/sql.vim b/syntax/sql.vim new file mode 100644 index 00000000..58788cb0 --- /dev/null +++ b/syntax/sql.vim @@ -0,0 +1,266 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'sql') == -1 + +" Vim syntax file +" Language:     SQL with SQLite and other additions. +" Maintainer:   Jessica K McIntosh AT gmail DOT com +" Last Changed: Thu Jan 23 06:00 PM 2014 EST + +" More complete SQL matching with error reporting. +" Only matches types inside 'CREATE TABLE ();'. +" Highlights functions. Unknown functions are an error. +" Based on the SQL syntax files that come with Vim. + +" 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 + +syn case ignore + +" All non-contained SQL syntax. +syn cluster sqlALL          contains=TOP + +" Various error conditions. +"syn match   sqlError        "\<\w\+("           " Not a known function. +syn match   sqlError        ")"                 " Lonely closing paren. +syn match   sqlError        ",\(\_\s*[;)]\)\@=" " Comma before a paren or semicolon. +syn match   sqlError        " $"                " Space at the end of a line. +" Comma before certain words. +syn match   sqlError        ",\_\s*\(\<\(asc\|desc\|exists\|for\|from\)\>\)\@=" +syn match   sqlError        ",\_\s*\(\<\(group by\|into\|limit\|order\)\>\)\@=" +syn match   sqlError        ",\_\s*\(\<\(table\|using\|where\)\>\)\@=" + +" Special words. +syn keyword sqlSpecial      false null true + +" Keywords +syn keyword sqlKeyword      access add after aggregate as asc authorization +syn keyword sqlKeyword      begin by cache cascade check cluster collate +syn keyword sqlKeyword      collation column compress conflict connect connection +syn keyword sqlKeyword      constraint current cursor database debug decimal +syn keyword sqlKeyword      default desc each else elsif escape exception +syn keyword sqlKeyword      exclusive explain external file for foreign from function +syn keyword sqlKeyword      group having identified if immediate increment index +syn keyword sqlKeyword      initial inner into is join key left level loop +syn keyword sqlKeyword      maxextents mode modify nocompress nowait object of +syn keyword sqlKeyword      off offline on online option order outer pctfree +syn keyword sqlKeyword      primary privileges procedure public references +syn keyword sqlKeyword      referencing release resource return role row rowid +syn keyword sqlKeyword      rowlabel rownum rows schema session share size +syn keyword sqlKeyword      start successful synonym then to transaction trigger +syn keyword sqlKeyword      uid user using validate values view virtual whenever +syn keyword sqlKeyword      where with +syn match   sqlKeyword      "\<prompt\>" +syn match   sqlKeyword      "\<glob\>" +" Do special things with CREATE TABLE ( below. +syn match   sqlKeyword      "\<table\>" + +" SQLite Pragmas - Treat them as keywords. +syn keyword sqlKeyword      auto_vacuum automatic_index cache_size +syn keyword sqlKeyword      case_sensitive_like checkpoint_fullfsync +syn keyword sqlKeyword      collation_list compile_options count_changes +syn keyword sqlKeyword      database_list default_cache_size +syn keyword sqlKeyword      empty_result_callbacks encoding foreign_key_list +syn keyword sqlKeyword      foreign_keys freelist_count full_column_names +syn keyword sqlKeyword      fullfsync ignore_check_constraints +syn keyword sqlKeyword      incremental_vacuum index_info index_list +syn keyword sqlKeyword      integrity_check journal_mode journal_size_limit +syn keyword sqlKeyword      legacy_file_format locking_mode max_page_count +syn keyword sqlKeyword      page_count page_size parser_trace quick_check +syn keyword sqlKeyword      read_uncommitted recursive_triggers +syn keyword sqlKeyword      reverse_unordered_selects schema_version +syn keyword sqlKeyword      secure_delete short_column_names synchronous +syn keyword sqlKeyword      table_info temp_store temp_store_directory +syn keyword sqlKeyword      user_version vdbe_listing vdbe_trace +syn keyword sqlKeyword      wal_autocheckpoint wal_checkpoint writable_schema + +" Operators +syn keyword sqlOperator     all and any between case distinct elif else end +syn keyword sqlOperator     exit exists if in intersect is like match matches +syn keyword sqlOperator     minus not or out prior regexp some then union +syn keyword sqlOperator     unique when +syn match   sqlOperator     "||\|:=" + +" Conditionals +syn match   sqlConditional  "=\|<\|>\|+\|-" + +" Unknown functions. +syn match   sqlUnknownFunc  "\<\w\+(\@=" + +" Functions - Only valid with a '(' after them. +syn match   sqlFunction     "\<\(abs\|acos\|asin\|atan2\?\|avg\|cardinality\)(\@=" +syn match   sqlFunction     "\<\(cast\|changes\|char_length\|character_length\)(\@=" +syn match   sqlFunction     "\<\(coalesce\|concat\|cos\|count\|\(date\)\?\(time\)\?\)(\@=" +syn match   sqlFunction     "\<\(exp\|filetoblob\|filetoclob\|floor\|glob\|group_concat\)(\@=" +syn match   sqlFunction     "\<\(hex\|ifnull\|initcap\|isnull\|julianday\|last_insert_rowid\)(\@=" +syn match   sqlFunction     "\<\(length\|log10\|logn\|lower\|lpad\|ltrin\|max\|min\)(\@=" +syn match   sqlFunction     "\<\(mod\|nullif\|octet_length\|pow\|quote\|random\)(\@=" +syn match   sqlFunction     "\<\(range\|replace\|root\|round\|rpad\|sin\|soundex\)(\@=" +syn match   sqlFunction     "\<\(sqrtstdev\|strftime\|substr\|substring\|sum\|sysdate\|tan\)(\@=" +syn match   sqlFunction     "\<\(to_char\|to_date\|to_number\|total\|trim\|trunc\|typeof\)(\@=" +syn match   sqlFunction     "\<\(upper\|variance\)(\@=" + +" Oracle DBMS functions. +syn match   sqlFunction     "\<dbms_\w\+\.\w\+(\@=" + +" Oracle Exception Functions. +syn match   sqlFunction     "\<raise_application_error(\@=" + +" SQLite Functions +syn match   sqlFunction     "\<\(last_insert_rowid\|load_extension\|randomblob\)(\@=" +syn match   sqlFunction     "\<\(sqlite_compileoption_get\|sqlite_compileoption_used\)(\@=" +syn match   sqlFunction     "\<\(sqlite_source_id\|sqlite_version\|sqlite_version\)(\@=" +syn match   sqlFunction     "\<\(zeroblob\|ltrim\|rtrim\)(\@=" + +" SQLite Command Line Client Functions +syn match   sqlFunction     "^\.\w\+" + +" Statements +syn keyword sqlStatement    alter analyze audit begin comment commit delete +syn keyword sqlStatement    drop execute explain grant insert lock noaudit +syn keyword sqlStatement    rename revoke rollback savepoint select +syn keyword sqlStatement    truncate update vacuum +syn match   sqlStatement    "\<\(replace\|create\)\>" + +" SQLite Statements +syn keyword sqlStatement    attach detach indexed pragma reindex + +" Types - Only matched inside 'CREATE TABLE ();'. +syn keyword sqlType         contained bigint bit blob bool boolean byte char +syn keyword sqlType         contained clob date datetime dec decimal enum +syn keyword sqlType         contained float int int8 integer interval long +syn keyword sqlType         contained longblob longtext lvarchar mediumblob +syn keyword sqlType         contained mediumint mediumtext mlslabel money +syn keyword sqlType         contained multiset nchar number numeric nvarchar +syn keyword sqlType         contained raw real rowid serial serial8 set +syn keyword sqlType         contained smallfloat smallint text time +syn keyword sqlType         contained timestamp tinyblob tinyint tinytext +syn keyword sqlType         contained varchar varchar2 varray year +syn match   sqlType         contained "\<\(character\|double\|varying\)\>" +syn match   sqlType         contained "\<character\s\+varying\>" +syn match   sqlType         contained "\<double\s\+precision\>" + +" Oracle Variables +syn match   sqlVariable     "&\a\w\+" +syn match   sqlVariable     ":\w\+" +syn match   sqlVariable     "SQL%\w\+" + +" Strings +syn region sqlString        start=+"+  skip=+\\\\\|\\"+  end=+"+ contains=sqlVariable +syn region sqlString        start=+'+  skip=+\\\\\|\\'+  end=+'+ contains=sqlVariable +syn region sqlString        start=+`+  skip=+\\\\\|\\`+  end=+`+ contains=sqlVariable + +" Numbers +syn match sqlNumber         "-\=\<[0-9]*\>" +syn match sqlNumber         "-\=\<[0-9]*\.[0-9]*\>" +syn match sqlNumber         "-\=\<[0-9][0-9]*e[+-]\=[0-9]*\>" +syn match sqlNumber         "-\=\<[0-9]*\.[0-9]*e[+-]\=[0-9]*\>" +syn match sqlNumber         "\<0x[abcdef0-9]*\>" + +" Todo +syn keyword sqlTodo         contained DEBUG FIXME NOTE TODO XXX + +" Comments +syn region sqlComment       start="/\*"  end="\*/" contains=sqlTodo +syn match  sqlComment       "--.*$" contains=sqlTodo +syn match  sqlComment       "\(^\|\s\)rem.*$" contains=sqlTodo + +" Mark correct paren use. Different colors for different purposes. +syn region  sqlParens       transparent matchgroup=sqlParen start="(" end=")" +syn match   sqlParenEmpty   "()" +syn region  sqlParens       transparent matchgroup=sqlParenFunc start="\(\<\w\+\>\)\@<=(" end=")" + +" Highlight types correctly inside create table and procedure statements. +" All other SQL is properly highlighted as well. +syn region  sqlTypeParens   contained matchgroup=sqlType start="(" end=")" contains=@sqlALL +syn match   sqlTypeMatch    contained "\(\(^\|[,(]\)\s*\S\+\s\+\)\@<=\w\+\(\s*([^)]\+)\)\?" contains=sqlType,sqlTypeParens +syn match   sqlTypeMatch    contained "\(\(^\|[,(]\)\s*\S\+\s\+\)\@<=character\s\+varying\s*([^)]\+)" contains=sqlType,sqlTypeParens +syn region  sqlTypeRegion   matchgroup=sqlParen start="\(create\s\+table\s\+[^(]\+\s\+\)\@<=(" end=")" contains=@sqlALL,sqlTypeMatch +syn region  sqlTypeRegion   matchgroup=sqlParen start="\(create\s\+\(or\s\+replace\s\+\)\?procedure\s\+[^(]\+\s*\)\@<=(" end=")" contains=@sqlALL,sqlTypeMatch + +" SQL Embedded in a statement. +syn region  sqlquoteRegion  matchgroup=sqlParen start="\(execute\s\+immediate\s*\)\@<=('" end="')" contains=@sqlALL + +" Special Oracle Statements +syn match   sqlStatement    "^\s*\(prompt\|spool\)\>" nextgroup=sqlAnyString +syn match   sqlStatement    "^\s*accept\s\+" nextgroup=sqlAnyVariable +syn match   sqlStatement    "declare\s\+" nextgroup=sqlDeclare +syn region  sqlDeclare      contained matchgroup=sqlVariable start="\a\w\+" end="$" contains=@sqlALL,sqlType +syn match   sqlOperator     "^@" nextgroup=sqlAnyString +syn match   sqlAnyVariable  contained "\a\w\+" +syn match   sqlAnyString    contained ".*" contains=sqlVariable + +syn region  sqlSetRegion    matchgroup=sqlStatement start="^\s*set\>" matchgroup=NONE end="$" contains=sqlSetOptions,sqlSetValues +syn keyword sqlSetOptions   contained autorecovery colsep copytypecheck describe escchar flagger +syn keyword sqlSetOptions   contained instance logsource long null recsep recsepchar +syn keyword sqlSetOptions   contained  +syn match   sqlSetOptions   contained "\<\(app\w*\|array\w*\|auto\w*\|autop\w*\)\>" +syn match   sqlSetOptions   contained "\<\(autot\w*\|blo\w*\|cmds\w*\|con\w*\|copyc\w*\)\>" +syn match   sqlSetOptions   contained "\<\(def\w*\|echo\|editf\w*\|emb\w*\|errorl\w*\|esc\w*\)\>" +syn match   sqlSetOptions   contained "\<\(feed\w*\|flu\w*\|hea\w*\|heads\w*\|lin\w*\)\>" +syn match   sqlSetOptions   contained "\<\(lobof\w*\|longc\w*\|mark\w*\|newp\w*\|numf\w*\)\>" +syn match   sqlSetOptions   contained "\<\(pages\w*\|pau\w*\|serverout\w*\|shift\w*\|show\w*\)\>" +syn match   sqlSetOptions   contained "\<\(sqlbl\w*\|sqlc\w*\|sqlco\w*\|sqln\w*\|sqlpluscompat\w*\)\>" +syn match   sqlSetOptions   contained "\<\(sqlpre\w*\|sqlp\w*\|sqlt\w*\|suf\w*\|tab\)\>" +syn match   sqlSetOptions   contained "\<\(term\w*\|timi\w*\|und\w*\|ver\w*\|wra\w\?\)\>" +syn match   sqlSetOptions   contained "\<\(xquery\s\+\(baseuri\|ordering\|node\|context\)\)\>" +syn keyword sqlSetValues    contained all body byreference byvalue default +syn keyword sqlSetValues    contained entry fill head html identifier indent +syn keyword sqlSetValues    contained linenum local none off on size table truncate +syn match   sqlSetValues    contained "\<\(ea\w*\|wr\w*\|imm\w*\|trace\w*\|expl\w*\|stat\w*\)\>" +syn match   sqlSetValues    contained "\<\(intermed\w*\|pre\w*\|unl\w*\|for\w*\|wra\w*\|wor\w\?\)\>" +syn match   sqlSetValues    contained "\<\(vis\w*\|inv\w*\)\>" +syn match   sqlSetValues    contained "\<\(\(un\)\?ordered\)\>" + +" Stolen from sh.vim. +if !exists("sh_minlines") +  let sh_minlines = 200 +endif +if !exists("sh_maxlines") +  let sh_maxlines = 2 * sh_minlines +endif +exec "syn sync minlines=" . sh_minlines . " maxlines=" . sh_maxlines + +" Define the default highlighting. +" For version 5.7 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_sql_syn_inits") +    if version < 508 +        let did_sql_syn_inits = 1 +        command -nargs=+ HiLink hi link <args> +    else +        command -nargs=+ HiLink hi def link <args> +    endif + +    HiLink sqlComment       Comment +    HiLink sqlError         Error +    HiLink sqlFunction      Function +    HiLink sqlUnknownFunc   Exception +    HiLink sqlKeyword       Special +    HiLink sqlConditional   Conditional +    HiLink sqlNumber        Number +    HiLink sqlOperator      Operator +    HiLink sqlParen         Comment +    HiLink sqlParenEmpty    Operator +    HiLink sqlParenFunc     Function +    HiLink sqlSpecial       Keyword +    HiLink sqlStatement     Statement +    HiLink sqlString        String +    HiLink sqlTodo          Todo +    HiLink sqlType          Type +    HiLink sqlVariable      Identifier + +    HiLink sqlAnyString     sqlString +    HiLink sqlAnyVariable   sqlVariable +    HiLink sqlSetOptions    Operator +    HiLink sqlSetValues     Special + +    delcommand HiLink +endif + +let b:current_syntax = "sql" + +endif | 
