diff options
author | Bram Moolenaar <Bram@vim.org> | 2005-02-22 08:39:57 +0000 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2005-02-22 08:39:57 +0000 |
commit | df177f679e950a2ab2ad5fe7d45c1daface004d7 (patch) | |
tree | 21c0c50e9144ef873af675daf53b86beb26dd677 /runtime | |
parent | 6bdcfc08cb9c192972336e28a2a842b7abbb2811 (diff) |
updated for version 7.0051
Diffstat (limited to 'runtime')
-rw-r--r-- | runtime/doc/cmdline.txt | 22 | ||||
-rw-r--r-- | runtime/doc/editing.txt | 17 | ||||
-rw-r--r-- | runtime/doc/gui_w32.txt | 4 | ||||
-rw-r--r-- | runtime/doc/insert.txt | 17 | ||||
-rw-r--r-- | runtime/doc/mbyte.txt | 4 | ||||
-rw-r--r-- | runtime/doc/message.txt | 5 | ||||
-rw-r--r-- | runtime/ftplugin/sql.vim | 195 | ||||
-rw-r--r-- | runtime/syntax/esmtprc.vim | 34 | ||||
-rw-r--r-- | runtime/syntax/sh.vim | 64 | ||||
-rw-r--r-- | runtime/syntax/vim.vim | 9 |
10 files changed, 305 insertions, 66 deletions
diff --git a/runtime/doc/cmdline.txt b/runtime/doc/cmdline.txt index 2ced21ad2a..43f72195a1 100644 --- a/runtime/doc/cmdline.txt +++ b/runtime/doc/cmdline.txt @@ -1,4 +1,4 @@ -*cmdline.txt* For Vim version 7.0aa. Last change: 2005 Jan 13 +*cmdline.txt* For Vim version 7.0aa. Last change: 2005 Feb 14 VIM REFERENCE MANUAL by Bram Moolenaar @@ -17,8 +17,9 @@ Basic command line editing is explained in chapter 20 of the user manual 2. Command-line completion |cmdline-completion| 3. Ex command-lines |cmdline-lines| 4. Ex command-line ranges |cmdline-ranges| -5. Ex special characters |cmdline-special| -6. Command-line window |cmdline-window| +5. Ex command-line flags |ex-flags| +6. Ex special characters |cmdline-special| +7. Command-line window |cmdline-window| ============================================================================== 1. Command-line editing *cmdline-editing* @@ -668,7 +669,20 @@ Visual Mode and Range *v_:* lines. ============================================================================== -5. Ex special characters *cmdline-special* +5. Ex command-line flags *ex-flags* + +These flags are supported by a selection of Ex commands. They print the line +that the cursor ends up after executing the command: + + l output like for |:list| + # add line number + p output like for |:print| + +The flags can be combined, thus "l#" uses both a line number and |:list| style +output. + +============================================================================== +6. Ex special characters *cmdline-special* In Ex commands, at places where a file name can be used, the following characters have a special meaning. These can also be used in the expression diff --git a/runtime/doc/editing.txt b/runtime/doc/editing.txt index ae7543e8d6..3fb4e54dee 100644 --- a/runtime/doc/editing.txt +++ b/runtime/doc/editing.txt @@ -1,4 +1,4 @@ -*editing.txt* For Vim version 7.0aa. Last change: 2005 Feb 07 +*editing.txt* For Vim version 7.0aa. Last change: 2005 Feb 14 VIM REFERENCE MANUAL by Bram Moolenaar @@ -1143,13 +1143,16 @@ You may use the |:cd| and |:lcd| commands to change to another directory, so you will not have to type that directory name in front of the file names. It also makes a difference for executing external commands, e.g. ":!ls". +Changing directory fails when the current buffer is modified, the '.' flag is +present in 'cpoptions' and "!" is not used in the command. + *:cd* *E472* -:cd On non-Unix systems: Print the current directory +:cd[!] On non-Unix systems: Print the current directory name. On Unix systems: Change the current directory to the home directory. Use |:pwd| to print the current directory on all systems. -:cd {path} Change the current directory to {path}. +:cd[!] {path} Change the current directory to {path}. If {path} is relative, it is searched for in the directories listed in |'cdpath'|. Does not change the meaning of an already opened file, @@ -1160,19 +1163,19 @@ also makes a difference for executing external commands, e.g. ":!ls". :cd %:h < *:cd-* *E186* -:cd - Change to the previous current directory (before the +:cd[!] - Change to the previous current directory (before the previous ":cd {path}" command). {not in Vi} *:chd* *:chdir* -:chd[ir] [path] Same as |:cd|. +:chd[ir][!] [path] Same as |:cd|. *:lc* *:lcd* -:lc[d] {path} Like |:cd|, but only set the current directory for the +:lc[d][!] {path} Like |:cd|, but only set the current directory for the current window. The current directory for other windows is not changed. {not in Vi} *:lch* *:lchdir* -:lch[dir] Same as |:lcd|. {not in Vi} +:lch[dir][!] Same as |:lcd|. {not in Vi} *:pw* *:pwd* *E187* :pw[d] Print the current directory name. {Vi: no pwd} diff --git a/runtime/doc/gui_w32.txt b/runtime/doc/gui_w32.txt index 5dded7aa71..07817aba91 100644 --- a/runtime/doc/gui_w32.txt +++ b/runtime/doc/gui_w32.txt @@ -1,4 +1,4 @@ -*gui_w32.txt* For Vim version 7.0aa. Last change: 2005 Jan 07 +*gui_w32.txt* For Vim version 7.0aa. Last change: 2005 Feb 14 VIM REFERENCE MANUAL by Bram Moolenaar @@ -235,7 +235,7 @@ cancel an operation. Use CTRL-Break for that. CTRL-Z is used for undo. This means you can't suspend Vim. - *CTRL-V-alternative* + *CTRL-V-alternative* *CTRL-Q* Since CTRL-V is used to paste, you can't use it to start a blockwise Visual selection. You can use CTRL-Q instead. You can also use CTRL-Q in Insert mode and Command-line mode to get the old meaning of CTRL-V. But CTRL-Q diff --git a/runtime/doc/insert.txt b/runtime/doc/insert.txt index fad968f44c..19b7357298 100644 --- a/runtime/doc/insert.txt +++ b/runtime/doc/insert.txt @@ -1,4 +1,4 @@ -*insert.txt* For Vim version 7.0aa. Last change: 2005 Feb 08 +*insert.txt* For Vim version 7.0aa. Last change: 2005 Feb 21 VIM REFERENCE MANUAL by Bram Moolenaar @@ -970,18 +970,29 @@ too long when appending characters a line break is automatically inserted. 9. Ex insert commands *inserting-ex* *:a* *:append* -:{range}a[ppend] Insert several lines of text below the specified +:{range}a[ppend][!] Insert several lines of text below the specified line. If the {range} is missing, the text will be inserted after the current line. + Adding [!] toggles 'autoindent' for the time this + command is executed. *:i* *:in* *:insert* -:{range}i[nsert] Insert several lines of text above the specified +:{range}i[nsert][!] Insert several lines of text above the specified line. If the {range} is missing, the text will be inserted before the current line. + Adding [!] toggles 'autoindent' for the time this + command is executed. These two commands will keep on asking for lines, until you type a line containing only a ".". Watch out for lines starting with a backslash, see |line-continuation|. +When these commands are used with |:global| or |:vglobal| then the lines are +obtained from the text following the command. Separate lines with a NL +escaped with a backslash: > + :global/abc/insert\ + one line\ + another line +The final "." is not needed then. NOTE: ":append" and ":insert" don't work properly in between ":if" and ":endif", ":for" and ":endfor", ":while" and ":endwhile". diff --git a/runtime/doc/mbyte.txt b/runtime/doc/mbyte.txt index 1e13bcf615..be63658961 100644 --- a/runtime/doc/mbyte.txt +++ b/runtime/doc/mbyte.txt @@ -1,4 +1,4 @@ -*mbyte.txt* For Vim version 7.0aa. Last change: 2004 Dec 19 +*mbyte.txt* For Vim version 7.0aa. Last change: 2005 Feb 13 VIM REFERENCE MANUAL by Bram Moolenaar et al. @@ -1319,7 +1319,7 @@ a zero if necessary. COMMAND ARGUMENTS *utf-8-char-arg* Commands like |f|, |F|, |t| and |r| take an argument of one character. For -UTF-8 this argument may include one or two composing characters. These needs +UTF-8 this argument may include one or two composing characters. These need to be produced together with the base character, Vim doesn't wait for the next character to be typed to find out if it is a composing character or not. Using 'keymap' or |:lmap| is a nice way to type these characters. diff --git a/runtime/doc/message.txt b/runtime/doc/message.txt index d0183b6541..425d6fb312 100644 --- a/runtime/doc/message.txt +++ b/runtime/doc/message.txt @@ -1,4 +1,4 @@ -*message.txt* For Vim version 7.0aa. Last change: 2005 Jan 08 +*message.txt* For Vim version 7.0aa. Last change: 2005 Feb 13 VIM REFERENCE MANUAL by Bram Moolenaar @@ -364,7 +364,8 @@ cannot be written. You need to give the buffer a file name: > When using the '~' character in a pattern, it is replaced with the previously used pattern in a ":substitute" command. This fails when no such command has -been used yet. See |/~|. +been used yet. See |/~|. This also happens when using ":s/pat/%/", where the +"%" stands for the previous substitute string. *E35* > No previous regular expression diff --git a/runtime/ftplugin/sql.vim b/runtime/ftplugin/sql.vim index afbdf555c1..efccebdf16 100644 --- a/runtime/ftplugin/sql.vim +++ b/runtime/ftplugin/sql.vim @@ -1,35 +1,198 @@ -" Vim filetype plugin file -" Language: SQL (Common for Oracle, Microsoft SQL Server, Sybase) -" Version: 0.02 -" Maintainer: David Fishburn <fishburn@ianywhere.com> -" Last Change: Tue May 27 2003 09:33:31 +" SQL filetype plugin file +" Language: SQL (Common for Oracle, Microsoft SQL Server, Sybase) +" Version: 0.08 +" Maintainer: David Fishburn <fishburn at ianywhere dot com> +" Last Change: Mon Feb 21 2005 7:27:36 AM +" Download: http://vim.sourceforge.net/script.php?script_id=454 " This file should only contain values that are common to all SQL languages " Oracle, Microsoft SQL Server, Sybase ASA/ASE, MySQL, and so on " If additional features are required create: -" vimfiles/after/ftplugin/sql.vim -" to override and add any of your own settings +" vimfiles/after/ftplugin/sql.vim (Windows) +" .vim/after/ftplugin/sql.vim (Unix) +" to override and add any of your own settings. " Only do this when not done yet for this buffer if exists("b:did_ftplugin") finish endif +let s:save_cpo = &cpo +set cpo= + " Don't load another plugin for this buffer let b:did_ftplugin = 1 +" Some standard expressions for use with the matchit strings +let s:notend = '\%(\<end\s\+\)\@<!' +let s:when_no_matched_or_others = '\%(\<when\>\%(\s\+\%(\%(\<not\>\s\+\)\?<matched\>\)\|\<others\>\)\@!\)' +let s:or_replace = '\%(or\s\+replace\s\+\)\?' + " Define patterns for the matchit macro if !exists("b:match_words") " SQL is generally case insensitive let b:match_ignorecase = 1 + + " Handle the following: + " if + " elseif | elsif + " else [if] + " end if + " + " [while condition] loop + " leave + " break + " continue + " exit + " end loop + " + " for + " leave + " break + " continue + " exit + " end loop + " + " do + " statements + " doend + " + " case + " when + " when + " default + " end case + " + " merge + " when not matched + " when matched + " + " EXCEPTION + " WHEN column_not_found THEN + " WHEN OTHERS THEN + " + " create[ or replace] procedure|function|event + let b:match_words = - \ '\<begin\>:\<end\>\(;\)\?$,'. - \ '\<if\>:\<elsif\>:\<elseif\>:\<else\>:'. - \ '\%(\<end\s\+\)\@<!' . '\<if\>:\<end\s\+if\>,'. - \ '\<loop\>:\<break\>:\<continue\>:'. - \ '\%(\<end\s\+\)\@<!' . '\<loop\>:\<end\s\+loop\>,'. - \ '\<for\>:\<break\>:\<continue\>:'. - \ '\%(\<end\s\+\)\@<!' . '\<for\>:\<end\s\+for\>,'. - \ '\<case\>:\<when\>:\<default\>:'. - \ '\%(\<end\s\+\)\@<!' . '\<case\>:\<end\s\+case\>' + \ '\<begin\>:\<end\>\W*$,'. + \ + \ s:notend . '\<if\>:'. + \ '\<elsif\>\|\<elseif\>\|\<else\>:'. + \ '\<end\s\+if\>,'. + \ + \ '\<do\>\|'. + \ '\<while\>\|'. + \ '\%(' . s:notend . '\<loop\>\)\|'. + \ '\%(' . s:notend . '\<for\>\):'. + \ '\<exit\>\|\<leave\>\|\<break\>\|\<continue\>:'. + \ '\%(\<end\s\+\%(for\|loop\>\)\)\|\<doend\>,'. + \ + \ '\%('. s:notend . '\<case\>\):'. + \ '\%('.s:when_no_matched_or_others.'\):'. + \ '\%(\<when\s\+others\>\|\<end\s\+case\>\),' . + \ + \ '\<merge\>:' . + \ '\<when\s\+not\s\+matched\>:' . + \ '\<when\s\+matched\>,' . + \ + \ '\%(\<create\s\+' . s:or_replace . '\)\?'. + \ '\%(function\|procedure\|event\):'. + \ '\<returns\?\>' + " \ '\<begin\>\|\<returns\?\>:'. + " \ '\<end\>\(;\)\?\s*$' + " \ '\<exception\>:'.s:when_no_matched_or_others. + " \ ':\<when\s\+others\>,'. + " + " \ '\%(\<exception\>\|\%('. s:notend . '\<case\>\)\):'. + " \ '\%(\<default\>\|'.s:when_no_matched_or_others.'\):'. + " \ '\%(\%(\<when\s\+others\>\)\|\<end\s\+case\>\),' . endif + +" Define how to find the macro definition of a variable using the various +" [d, [D, [_CTRL_D and so on features +" Match these values ignoring case +" ie DECLARE varname INTEGER +let &l:define = '\c\(DECLARE\|IN\|OUT\|INOUT\)\s*' + + +" Mappings to move to the next BEGIN ... END block +" \W - no characters or digits +nmap <buffer> <silent> ]] :call search('\c^\s*begin\>', 'W' )<CR> +nmap <buffer> <silent> [[ :call search('\c^\s*begin\>', 'bW' )<CR> +nmap <buffer> <silent> ][ :call search('\c^\s*end\W*$', 'W' )<CR> +nmap <buffer> <silent> [] :call search('\c^\s*end\W*$', 'bW' )<CR> +vmap <buffer> <silent> ]] /\c^\s*begin\><CR> +vmap <buffer> <silent> [[ ?\c^\s*begin<CR> +vmap <buffer> <silent> ][ /\c^\s*end\W*$<CR> +vmap <buffer> <silent> [] ?\c^\s*end\W*$<CR> + + +" Predefined SQL objects what are used by the below mappings using +" the ]} style maps. +" This global variable allows the users to override it's value +" from within their vimrc. +if !exists('g:ftplugin_sql_objects') + let g:ftplugin_sql_objects = 'function,procedure,event,' . + \ '\(existing\\|global\s\+temporary\s\+\)\?table,trigger' . + \ ',schema,service,publication,database,datatype,domain' . + \ ',index,subscription,synchronization,view,variable' +endif + +let s:ftplugin_sql_objects = + \ '\c^\s*' . + \ '\(create\s\+\(or\s\+replace\s\+\)\?\)\?' . + \ '\<\(' . + \ substitute(g:ftplugin_sql_objects, ',', '\\\\|', 'g') . + \ '\)\>' + +" Mappings to move to the next CREATE ... block +" map <buffer> <silent> ]} :call search(g:ftplugin_sql_objects, 'W' )<CR> +" nmap <buffer> <silent> [{ :call search('\c^\s*\(create\s\+\(or\s\+replace\s\+\)\?\)\?\<\(function\\|procedure\\|event\\|table\\|trigger\\|schema\)\>', 'bW' )<CR> +" exec 'nmap <buffer> <silent> ]} /'.s:ftplugin_sql_objects.'<CR>' +exec "nmap <buffer> <silent> ]} :call search('".s:ftplugin_sql_objects."', 'W')<CR>" +exec "nmap <buffer> <silent> [{ :call search('".s:ftplugin_sql_objects."', 'bW')<CR>" +" Could not figure out how to use a :call search() string in visual mode +" without it ending visual mode +exec 'vmap <buffer> <silent> ]} /'.s:ftplugin_sql_objects.'<CR>' +exec 'vmap <buffer> <silent> [{ ?'.s:ftplugin_sql_objects.'<CR>' +" vmap <buffer> <silent> ]} /\c^\s*\(create\s\+\(or\s\+replace\s\+\)\?\)\?\<\(function\\|procedure\\|event\\|table\\|trigger\\|schema\)\><CR> +" vmap <buffer> <silent> [{ ?\c^\s*\(create\s\+\(or\s\+replace\s\+\)\?\)\?\<\(function\\|procedure\\|event\\|table\\|trigger\\|schema\)\><CR> + +" Mappings to move to the next COMMENT +" +" Had to double the \ for the \| separator since this has a special +" meaning on maps +let b:comment_leader = '\(--\\|\/\/\\|\*\\|\/\*\\|\*\/\)' +" Find the start of the next comment +let b:comment_start = '^\(\s*'.b:comment_leader.'.*\n\)\@<!'. + \ '\(\s*'.b:comment_leader.'\)' +" Find the end of the previous comment +let b:comment_end = '\(^\s*'.b:comment_leader.'.*\n\)'. + \ '\(^\s*'.b:comment_leader.'\)\@!' +" Skip over the comment +let b:comment_jump_over = "call search('". + \ '^\(\s*'.b:comment_leader.'.*\n\)\@<!'. + \ "', 'W')" +let b:comment_skip_back = "call search('". + \ '^\(\s*'.b:comment_leader.'.*\n\)\@<!'. + \ "', 'bW')" +" Move to the start and end of comments +exec 'nnoremap <silent><buffer> ]" /'.b:comment_start.'<CR>' +exec 'nnoremap <silent><buffer> [" /'.b:comment_end.'<CR>' +exec 'vnoremap <silent><buffer> ]" /'.b:comment_start.'<CR>' +exec 'vnoremap <silent><buffer> [" /'.b:comment_end.'<CR>' + +" Comments can be of the form: +" /* +" * +" */ +" or +" // +" or +" -- +setlocal comments=s1:/*,mb:*,ex:*/,:--,:// + +let &cpo = s:save_cpo + +" vim:sw=4:ff=unix: + diff --git a/runtime/syntax/esmtprc.vim b/runtime/syntax/esmtprc.vim new file mode 100644 index 0000000000..b36739ac20 --- /dev/null +++ b/runtime/syntax/esmtprc.vim @@ -0,0 +1,34 @@ +" Vim syntax file +" Language: Esmtp setup file (based on esmtp 0.5.0) +" Maintainer: Kornel Kielczewski <kornel@gazeta.pl> +" Last Change: 16 Feb 2005 + +" 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 + +"All options +:syntax keyword esmtprcOptions hostname username password starttls certificate_passphrase preconnect identity mda + +"All keywords +:syntax keyword esmtprcIdentifier default enabled disabled required + +"We're trying to be smarer than /."*@.*/ :) +:syntax match esmtprcAddress /[a-z0-9_.-]*[a-z0-9]\+@[a-z0-9_.-]*[a-z0-9]\+\.[a-z]\+/ +:syntax match esmtprcFulladd /[a-z0-9_.-]*[a-z0-9]\+\.[a-z]\+:[0-9]\+/ + +"String.. +:syntax region esmtprcString start=/"/ end=/"/ + + +:highlight link esmtprcOptions Label +:highlight link esmtprcString String +:highlight link esmtprcAddress Type +:highlight link esmtprcIdentifier Identifier +:highlight link esmtprcFulladd Include + +let b:current_syntax="esmtprc" diff --git a/runtime/syntax/sh.vim b/runtime/syntax/sh.vim index 83b8a592df..a71ee4dfc3 100644 --- a/runtime/syntax/sh.vim +++ b/runtime/syntax/sh.vim @@ -2,8 +2,8 @@ " Language: shell (sh) Korn shell (ksh) bash (sh) " Maintainer: Dr. Charles E. Campbell, Jr. <NdrOchipS@PcampbellAfamily.Mbiz> " Previous Maintainer: Lennart Schultz <Lennart.Schultz@ecmwf.int> -" Last Change: Dec 28, 2004 -" Version: 71 +" Last Change: Feb 16, 2005 +" Version: 72 " URL: http://www.erols.com/astronaut/vim/index.html#vimlinks_syntax " " Using the following VIM variables: {{{1 @@ -63,24 +63,24 @@ syn case match " Clusters: contains=@... clusters {{{1 "================================== -syn cluster shCaseEsacList contains=shCaseStart,shCase,shCaseBar,shCaseIn,shComment,shDeref,shDerefSimple,shCaseCommandSub,shCaseSingleQuote,shCaseDoubleQuote,shSpecial +syn cluster shCaseEsacList contains=shCaseStart,shCase,shCaseBar,shCaseIn,shComment,shDeref,shDerefSimple,shCaseCommandSub,shCaseExSingleQuote,shCaseSingleQuote,shCaseDoubleQuote,shSpecial syn cluster shCaseList contains=@shCommandSubList,shCaseEsac,shColon,shCommandSub,shCommandSub,shComment,shDo,shEcho,shExpr,shFor,shHereDoc,shIf,shRedir,shSetList,shSource,shStatement,shVariable,bkshFunction,shSpecial syn cluster shColonList contains=@shCaseList -syn cluster shCommandSubList contains=shArithmetic,shDeref,shDerefSimple,shNumber,shOperator,shPosnParm,shSpecial,shSingleQuote,shDoubleQuote,shStatement,shVariable,shSubSh,shAlias,shTest +syn cluster shCommandSubList contains=shArithmetic,shDeref,shDerefSimple,shNumber,shOperator,shPosnParm,shSpecial,shExSingleQuote,shSingleQuote,shDoubleQuote,shStatement,shVariable,shSubSh,shAlias,shTest syn cluster shDblQuoteList contains=shCommandSub,shDeref,shDerefSimple,shSpecial,shPosnParm syn cluster shDerefList contains=shDeref,shDerefSimple,shDerefVar,shDerefSpecial,shDerefWordError syn cluster shDerefVarList contains=shDerefOp,shDerefVarArray,shDerefOpError -syn cluster shEchoList contains=shArithmetic,shCommandSub,shDeref,shDerefSimple,shExpr,shSingleQuote,shDoubleQuote,shSpecial -syn cluster shExprList1 contains=shCharClass,shNumber,shOperator,shSingleQuote,shDoubleQuote,shSpecial,shExpr,shDblBrace,shDeref,shDerefSimple +syn cluster shEchoList contains=shArithmetic,shCommandSub,shDeref,shDerefSimple,shExpr,shExSingleQuote,shSingleQuote,shDoubleQuote,shSpecial +syn cluster shExprList1 contains=shCharClass,shNumber,shOperator,shExSingleQuote,shSingleQuote,shDoubleQuote,shSpecial,shExpr,shDblBrace,shDeref,shDerefSimple syn cluster shExprList2 contains=@shExprList1,@shCaseList,shTest syn cluster shFunctionList contains=@shCaseList,shOperator syn cluster shHereBeginList contains=@shCommandSubList syn cluster shHereList contains=shBeginHere,shHerePayload syn cluster shHereListDQ contains=shBeginHere,@shDblQuoteList,shHerePayload -syn cluster shIdList contains=shCommandSub,shWrapLineOperator,shIdWhiteSpace,shDeref,shDerefSimple,shSpecial,shRedir,shSingleQuote,shDoubleQuote,shExpr +syn cluster shIdList contains=shCommandSub,shWrapLineOperator,shIdWhiteSpace,shDeref,shDerefSimple,shSpecial,shRedir,shExSingleQuote,shSingleQuote,shDoubleQuote,shExpr syn cluster shLoopList contains=@shCaseList,shTestOpr,shExpr,shDblBrace,shConditional,shCaseEsac,shTest syn cluster shSubShList contains=@shCaseList -syn cluster shTestList contains=shCharClass,shComment,shCommandSub,shDeref,shDerefSimple,shDoubleQuote,shExpr,shExpr,shNumber,shOperator,shSingleQuote,shSpecial,shTestOpr,shTest +syn cluster shTestList contains=shCharClass,shComment,shCommandSub,shDeref,shDerefSimple,shDoubleQuote,shExpr,shExpr,shNumber,shOperator,shExSingleQuote,shSingleQuote,shSpecial,shTestOpr,shTest " Echo: {{{1 @@ -90,7 +90,7 @@ syn region shEcho matchgroup=shStatement start="\<echo\>" skip="\\$" matchgroup syn region shEcho matchgroup=shStatement start="\<print\>" skip="\\$" matchgroup=shOperator end="$" matchgroup=NONE end="[<>;&|()]"me=e-1 end="\d[<>]"me=e-2 end="#"me=e-1 contains=@shEchoList " This must be after the strings, so that bla \" be correct -syn region shEmbeddedEcho contained matchgroup=shStatement start="\<print\>" skip="\\$" matchgroup=shOperator end="$" matchgroup=NONE end="[<>;&|`)]"me=e-1 end="\d[<>]"me=e-2 end="#"me=e-1 contains=shNumber,shSingleQuote,shDeref,shDerefSimple,shSpecialVar,shSpecial,shOperator,shDoubleQuote,shCharClass +syn region shEmbeddedEcho contained matchgroup=shStatement start="\<print\>" skip="\\$" matchgroup=shOperator end="$" matchgroup=NONE end="[<>;&|`)]"me=e-1 end="\d[<>]"me=e-2 end="#"me=e-1 contains=shNumber,shExSingleQuote,shSingleQuote,shDeref,shDerefSimple,shSpecialVar,shSpecial,shOperator,shDoubleQuote,shCharClass " Alias: {{{1 " ===== @@ -124,7 +124,7 @@ syn match shOption "\s--\S\+"ms=s+1 syn match shOperator "[!&;|]" syn match shOperator "\[[[^:]\|\]]" syn match shOperator "!\==" skipwhite nextgroup=shPattern -syn match shPattern "\<\S\+\())\)\@=" contained contains=shSingleQuote,shDoubleQuote,shDeref +syn match shPattern "\<\S\+\())\)\@=" contained contains=shExSingleQuote,shSingleQuote,shDoubleQuote,shDeref " Subshells: {{{1 " ========== @@ -163,12 +163,17 @@ endif " Case: case...esac {{{1 " ==== -syn match shCaseBar contained skipwhite "[^|"`'()]\{-}|"hs=e nextgroup=shCase,shCaseStart,shCaseBar,shComment,shCaseSingleQuote,shCaseDoubleQuote +syn match shCaseBar contained skipwhite "[^|"`'()]\{-}|"hs=e nextgroup=shCase,shCaseStart,shCaseBar,shComment,shCaseExSingleQuote,shCaseSingleQuote,shCaseDoubleQuote syn match shCaseStart contained skipwhite skipnl "(" nextgroup=shCase,shCaseBar syn region shCase contained skipwhite skipnl matchgroup=shSnglCase start="[^$()]\{-})"ms=s,hs=e end=";;" end="esac"me=s-1 contains=@shCaseList nextgroup=shCaseStart,shCase,,shComment syn region shCaseEsac matchgroup=shConditional start="\<case\>" end="\<esac\>" contains=@shCaseEsacList -syn keyword shCaseIn contained skipwhite skipnl in nextgroup=shCase,shCaseStart,shCaseBar,shComment,shCaseSingleQuote,shCaseDoubleQuote -syn region shCaseSingleQuote matchgroup=shOperator start=+'+ skip=+\\\\\|\\.+ end=+'+ contains=shStringSpecial skipwhite skipnl nextgroup=shCaseBar contained +syn keyword shCaseIn contained skipwhite skipnl in nextgroup=shCase,shCaseStart,shCaseBar,shComment,shCaseExSingleQuote,shCaseSingleQuote,shCaseDoubleQuote +if exists("b:is_bash") + syn region shCaseExSingleQuote matchgroup=shOperator start=+\$'+ skip=+\\\\\|\\.+ end=+'+ contains=shStringSpecial,shSpecial skipwhite skipnl nextgroup=shCaseBar contained +else + syn region shCaseExSingleQuote matchgroup=Error start=+\$'+ skip=+\\\\\|\\.+ end=+'+ contains=shStringSpecial skipwhite skipnl nextgroup=shCaseBar contained +endif +syn region shCaseSingleQuote matchgroup=shOperator start=+'+ end=+'+ contains=shStringSpecial skipwhite skipnl nextgroup=shCaseBar contained syn region shCaseDoubleQuote matchgroup=shOperator start=+"+ skip=+\\\\\|\\.+ end=+"+ contains=@shDblQuoteList,shStringSpecial skipwhite skipnl nextgroup=shCaseBar contained syn region shCaseCommandSub start=+`+ skip=+\\\\\|\\.+ end=+`+ contains=@shCommandSubList skipwhite skipnl nextgroup=shCaseBar contained @@ -188,7 +193,7 @@ if exists("b:is_kornshell") || exists("b:is_bash") syn region shArithmetic matchgroup=shArithRegion start="\$((" skip='\\\\\|\\.' end="))" contains=@shCommandSubList syn match shSkipInitWS contained "^\s\+" else - syn region shCommandSub matchgroup=Error start="$(" end=")" contains=@shCommandSubList + syn region shCommandSub matchgroup=Error start="\$(" end=")" contains=@shCommandSubList endif if exists("b:is_bash") @@ -213,7 +218,16 @@ syn region shColon start="^\s*:" end="$\|" end="#"me=e-1 contains=@shColonList " String And Character Constants: {{{1 "================================ syn match shNumber "-\=\<\d\+\>" -syn match shSpecial "\\\d\d\d\|\\[abcfnrtv0]" contained +if exists("b:is_bash") + syn match shSpecial "\\\o\o\o\|\\x\x\x\|\\c.\|\\[abefnrtv]" contained +else + syn match shSpecial "\\\d\d\d\|\\[abcfnrtv0]" contained +endif +if exists("b:is_bash") + syn region shExSingleQuote matchgroup=shOperator start=+\$'+ skip=+\\\\\|\\.+ end=+'+ contains=shStringSpecial,shSpecial +else + syn region shExSingleQuote matchGroup=Error start=+\$'+ skip=+\\\\\|\\.+ end=+'+ contains=shStringSpecial,shSpecial +endif syn region shSingleQuote matchgroup=shOperator start=+'+ end=+'+ contains=shStringSpecial syn region shDoubleQuote matchgroup=shOperator start=+"+ skip=+\\"+ end=+"+ contains=@shDblQuoteList,shStringSpecial syn match shStringSpecial "[^[:print:]]" contained @@ -314,7 +328,7 @@ endif "============= syn match shVariable "\<\([bwglsav]:\)\=[a-zA-Z0-9.!@_%+,]*\ze=" nextgroup=shSetIdentifier syn match shIdWhiteSpace contained "\s" -syn match shSetIdentifier contained "=" nextgroup=shPattern,shDeref,shDerefSimple,shDoubleQuote,shSingleQuote +syn match shSetIdentifier contained "=" nextgroup=shPattern,shDeref,shDerefSimple,shDoubleQuote,shSingleQuote,shExSingleQuote if exists("b:is_bash") syn region shSetList matchgroup=shSet start="\<\(declare\|typeset\|local\|export\|unset\)\>\ze[^/]" end="$" matchgroup=shOperator end="[;&]"me=e-1 matchgroup=NONE end="#\|="me=e-1 contains=@shIdList syn region shSetList matchgroup=shSet start="\<set\>[^/]"me=e-1 end="$" end="\\ze[|)]" matchgroup=shOperator end="[;&]"me=e-1 matchgroup=NONE end="[#=]"me=e-1 contains=@shIdList @@ -448,32 +462,30 @@ syn sync match shWhileSync grouphere shRepeat "\<while\>" " Default Highlighting: {{{1 " ===================== hi def link shArithRegion shShellVariables +hi def link shBeginHere shRedir hi def link shCaseBar shConditional -hi def link shCaseIn shConditional hi def link shCaseCommandSub shCommandSub hi def link shCaseDoubleQuote shDoubleQuote +hi def link shCaseIn shConditional hi def link shCaseSingleQuote shSingleQuote hi def link shCaseStart shConditional hi def link shCmdSubRegion shShellVariables hi def link shColon shStatement - -hi def link shDeref shShellVariables hi def link shDerefOp shOperator - -hi def link shDerefVar shDeref -hi def link shDerefPOL shDerefOp -hi def link shDerefPatString shDerefPattern hi def link shDerefPatStringOp shDerefOp +hi def link shDerefPatString shDerefPattern +hi def link shDerefPOL shDerefOp +hi def link shDeref shShellVariables hi def link shDerefSimple shDeref hi def link shDerefSpecial shDeref hi def link shDerefString shDoubleQuote -hi def link shHerePayload shHereDoc -hi def link shBeginHere shRedir - +hi def link shDerefVar shDeref hi def link shDoubleQuote shString hi def link shEcho shString hi def link shEmbeddedEcho shString +hi def link shExSingleQuote shSingleQuote hi def link shHereDoc shString +hi def link shHerePayload shHereDoc hi def link shLoop shStatement hi def link shOption shCommandSub hi def link shPattern shString diff --git a/runtime/syntax/vim.vim b/runtime/syntax/vim.vim index e09b21b8a9..8e6f8d3851 100644 --- a/runtime/syntax/vim.vim +++ b/runtime/syntax/vim.vim @@ -1,8 +1,8 @@ " Vim syntax file " Language: Vim 7.0 script " Maintainer: Dr. Charles E. Campbell, Jr. <NdrOchipS@PcampbellAfamily.Mbiz> -" Last Change: February 09, 2005 -" Version: 7.0-04 +" Last Change: Feb 14, 2005 +" Version: 7.0-05 " Automatically generated keyword lists: {{{1 " Quit when a syntax file was already loaded {{{2 @@ -16,7 +16,7 @@ syn keyword vimTodo contained COMBAK NOT RELEASED TODO WIP syn cluster vimCommentGroup contains=vimTodo " regular vim commands {{{2 -syn keyword vimCommand contained ab[breviate] abc[lear] abo[veleft] al[l] arga[dd] argd[elete] argdo arge[dit] argg[lobal] argl[ocal] ar[gs] argu[ment] as[cii] bad[d] ba[ll] bd[elete] be bel[owright] bf[irst] bl[ast] bm[odified] bn[ext] bN[ext] bo[tright] bp[revious] brea[k] breaka[dd] breakd[el] breakl[ist] br[ewind] bro[wse] bufdo b[uffer] buffers bun[load] bw[ipeout] ca[bbrev] cabc[lear] cal[l] cat[ch] cb[uffer] cc ccl[ose] cd ce[nter] cf[ile] cfir[st] cg[etfile] c[hange] changes chd[ir] che[ckpath] checkt[ime] cla[st] cl[ist] clo[se] cmapc[lear] cnew[er] cn[ext] cN[ext] cnf[ile] cNf[ile] cnorea[bbrev] col[der] colo[rscheme] comc[lear] comp[iler] conf[irm] con[tinue] cope[n] co[py] cpf[ile] cp[revious] cq[uit] cr[ewind] cuna[bbrev] cu[nmap] cw[indow] debugg[reedy] delc[ommand] d[elete] DeleteFirst delf[unction] delm[arks] diffg[et] diffoff diffpatch diffpu[t] diffsplit diffthis dig[raphs] di[splay] dj[ump] dl[ist] dr[op] ds[earch] dsp[lit] echoe[rr] echom[sg] echon e[dit] el[se] elsei[f] em[enu] emenu* endfo[r] endf[unction] en[dif] endt[ry] endw[hile] ene[w] ex exi[t] exu[sage] f[ile] files filetype fina[lly] fin[d] fini[sh] fir[st] fix[del] fo[ld] foldc[lose] folddoc[losed] foldd[oopen] foldo[pen] for fu[nction] g[lobal] go[to] gr[ep] grepa[dd] ha[rdcopy] h[elp] helpf[ind] helpg[rep] helpt[ags] hid[e] his[tory] I ia[bbrev] iabc[lear] if ij[ump] il[ist] imapc[lear] inorea[bbrev] is[earch] isp[lit] iuna[bbrev] iu[nmap] j[oin] ju[mps] k keepalt keepj[umps] kee[pmarks] lan[guage] la[st] lc[d] lch[dir] le[ft] lefta[bove] l[ist] lm[ap] lmapc[lear] ln[oremap] lo[adview] loc[kmarks] lockv[ar] ls lu[nmap] mak[e] ma[rk] marks mat[ch] menut[ranslate] mk[exrc] mks[ession] mkvie[w] mkv[imrc] mod[e] m[ove] mzf[ile] mz[scheme] nbkey new n[ext] N[ext] nmapc[lear] noh[lsearch] norea[bbrev] Nread nu[mber] nun[map] Nw omapc[lear] on[ly] o[pen] opt[ions] ou[nmap] pc[lose] ped[it] pe[rl] perld[o] po[p] popu popu[p] pp[op] pre[serve] prev[ious] p[rint] P[rint] prompt promptf[ind] promptr[epl] ps[earch] pta[g] ptf[irst] ptj[ump] ptl[ast] ptn[ext] ptN[ext] ptp[revious] ptr[ewind] pts[elect] pu[t] pw[d] pyf[ile] py[thon] qa[ll] q[uit] quita[ll] r[ead] rec[over] redi[r] red[o] redr[aw] redraws[tatus] reg[isters] res[ize] ret[ab] retu[rn] rew[ind] ri[ght] rightb[elow] rub[y] rubyd[o] rubyf[ile] ru[ntime] rv[iminfo] sal[l] sandbox sa[rgument] sav[eas] sba[ll] sbf[irst] sbl[ast] sbm[odified] sbn[ext] sbN[ext] sbp[revious] sbr[ewind] sb[uffer] scripte[ncoding] scrip[tnames] se[t] setf[iletype] setg[lobal] setl[ocal] sf[ind] sfir[st sh[ell] sign sil[ent] sim[alt] sla[st] sl[eep] sm[agic] sn[ext] sN[ext] sni[ff] sno[magic] so[urce] sp[lit] spr[evious] sre[wind] sta[g] star[tinsert] startr[eplace] stj[ump] st[op] stopi[nsert] sts[elect] sun[hide] sus[pend] sv[iew] syncbind t ta[g] tags tc[l] tcld[o] tclf[ile] te[aroff] tf[irst] the th[row] tj[ump] tl[ast] tm tm[enu] tn[ext] tN[ext] to[pleft] tp[revious] tr[ewind] try ts[elect] tu tu[nmenu] una[bbreviate] u[ndo] unh[ide] unlo[ckvar] unm[ap] up[date] verb[ose] ve[rsion] vert[ical] v[global] vie[w] vim[grep] vimgrepa[dd] vi[sual] viu[sage] vmapc[lear] vne[w] vs[plit] vu[nmap] wa[ll] wh[ile] winc[md] windo winp[os] winpos* win[size] wn[ext] wN[ext] wp[revious] wq wqa[ll] w[rite] ws[verb] wv[iminfo] X xa[ll] x[it] y[ank] +syn keyword vimCommand contained ab[breviate] abc[lear] abo[veleft] al[l] arga[dd] argd[elete] argdo arge[dit] argg[lobal] argl[ocal] ar[gs] argu[ment] as[cii] bad[d] ba[ll] bd[elete] be bel[owright] bf[irst] bl[ast] bm[odified] bn[ext] bN[ext] bo[tright] bp[revious] brea[k] breaka[dd] breakd[el] breakl[ist] br[ewind] bro[wse] bufdo b[uffer] buffers bun[load] bw[ipeout] ca[bbrev] cabc[lear] cal[l] cat[ch] cb[uffer] cc ccl[ose] cd ce[nter] cf[ile] cfir[st] cg[etfile] c[hange] changes chd[ir] che[ckpath] checkt[ime] cla[st] cl[ist] clo[se] cmapc[lear] cnew[er] cn[ext] cN[ext] cnf[ile] cNf[ile] cnorea[bbrev] col[der] colo[rscheme] comc[lear] comp[iler] conf[irm] con[tinue] cope[n] co[py] cpf[ile] cp[revious] cq[uit] cr[ewind] cuna[bbrev] cu[nmap] cw[indow] debugg[reedy] delc[ommand] d[elete] DeleteFirst delf[unction] delm[arks] diffg[et] diffoff diffpatch diffpu[t] diffsplit diffthis dig[raphs] di[splay] dj[ump] dl[ist] dr[op] ds[earch] dsp[lit] echoe[rr] echom[sg] echon e[dit] el[se] elsei[f] em[enu] emenu* endfo[r] endf[unction] en[dif] endt[ry] endw[hile] ene[w] ex exi[t] exu[sage] f[ile] files filetype fina[lly] fin[d] fini[sh] fir[st] fix[del] fo[ld] foldc[lose] folddoc[losed] foldd[oopen] foldo[pen] for fu[nction] g[lobal] go[to] gr[ep] grepa[dd] ha[rdcopy] h[elp] helpf[ind] helpg[rep] helpt[ags] hid[e] his[tory] I ia[bbrev] iabc[lear] if ij[ump] il[ist] imapc[lear] inorea[bbrev] is[earch] isp[lit] iuna[bbrev] iu[nmap] j[oin] ju[mps] k keepalt keepj[umps] kee[pmarks] lan[guage] la[st] lc[d] lch[dir] le[ft] lefta[bove] l[ist] lm[ap] lmapc[lear] ln[oremap] lo[adview] loc[kmarks] lockv[ar] ls lu[nmap] mak[e] ma[rk] marks mat[ch] menut[ranslate] mk[exrc] mks[ession] mkvie[w] mkv[imrc] mod[e] m[ove] mzf[ile] mz[scheme] nbkey new n[ext] N[ext] nmapc[lear] noh[lsearch] norea[bbrev] Nread nu[mber] nun[map] Nw omapc[lear] on[ly] o[pen] opt[ions] ou[nmap] pc[lose] ped[it] pe[rl] perld[o] po[p] popu popu[p] pp[op] pre[serve] prev[ious] p[rint] P[rint] prompt promptf[ind] promptr[epl] ps[earch] pta[g] ptf[irst] ptj[ump] ptl[ast] ptn[ext] ptN[ext] ptp[revious] ptr[ewind] pts[elect] pu[t] pw[d] pyf[ile] py[thon] qa[ll] q[uit] quita[ll] r[ead] rec[over] redi[r] red[o] redr[aw] redraws[tatus] reg[isters] res[ize] ret[ab] retu[rn] rew[ind] ri[ght] rightb[elow] rub[y] rubyd[o] rubyf[ile] ru[ntime] rv[iminfo] sal[l] sandbox sa[rgument] sav[eas] sba[ll] sbf[irst] sbl[ast] sbm[odified] sbn[ext] sbN[ext] sbp[revious] sbr[ewind] sb[uffer] scripte[ncoding] scrip[tnames] se[t] setf[iletype] setg[lobal] setl[ocal] sf[ind] sfir[st] sh[ell] sign sil[ent] sim[alt] sla[st] sl[eep] sm[agic] sn[ext] sN[ext] sni[ff] sno[magic] so[urce] sp[lit] spr[evious] sre[wind] sta[g] star[tinsert] startr[eplace] stj[ump] st[op] stopi[nsert] sts[elect] sun[hide] sus[pend] sv[iew] syncbind t ta[g] tags tc[l] tcld[o] tclf[ile] te[aroff] tf[irst] the th[row] tj[ump] tl[ast] tm tm[enu] tn[ext] tN[ext] to[pleft] tp[revious] tr[ewind] try ts[elect] tu tu[nmenu] una[bbreviate] u[ndo] unh[ide] unlo[ckvar] unm[ap] up[date] verb[ose] ve[rsion] vert[ical] v[global] vie[w] vim[grep] vimgrepa[dd] vi[sual] viu[sage] vmapc[lear] vne[w] vs[plit] vu[nmap] wa[ll] wh[ile] winc[md] windo winp[os] winpos* win[size] wn[ext] wN[ext] wp[revious] wq wqa[ll] w[rite] ws[verb] wv[iminfo] X xa[ll] x[it] y[ank] syn match vimCommand contained "\<z[-+^.=]" " vimOptions are caught only when contained in a vimSet {{{2 @@ -389,13 +389,14 @@ syn match vimMtchComment contained '"[^"]\+$' " Syntax: sync {{{2 " ============ -syn keyword vimSynType contained sync skipwhite nextgroup=vimSyncC,vimSyncLines,vimSyncMatch,vimSyncError,vimSyncLinecont,vimSyncRegion +syn keyword vimSynType contained sync skipwhite nextgroup=vimSyncC,vimSyncLines,vimSyncMatch,vimSyncError,vimSyncLinebreak,vimSyncLinecont,vimSyncRegion if !exists("g:vimsyntax_noerror") syn match vimSyncError contained "\i\+" endif syn keyword vimSyncC contained ccomment clear fromstart syn keyword vimSyncMatch contained match skipwhite nextgroup=vimSyncGroupName syn keyword vimSyncRegion contained region skipwhite nextgroup=vimSynReg +syn match vimSyncLinebreak contained "\<linebreaks=" skipwhite nextgroup=vimNumber syn keyword vimSyncLinecont contained linecont skipwhite nextgroup=vimSynRegPat syn match vimSyncLines contained "\(min\|max\)\=lines=" nextgroup=vimNumber syn match vimSyncGroupName contained "\k\+" skipwhite nextgroup=vimSyncKey |