summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--runtime/doc/cmdline.txt22
-rw-r--r--runtime/doc/editing.txt17
-rw-r--r--runtime/doc/gui_w32.txt4
-rw-r--r--runtime/doc/insert.txt17
-rw-r--r--runtime/doc/mbyte.txt4
-rw-r--r--runtime/doc/message.txt5
-rw-r--r--runtime/ftplugin/sql.vim195
-rw-r--r--runtime/syntax/esmtprc.vim34
-rw-r--r--runtime/syntax/sh.vim64
-rw-r--r--runtime/syntax/vim.vim9
-rw-r--r--src/Makefile6
-rw-r--r--src/ex_docmd.c362
-rw-r--r--src/fileio.c18
-rw-r--r--src/globals.h11
-rw-r--r--src/mbyte.c9
-rw-r--r--src/message.c38
-rw-r--r--src/netbeans.c14
-rw-r--r--src/normal.c8
-rw-r--r--src/os_unix.c335
-rw-r--r--src/po/Make_ming.mak4
-rw-r--r--src/po/Makefile4
-rw-r--r--src/proto/ex_docmd.pro1
-rw-r--r--src/proto/gui_mac.pro1
-rw-r--r--src/proto/main.pro2
-rw-r--r--src/proto/message.pro3
-rw-r--r--src/quickfix.c13
-rw-r--r--src/regexp.c407
-rw-r--r--src/testdir/test11.in1
-rw-r--r--src/vim.h9
29 files changed, 1270 insertions, 347 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