summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2006-04-11 21:38:50 +0000
committerBram Moolenaar <Bram@vim.org>2006-04-11 21:38:50 +0000
commit4c3f536f472c7443ed4f672ae6d35a28805d7641 (patch)
tree18d0d8df6d45ff21449a017068aea2ba0931bd57
parent779b74b2a23643aaac026341a4ed8bd6e04371e6 (diff)
downloadvim-git-4c3f536f472c7443ed4f672ae6d35a28805d7641.tar.gz
updated for version 7.0d01v7.0d01
-rw-r--r--README.txt28
-rw-r--r--runtime/autoload/zip.vim10
-rw-r--r--runtime/doc/change.txt43
-rw-r--r--runtime/doc/index.txt3
-rw-r--r--runtime/doc/insert.txt6
-rw-r--r--runtime/doc/map.txt3
-rw-r--r--runtime/doc/message.txt7
-rw-r--r--runtime/doc/options.txt7
-rw-r--r--runtime/doc/pi_zip.txt7
-rw-r--r--runtime/doc/tags1
-rw-r--r--runtime/doc/todo.txt13
-rw-r--r--runtime/doc/version7.txt27
-rw-r--r--runtime/doc/vim-fr.18
-rw-r--r--runtime/doc/vim-fr.UTF-8.18
-rw-r--r--runtime/doc/vim.12
-rw-r--r--runtime/doc/vim.man2
-rw-r--r--runtime/doc/windows.txt9
-rw-r--r--runtime/filetype.vim19
-rw-r--r--runtime/ftplugin/kconfig.vim14
-rw-r--r--runtime/ftplugin/ocaml.vim11
-rw-r--r--runtime/indent/html.vim6
-rw-r--r--runtime/makemenu.vim3
-rw-r--r--runtime/synmenu.vim7
-rw-r--r--runtime/syntax/cl.vim9
-rw-r--r--runtime/syntax/dtd.vim4
-rw-r--r--runtime/syntax/kconfig.vim728
-rw-r--r--runtime/syntax/ocaml.vim6
-rw-r--r--runtime/syntax/progress.vim102
-rw-r--r--runtime/syntax/rexx.vim153
-rw-r--r--runtime/syntax/xml.vim10
-rw-r--r--src/Make_vms.mms15
-rw-r--r--src/dosinst.h16
-rw-r--r--src/edit.c3
-rw-r--r--src/eval.c2
-rw-r--r--src/ex_cmds.c133
-rw-r--r--src/option.c2
-rw-r--r--src/os_mac_rsrc/doc-txt.icnsbin40095 -> 40106 bytes
-rw-r--r--src/screen.c10
-rw-r--r--src/testdir/test57.in534
-rw-r--r--src/testdir/test57.ok490
-rw-r--r--src/version.h6
-rw-r--r--src/window.c33
42 files changed, 2216 insertions, 284 deletions
diff --git a/README.txt b/README.txt
index 7674299d0..fda27ec63 100644
--- a/README.txt
+++ b/README.txt
@@ -5,9 +5,9 @@ WHAT IS VIM
Vim is an almost compatible version of the UNIX editor Vi. Many new features
have been added: multi-level undo, syntax highlighting, command line history,
-on-line help, filename completion, block operations, etc. There is also a
-Graphical User Interface (GUI) available. See "runtime/doc/vi_diff.txt" for
-differences with Vi.
+on-line help, spell checking, filename completion, block operations, etc.
+There is also a Graphical User Interface (GUI) available. See
+"runtime/doc/vi_diff.txt" for differences with Vi.
This editor is very useful for editing programs and other plain ASCII files.
All commands are given with normal keyboard characters, so those who can type
@@ -56,15 +56,16 @@ distribute it.
SPONSORING
-Fixing bugs and adding new features takes a lot of effort. For a few years
-Bram has attempted to do this next to a full-time job. During that time the
-todo list kept getting longer and longer.
+Fixing bugs and adding new features takes a lot of time and effort. To show
+your appreciation for the work and motivate Bram and others to continue
+working on Vim please send a donation.
-In order for Bram to support Vim properly he needs your help. Through your
-donations Bram will be able to have a part-time job and spend more time on
-fixing bugs and adding new features.
+Since Bram is back to a paid job the money will now be used to help children
+in Uganda. See runtime/doc/uganda.txt. But at the same time donations
+increase Bram's motivation to keep working on Vim!
For the most recent information about sponsoring look on the Vim web site:
+
http://www.vim.org/sponsor/
@@ -132,6 +133,9 @@ MAIN AUTHOR
Send any other comments, patches, pizza and suggestions to:
Bram Moolenaar E-mail: Bram@vim.org
- Clematisstraat 30
- 5925 BE Venlo Tel: +31 77 387 2340
- The Netherlands Fax/voice-mail: +31 20 773 8272
+ Molenstraat 2
+ 2161 HP Lisse
+ The Netherlands
+
+This is the address of my parents, they will forward mail and eat the pizza.
+My actual address will change a couple of times in 2006.
diff --git a/runtime/autoload/zip.vim b/runtime/autoload/zip.vim
index 6790f4ff4..c71a4dc3d 100644
--- a/runtime/autoload/zip.vim
+++ b/runtime/autoload/zip.vim
@@ -1,7 +1,7 @@
" zip.vim: Handles browsing zipfiles
" AUTOLOAD PORTION
-" Date: Mar 22, 2006
-" Version: 7
+" Date: Apr 10, 2006
+" Version: 8
" Maintainer: Charles E Campbell, Jr <drchipNOSPAM at campbellfamily dot biz>
" License: Vim License (see vim's :help license)
" Copyright: Copyright (C) 2005 Charles E. Campbell, Jr. {{{1
@@ -22,7 +22,7 @@ if exists("g:loaded_zip")
finish
endif
-let g:loaded_zip = "v7"
+let g:loaded_zip = "v8"
let s:zipfile_escape = ' ?&;\'
" ----------------
@@ -83,7 +83,9 @@ fun! zip#Browse(zipfile)
4,$g/^\s*----/d
4,$g/^\s*\a/d
$d
- exe 'silent 4,$s/^.*\%'.namecol.'c//'
+ if namecol > 0
+ exe 'silent 4,$s/^.*\%'.namecol.'c//'
+ endif
setlocal noma nomod ro
noremap <silent> <buffer> <cr> :call <SID>ZipBrowseSelect()<cr>
diff --git a/runtime/doc/change.txt b/runtime/doc/change.txt
index e8e1caa6a..4aebe30c8 100644
--- a/runtime/doc/change.txt
+++ b/runtime/doc/change.txt
@@ -1,4 +1,4 @@
-*change.txt* For Vim version 7.0d. Last change: 2006 Apr 09
+*change.txt* For Vim version 7.0d. Last change: 2006 Apr 11
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -1508,7 +1508,7 @@ Vim has a sorting function and a sorting command. The sorting function can be
found here: |sort()|.
*:sor* *:sort*
-:[range]sor[t][!] [i][u][n][x][o] [/{pattern}/]
+:[range]sor[t][!] [i][u][r][n][x][o] [/{pattern}/]
Sort lines in [range]. When no range is given all
lines are sorted.
@@ -1517,24 +1517,25 @@ found here: |sort()|.
With [i] case is ignored.
With [n] sorting is done on the first decimal number
- in the line (after a {pattern} match).
+ in the line (after or inside a {pattern} match).
With [x] sorting is done on the first hexadecimal
- number in the line (after a {pattern} match). A
- leading "0x" or "0X" is ignored.
+ number in the line (after or inside a {pattern}
+ match). A leading "0x" or "0X" is ignored.
With [o] sorting is done on the first octal number in
- the line (after a {pattern} match).
+ the line (after or inside a {pattern} match).
With [u] only keep the first of a sequence of
identical lines (ignoring case when [i] is used).
+ Without this flag, a sequence of identical lines
+ will be kept in their original order.
Note that leading and trailing white space may cause
lines to be different.
- When /{pattern}/ is specified the text matched with
- {pattern} is skipped, so that you sort on what comes
- after the match. For lines without a match sorting
- starts in the first column (e.g., for empty lines).
+ When /{pattern}/ is specified and there is no [r] flag
+ the text matched with {pattern} is skipped, so that
+ you sort on what comes after the match.
Instead of the slash any non-letter can be used.
For example, to sort on the second comma-separated
field: >
@@ -1545,7 +1546,21 @@ found here: |sort()|.
< To sort on the first number in the line, no matter
what is in front of it: >
:sort /.*\ze\d/
-<
+
+< With [r] sorting is done on the matching {pattern}
+ instead of skipping past it as described above.
+ For example, to sort on only the first three letters
+ of each line: >
+ :sort /\a\a\a/ r
+
+< If a {pattern} is used, any lines which don't have a
+ match for {pattern} are kept in their current order,
+ but separate from the lines which do match {pattern}.
+ If you sorted in reverse, they will be in reverse
+ order after the sorted lines, otherwise they will be
+ in their original order, right before the sorted
+ lines.
+
Note that using ":sort" with ":global" doesn't sort the matching lines, it's
quite useless.
@@ -1553,8 +1568,8 @@ The details about sorting depend on the library function used. There is no
guarantee that sorting is "stable" or obeys the current locale. You will have
to try it out.
-The sorting itself cannot be interrupted, because of using a system library
-function. You can interrupt the preparation (for undo) and putting the sorted
-lines into the buffer. In the last case you may end up with duplicated lines.
+The sorting can be interrupted, but if you interrupt it too late in the
+process you may end up with duplicated lines. This also depends on the system
+library function used.
vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/index.txt b/runtime/doc/index.txt
index 491f4cab6..848ce0ba7 100644
--- a/runtime/doc/index.txt
+++ b/runtime/doc/index.txt
@@ -1,4 +1,4 @@
-*index.txt* For Vim version 7.0d. Last change: 2006 Apr 06
+*index.txt* For Vim version 7.0d. Last change: 2006 Apr 10
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -529,6 +529,7 @@ tag command action in Normal mode ~
|CTRL-W_P| CTRL-W P go to preview window
|CTRL-W_R| CTRL-W R rotate windows upwards N times
|CTRL-W_S| CTRL-W S same as "CTRL-W s"
+|CTRL-W_T| CTRL-W T move current window to a new tab page
|CTRL-W_W| CTRL-W W go to N previous window (wrap around)
|CTRL-W_]| CTRL-W ] split window and jump to tag under cursor
|CTRL-W_^| CTRL-W ^ split current window and edit alternate
diff --git a/runtime/doc/insert.txt b/runtime/doc/insert.txt
index 412771de5..ae47469f2 100644
--- a/runtime/doc/insert.txt
+++ b/runtime/doc/insert.txt
@@ -1,4 +1,4 @@
-*insert.txt* For Vim version 7.0d. Last change: 2006 Apr 10
+*insert.txt* For Vim version 7.0d. Last change: 2006 Apr 11
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -1419,8 +1419,8 @@ Features are:
a tag)
- when attribute has limited number of possible values help to complete
them
-- complete names of entities (defined in |xml-omni-datafile| and in current file
- with "<!ENTITY" declarations
+- complete names of entities (defined in |xml-omni-datafile| and in current
+ file with "<!ENTITY" declarations
- when used after "</" CTRL-X CTRL-O will close the last opened tag
Format of XML data file *xml-omni-datafile*
diff --git a/runtime/doc/map.txt b/runtime/doc/map.txt
index 1ee0e40d5..49e1faa80 100644
--- a/runtime/doc/map.txt
+++ b/runtime/doc/map.txt
@@ -1,4 +1,4 @@
-*map.txt* For Vim version 7.0d. Last change: 2006 Mar 20
+*map.txt* For Vim version 7.0d. Last change: 2006 Apr 11
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -265,6 +265,7 @@ Overview of which map command works in which mode:
:vmap :vnoremap :vunmap :vmapclear - yes -
:omap :onoremap :ounmap :omapclear - - yes
+:nunmap can also be used outside of a monastery.
*mapmode-x* *mapmode-s*
Some commands work both in Visual and Select mode, some in only one. Note
that quite often "Visual" is mentioned where both Visual and Select mode
diff --git a/runtime/doc/message.txt b/runtime/doc/message.txt
index 129c43ead..790cccf8f 100644
--- a/runtime/doc/message.txt
+++ b/runtime/doc/message.txt
@@ -1,4 +1,4 @@
-*message.txt* For Vim version 7.0d. Last change: 2006 Mar 01
+*message.txt* For Vim version 7.0d. Last change: 2006 Apr 11
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -413,7 +413,10 @@ device and it isn't present. You can ignore this error.
You have used an ":unmap" command with an argument which is not an existing
mapping. All variations of this command give the same message: ":cunmap",
-":unmap!", etc. Check for trailing white space.
+":unmap!", etc. A few hints:
+- Check for trailing white space.
+- If the mapping is buffer-local you need to use ":unmap <buffer>".
+ |:map-<buffer>|
*E37* *E89* >
No write since last change (use ! to override)
diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt
index 7718a584e..deaf590ae 100644
--- a/runtime/doc/options.txt
+++ b/runtime/doc/options.txt
@@ -1,4 +1,4 @@
-*options.txt* For Vim version 7.0d. Last change: 2006 Apr 10
+*options.txt* For Vim version 7.0d. Last change: 2006 Apr 11
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -2068,6 +2068,11 @@ A jump table for the options with a short description can be found at |Q_op|.
Highlight the screen column of the cursor with CursorColumn
|hl-CursorColumn|. Useful to align text. Will make screen redrawing
slower.
+ If you only want the highlighting in the current window you can use
+ these autocommands: >
+ au WinLeave * set nocursorline nocursorcolumn
+ au WinEnter * set cursorline cursorcolumn
+<
*'cursorline'* *'cul'* *'nocursorline'* *'nocul'*
'cursorline' 'cul' boolean (default off)
diff --git a/runtime/doc/pi_zip.txt b/runtime/doc/pi_zip.txt
index eca77df2b..fa4f3b071 100644
--- a/runtime/doc/pi_zip.txt
+++ b/runtime/doc/pi_zip.txt
@@ -1,4 +1,4 @@
-*zip.txt* For Vim version 7.0d. Last change: 2006 Apr 03
+*zip.txt* For Vim version 7.0d. Last change: 2006 Apr 10
+====================+
| Zip File Interface |
@@ -33,6 +33,11 @@ Copyright: Copyright (C) 2005,2006 Charles E Campbell, Jr {{{1 *zip-copyright*
==============================================================================
3. History *zip-history*
+ v8 Apr 10, 2006 * Bram Moolenaar reported that he received an error message
+ due to "Pattern not found: ^.*\%0c"; this was caused by
+ stridx finding a Name... at the beginning of the line;
+ zip.vim tried 4,$s/^.*\%0c//, but that doesn't work.
+ Fixed.
v7 Mar 22, 2006 * escaped some characters that can cause filename handling
problems.
v6 Dec 21, 2005 * writing to files not in directories caused problems -
diff --git a/runtime/doc/tags b/runtime/doc/tags
index 4134a1da1..7fa442d5a 100644
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -3188,6 +3188,7 @@ CTRL-W_L windows.txt /*CTRL-W_L*
CTRL-W_P windows.txt /*CTRL-W_P*
CTRL-W_R windows.txt /*CTRL-W_R*
CTRL-W_S windows.txt /*CTRL-W_S*
+CTRL-W_T windows.txt /*CTRL-W_T*
CTRL-W_W windows.txt /*CTRL-W_W*
CTRL-W_] windows.txt /*CTRL-W_]*
CTRL-W_^ windows.txt /*CTRL-W_^*
diff --git a/runtime/doc/todo.txt b/runtime/doc/todo.txt
index 979988fec..6ca47b61f 100644
--- a/runtime/doc/todo.txt
+++ b/runtime/doc/todo.txt
@@ -1,4 +1,4 @@
-*todo.txt* For Vim version 7.0d. Last change: 2006 Apr 10
+*todo.txt* For Vim version 7.0d. Last change: 2006 Apr 11
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -30,7 +30,11 @@ be worked on, but only if you sponsor Vim development. See |sponsor|.
*known-bugs*
-------------------- Known bugs and current work -----------------------
+Include autoload/xml/*.vim files? Need to adjust install scripts then.
+
":mkspell" still takes much too long in Hungarian dictionary.
+- Are all prefixes really postponed now?
+- postpone secondary suffixes?
Handle postponed prefix with COMPOUNDPERMITFLAG or COMPOUNDFORBIDFLAG.
WFP_COMPPERMIT and WFP_COMPFORBID
@@ -47,8 +51,14 @@ New Hungarian dictionary. (Laci Nemeth)
How is it supposed to work?
- implement using CHECKCOMPOUNDPATTERN: match words with sl_comppat[].
+Update vi_diff.txt for Vim 7 features.
+
+8 tab pages in the session file, if "tabpages" in 'sessionoptions'
+
Add more tests for all new functionality in Vim 7. Especially new functions.
+Do some of the 'cindent' bugs below.
+
Win32: Describe how to do debugging. (George Reilly)
Mac unicode patch (Da Woon Jung, Eckehard Berns):
@@ -1092,7 +1102,6 @@ User Friendlier:
Tab pages:
9 GUI implementation for the tab pages line for other systems.
8 Make GUI menu in tab pages line configurable. Like the popup menu.
-8 tab pages in the session file, if "tabpages" in 'sessionoptions'
8 :tabmove +N move tab page N pages forward
8 :tabmove -N move tab page N pages backward
7 :tabdup duplicate the tab with all its windows.
diff --git a/runtime/doc/version7.txt b/runtime/doc/version7.txt
index a0758a69e..4afaaeb49 100644
--- a/runtime/doc/version7.txt
+++ b/runtime/doc/version7.txt
@@ -1,4 +1,4 @@
-*version7.txt* For Vim version 7.0d. Last change: 2006 Apr 10
+*version7.txt* For Vim version 7.0d. Last change: 2006 Apr 11
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -628,7 +628,7 @@ Win32: The ":winpos" command now also works in the console. (Vipin Aravind)
|:viusage| Help for Vi commands (Nvi command).
|:sort| Sort lines in the buffer without depending on an
- external command.
+ external command. (partly by Bryce Wagner)
|:caddfile| Add error messages to an existing quickfix list
(Yegappan Lakshmanan).
@@ -913,6 +913,7 @@ Haskell ftplugin file. (Nikolai Weibull)
help ftplugin file. (Nikolai Weibull)
indent ftplugin file. (Nikolai Weibull)
Javascript ftplugin file. (Bram Moolenaar)
+Kconfig ftplugin and syntax file. (Nikolai Weibull)
ld syntax, indent and ftplugin file. (Nikolai Weibull)
lftp ftplugin file. (Nikolai Weibull)
libao config ftplugin file. (Nikolai Weibull)
@@ -2420,4 +2421,26 @@ Now use Enter to select the match after using a cursor key.
Added "usetab" to 'switchbuf'.
+
+--- fixes and changes since Vim 7.0d ---
+
+Added CTRL-W T: move a window to a new tab page.
+
+Using CTRL-X s in Insert mode to complete spelling suggestions and using BS
+deleted characters before the bad word.
+
+A few small fixes for the VMS makefile. (Zoltan Arpadffy)
+
+With a window of 91 lines 45 cols, ":vsp" scrolled the window. Copy w_wrow
+when splitting a window and skip setting the height when it's already at the
+right value.
+
+Using <silent> in a mapping with a shell command and the GUI caused redraw
+to use wrong attributes.
+
+Win32: Using MSVC 4.1 for install.exe resulted in the start menu items to be
+created in the administrator directory instead of "All Users". Define the
+CSIDL_ items if they are missing.
+
+
vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/vim-fr.1 b/runtime/doc/vim-fr.1
index 956c1208f..820985715 100644
--- a/runtime/doc/vim-fr.1
+++ b/runtime/doc/vim-fr.1
@@ -1,7 +1,7 @@
.\" Traduction Lundi 7 août 2000 par Richard Hitier
.\" (richard.hitier@dial.oleane.com)
.\" Mise à jour de la traduction par David Blanchet
-.\" (david.blanchet@free.fr) 2005-01-17
+.\" (david.blanchet@free.fr) 2006-06-10
.\"
.TH VIM 1 "22 Février 2002"
.SH NOM
@@ -325,6 +325,10 @@ Quand N est omis, ouvre une fenêtre pour chaque fichier.
Ouvre N fenêtres côte à côte.
Quand N est omis, ouvre une fenêtre pour chaque fichier fichier.
.TP
+\-p[N]
+Ouvre N onglets.
+Quand N est omis, ouvre un onglet pour chaque fichier fichier.
+.TP
\-R
Mode Lecture-Seule.
Active l'option 'readonly'.
@@ -579,4 +583,4 @@ Cette page de manuel a été traduite par Richard Hitier.
<richard.hitier@dial.oleane.com> 2000-08-07.
.br
Cette page de manuel a été mise à jour par David Blanchet.
-<david.blanchet@free.fr> 2005-01-17.
+<david.blanchet@free.fr> 2006-04-10.
diff --git a/runtime/doc/vim-fr.UTF-8.1 b/runtime/doc/vim-fr.UTF-8.1
index d9b7cf438..a21ad0665 100644
--- a/runtime/doc/vim-fr.UTF-8.1
+++ b/runtime/doc/vim-fr.UTF-8.1
@@ -1,7 +1,7 @@
.\" Traduction Lundi 7 août 2000 par Richard Hitier
.\" (richard.hitier@dial.oleane.com)
.\" Mise à jour de la traduction par David Blanchet
-.\" (david.blanchet@free.fr) 2005-01-17
+.\" (david.blanchet@free.fr) 2006-06-10
.\"
.TH VIM 1 "22 Février 2002"
.SH NOM
@@ -325,6 +325,10 @@ Quand N est omis, ouvre une fenêtre pour chaque fichier.
Ouvre N fenêtres côte à côte.
Quand N est omis, ouvre une fenêtre pour chaque fichier fichier.
.TP
+\-p[N]
+Ouvre N onglets.
+Quand N est omis, ouvre un onglet pour chaque fichier fichier.
+.TP
\-R
Mode Lecture-Seule.
Active l'option 'readonly'.
@@ -579,4 +583,4 @@ Cette page de manuel a été traduite par Richard Hitier.
<richard.hitier@dial.oleane.com> 2000-08-07.
.br
Cette page de manuel a été mise à jour par David Blanchet.
-<david.blanchet@free.fr> 2005-01-17.
+<david.blanchet@free.fr> 2006-04-10.
diff --git a/runtime/doc/vim.1 b/runtime/doc/vim.1
index cdf71ac3b..4e90da276 100644
--- a/runtime/doc/vim.1
+++ b/runtime/doc/vim.1
@@ -1,4 +1,4 @@
-.TH VIM 1 "2002 Feb 22"
+.TH VIM 1 "2006 Apr 11"
.SH NAME
vim \- Vi IMproved, a programmers text editor
.SH SYNOPSIS
diff --git a/runtime/doc/vim.man b/runtime/doc/vim.man
index 9b70e7f96..fa5c5c855 100644
--- a/runtime/doc/vim.man
+++ b/runtime/doc/vim.man
@@ -425,4 +425,4 @@ BUGS
- 2002 Feb 22 VIM(1)
+ 2006 Apr 11 VIM(1)
diff --git a/runtime/doc/windows.txt b/runtime/doc/windows.txt
index c4aeb87d5..499b6caf4 100644
--- a/runtime/doc/windows.txt
+++ b/runtime/doc/windows.txt
@@ -1,4 +1,4 @@
-*windows.txt* For Vim version 7.0d. Last change: 2006 Apr 06
+*windows.txt* For Vim version 7.0d. Last change: 2006 Apr 10
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -434,6 +434,13 @@ CTRL-W L Move the current window to be at the far right, using the full
contents is used for the new window.
{not available when compiled without the +vertsplit feature}
+ *CTRL-W_T*
+CTRL-W T Move the current window to a new tab page. This fails if
+ there is only one window in the current tab page.
+ When a count is specified the new tab page will be opened
+ before the tab page with this index. Otherwise it comes after
+ the current tab page.
+
==============================================================================
6. Window resizing *window-resize*
diff --git a/runtime/filetype.vim b/runtime/filetype.vim
index 8d1f155eb..3aa1ee79c 100644
--- a/runtime/filetype.vim
+++ b/runtime/filetype.vim
@@ -1,7 +1,7 @@
" Vim support file to detect file types
"
" Maintainer: Bram Moolenaar <Bram@vim.org>
-" Last Change: 2006 Apr 04
+" Last Change: 2006 Apr 11
" Listen very carefully, I will say this only once
if exists("did_load_filetypes")
@@ -784,6 +784,9 @@ au BufNewFile,BufRead *.k setf kwt
" KDE script
au BufNewFile,BufRead *.ks setf kscript
+" Kconfig
+au BufNewFile,BufRead Kconfig,Kconfig.debug setf kconfig
+
" Lace (ISE)
au BufNewFile,BufRead *.ace,*.ACE setf lace
@@ -1662,13 +1665,25 @@ au BufNewFile,BufRead /etc/sysctl.conf setf sysctl
" Sudoers
au BufNewFile,BufRead /etc/sudoers,sudoers.tmp setf sudoers
+" If the file has an extension of 't' and is in a directory 't' then it is
+" almost certainly a Perl test file.
" If the first line starts with '#' and contains 'perl' it's probably a Perl
" file.
+" (Slow test) If a file contains a 'use' statement then it is almost certainly
+" a Perl file.
fun! s:FTperl()
+ if expand("%:e") == 't' && expand("%:p:h:t") == 't'
+ setf perl
+ return 1
+ endif
if getline(1)[0] == '#' && getline(1) =~ 'perl'
setf perl
return 1
endif
+ if search('^use\s\s*\k', 'nc', 30)
+ setf perl
+ return 1
+ endif
return 0
endfun
@@ -1961,7 +1976,7 @@ au BufNewFile,BufRead *.yaml,*.yml setf yaml
" Zope
" dtml (zope dynamic template markup language), pt (zope page template),
" cpt (zope form controller page template)
-au BufNewFile,BufRead *.dtml,*.pt,*.cpt call <SID>FTCheck_html()
+au BufNewFile,BufRead *.dtml,*.pt,*.cpt call s:FThtml()
" zsql (zope sql method)
au BufNewFile,BufRead *.zsql call s:SQL()
diff --git a/runtime/ftplugin/kconfig.vim b/runtime/ftplugin/kconfig.vim
new file mode 100644
index 000000000..ca1a56b8e
--- /dev/null
+++ b/runtime/ftplugin/kconfig.vim
@@ -0,0 +1,14 @@
+" Vim filetype plugin file
+" Maintainer: Nikolai Weibull <now@bitwi.se>
+" Latest Revision: 2006-04-10
+
+if exists("b:did_ftplugin")
+ finish
+endif
+let b:did_ftplugin = 1
+
+let b:undo_ftplugin = "setl com< cms< fo<"
+
+setlocal comments=:# commentstring=#\ %s formatoptions-=t formatoptions+=croql
+
+
diff --git a/runtime/ftplugin/ocaml.vim b/runtime/ftplugin/ocaml.vim
index 6f2b17cb7..0b9819a9b 100644
--- a/runtime/ftplugin/ocaml.vim
+++ b/runtime/ftplugin/ocaml.vim
@@ -4,11 +4,12 @@
" Markus Mottl <markus.mottl@gmail.com>
" Stefano Zacchiroli <zack@bononia.it>
" URL: http://www.ocaml.info/vim/ftplugin/ocaml.vim
-" Last Change: 2006 Feb 05
+" Last Change: 2006 Apr 11 - Fixed an initialization bug; fixed ASS abbrev (MM)
+" 2005 Oct 13 - removed GPL; better matchit support (MM, SZ)
"
-" if exists("b:did_ftplugin")
-" finish
-" endif
+if exists("b:did_ftplugin")
+ finish
+endif
let b:did_ftplugin=1
" Error handling -- helps moving where the compiler wants you to go
@@ -44,7 +45,7 @@ if !exists("no_plugin_maps") && !exists("no_ocaml_maps")
vnoremap <buffer> <Plug>BUncomOff <ESC>:'<,'><CR>`<dd`>dd`<
if !hasmapto('<Plug>Abbrev')
- iabbrev <buffer> ASS (assert false (* XXX *))
+ iabbrev <buffer> ASS (assert (0=1) (* XXX *))
endif
endif
diff --git a/runtime/indent/html.vim b/runtime/indent/html.vim
index d78da193b..6c2d49942 100644
--- a/runtime/indent/html.vim
+++ b/runtime/indent/html.vim
@@ -1,8 +1,8 @@
" Description: html indenter
" Author: Johannes Zellner <johannes@zellner.org>
" Last Change: Tue, 27 Apr 2004 10:28:39 CEST
-" Globals: g:html_indent_tags -- indenting tags
-" g:html_indent_strict -- inhibit 'O O' elements
+" Globals: g:html_indent_tags -- indenting tags
+" g:html_indent_strict -- inhibit 'O O' elements
" g:html_indent_strict_table -- inhibit 'O -' elements
" Only load this indent file when no other was loaded.
@@ -14,7 +14,7 @@ let b:did_indent = 1
" [-- local settings (must come before aborting the script) --]
setlocal indentexpr=HtmlIndentGet(v:lnum)
-setlocal indentkeys=o,O,*<Return>,<>>,<bs>,{,}
+setlocal indentkeys=o,O,*<Return>,<>>,{,}
if exists('g:html_indent_tags')
diff --git a/runtime/makemenu.vim b/runtime/makemenu.vim
index 02905c95e..9194e9f0f 100644
--- a/runtime/makemenu.vim
+++ b/runtime/makemenu.vim
@@ -1,6 +1,6 @@
" Script to define the syntax menu in synmenu.vim
" Maintainer: Bram Moolenaar <Bram@vim.org>
-" Last Change: 2006 Apr 10
+" Last Change: 2006 Apr 11
" This is used by "make menu" in the src directory.
edit <sfile>:p:h/synmenu.vim
@@ -237,6 +237,7 @@ SynMenu HIJK.Java.Java\ Properties:jproperties
SynMenu HIJK.JavaScript:javascript
SynMenu HIJK.Jess:jess
SynMenu HIJK.Jgraph:jgraph
+SynMenu HIJK.Kconfig:kconfig
SynMenu HIJK.KDE\ script:kscript
SynMenu HIJK.Kimwitu++:kwt
SynMenu HIJK.KixTart:kix
diff --git a/runtime/synmenu.vim b/runtime/synmenu.vim
index e7aec0947..1bda52100 100644
--- a/runtime/synmenu.vim
+++ b/runtime/synmenu.vim
@@ -213,9 +213,10 @@ an 50.50.440 &Syntax.HIJK.Java.Java\ Properties :cal SetSyn("jproperties")<CR>
an 50.50.450 &Syntax.HIJK.JavaScript :cal SetSyn("javascript")<CR>
an 50.50.460 &Syntax.HIJK.Jess :cal SetSyn("jess")<CR>
an 50.50.470 &Syntax.HIJK.Jgraph :cal SetSyn("jgraph")<CR>
-an 50.50.490 &Syntax.HIJK.KDE\ script :cal SetSyn("kscript")<CR>
-an 50.50.500 &Syntax.HIJK.Kimwitu++ :cal SetSyn("kwt")<CR>
-an 50.50.510 &Syntax.HIJK.KixTart :cal SetSyn("kix")<CR>
+an 50.50.490 &Syntax.HIJK.Kconfig :cal SetSyn("kconfig")<CR>
+an 50.50.500 &Syntax.HIJK.KDE\ script :cal SetSyn("kscript")<CR>
+an 50.50.510 &Syntax.HIJK.Kimwitu++ :cal SetSyn("kwt")<CR>
+an 50.50.520 &Syntax.HIJK.KixTart :cal SetSyn("kix")<CR>
an 50.60.100 &Syntax.L-Ma.Lace :cal SetSyn("lace")<CR>
an 50.60.110 &Syntax.L-Ma.LamdaProlog :cal SetSyn("lprolog")<CR>
an 50.60.120 &Syntax.L-Ma.Latte :cal SetSyn("latte")<CR>
diff --git a/runtime/syntax/cl.vim b/runtime/syntax/cl.vim
index 3c6f41ba8..30308e12a 100644
--- a/runtime/syntax/cl.vim
+++ b/runtime/syntax/cl.vim
@@ -1,8 +1,9 @@
" Vim syntax file
" Language: cl ("Clever Language" by Multibase, http://www.mbase.com.au)
" Filename extensions: *.ent, *.eni
-" Maintainer: Philip Uren <philu@system77.com>
-" Last update: Wed May 2 10:30:30 EST 2001
+" Maintainer: Philip Uren <philuSPAX@ieee.org> - Remove SPAX spam block
+" Last update: Tue Apr 11 10:19:01 EST 2006
+" $Id$
" For version 5.x: Clear all syntax items
" For version 6.x: Quit when a syntax file was already loaded
@@ -28,12 +29,15 @@ syn match clifError "\<elsif\>"
syn match clifError "\<else\>"
syn match clifError "\<endif\>"
+syn match clSpaceError "\s\+$"
+
" If and while regions
syn region clLoop transparent matchgroup=clWhile start="\<while\>" matchgroup=clWhile end="\<wend\>" contains=ALLBUT,clBreak,clProcedure
syn region clIf transparent matchgroup=clConditional start="\<if\>" matchgroup=clConditional end="\<endif\>" contains=ALLBUT,clBreak,clProcedure
" Make those TODO notes and debugging stand out!
syn keyword clTodo contained TODO BUG DEBUG FIX
+syn match clNeedsWork contained "NEED[S]*\s\s*WORK"
syn keyword clDebug contained debug
syn match clComment "#.*$" contains=clTodo,clNeedsWork
@@ -77,6 +81,7 @@ if version >= 508 || !exists("did_cl_syntax_inits")
endif
HiLink clifError Error
+ HiLink clSpaceError Error
HiLink clWhile Repeat
HiLink clConditional Conditional
HiLink clDebug Debug
diff --git a/runtime/syntax/dtd.vim b/runtime/syntax/dtd.vim
index 0f80e199c..76778ba88 100644
--- a/runtime/syntax/dtd.vim
+++ b/runtime/syntax/dtd.vim
@@ -52,11 +52,11 @@ endif
" if this is a html like comment hightlight also
" the opening <! and the closing > as Comment.
-syn region dtdComment start=+<![ \t]*--+ end=+-->+ contains=dtdTodo
+syn region dtdComment start=+<![ \t]*--+ end=+-->+ contains=dtdTodo,@Spell
" proper DTD comment
-syn region dtdComment contained start=+--+ end=+--+ contains=dtdTodo
+syn region dtdComment contained start=+--+ end=+--+ contains=dtdTodo,@Spell
" Start tags (keywords). This is contained in dtdFunction.
diff --git a/runtime/syntax/kconfig.vim b/runtime/syntax/kconfig.vim
new file mode 100644
index 000000000..f7910144b
--- /dev/null
+++ b/runtime/syntax/kconfig.vim
@@ -0,0 +1,728 @@
+" Vim syntax file
+" Maintainer: Nikolai Weibull <now@bitwi.se>
+" Latest Revision: 2006-04-11
+
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+if exists("g:kconfig_syntax_heavy")
+
+syn match kconfigBegin '^' nextgroup=kconfigKeyword
+ \ skipwhite
+
+syn keyword kconfigTodo contained TODO FIXME XXX NOTE
+
+syn match kconfigComment display '#.*$' contains=kconfigTodo
+
+syn keyword kconfigKeyword config nextgroup=kconfigSymbol
+ \ skipwhite
+
+syn keyword kconfigKeyword menuconfig nextgroup=kconfigSymbol
+ \ skipwhite
+
+syn keyword kconfigKeyword comment menu mainmenu
+ \ nextgroup=kconfigKeywordPrompt
+ \ skipwhite
+
+syn keyword kconfigKeyword choice
+ \ nextgroup=@kconfigConfigOptions
+ \ skipwhite skipnl
+
+syn keyword kconfigKeyword endmenu endchoice
+
+syn keyword kconfigPreProc source
+ \ nextgroup=kconfigPath
+ \ skipwhite
+
+" TODO: This is a hack. The who .*Expr stuff should really be generated so
+" that we can reuse it for various nextgroups.
+syn keyword kconfigConditional if endif
+ \ nextgroup=@kconfigConfigOptionIfExpr
+ \ skipwhite
+
+syn match kconfigKeywordPrompt '"[^"\\]*\%(\\.[^"\\]*\)*"'
+ \ contained
+ \ nextgroup=@kconfigConfigOptions
+ \ skipwhite skipnl
+
+syn match kconfigPath '"[^"\\]*\%(\\.[^"\\]*\)*"\|\S\+'
+ \ contained
+
+syn match kconfigSymbol '\<\k\+\>'
+ \ contained
+ \ nextgroup=@kconfigConfigOptions
+ \ skipwhite skipnl
+
+" FIXME: There is – probably – no reason to cluster these instead of just
+" defining them in the same group.
+syn cluster kconfigConfigOptions contains=kconfigTypeDefinition,
+ \ kconfigInputPrompt,
+ \ kconfigDefaultValue,
+ \ kconfigDependencies,
+ \ kconfigReverseDependencies,
+ \ kconfigNumericalRanges,
+ \ kconfigHelpText,
+ \ kconfigDefBool,
+ \ kconfigOptional
+
+syn keyword kconfigTypeDefinition bool boolean tristate string hex int
+ \ contained
+ \ nextgroup=kconfigTypeDefPrompt,
+ \ @kconfigConfigOptions
+ \ skipwhite skipnl
+
+syn match kconfigTypeDefPrompt '"[^"\\]*\%(\\.[^"\\]*\)*"'
+ \ contained
+ \ nextgroup=kconfigConfigOptionIf,
+ \ @kconfigConfigOptions
+ \ skipwhite skipnl
+
+syn match kconfigTypeDefPrompt "'[^'\\]*\%(\\.[^'\\]*\)*'"
+ \ contained
+ \ nextgroup=kconfigConfigOptionIf,
+ \ @kconfigConfigOptions
+ \ skipwhite skipnl
+
+syn keyword kconfigInputPrompt prompt
+ \ contained
+ \ nextgroup=kconfigPromptPrompt
+ \ skipwhite
+
+syn match kconfigPromptPrompt '"[^"\\]*\%(\\.[^"\\]*\)*"'
+ \ contained
+ \ nextgroup=kconfigConfigOptionIf,
+ \ @kconfigConfigOptions
+ \ skipwhite skipnl
+
+syn match kconfigPromptPrompt "'[^'\\]*\%(\\.[^'\\]*\)*'"
+ \ contained
+ \ nextgroup=kconfigConfigOptionIf,
+ \ @kconfigConfigOptions
+ \ skipwhite skipnl
+
+syn keyword kconfigDefaultValue default
+ \ contained
+ \ nextgroup=@kconfigConfigOptionExpr
+ \ skipwhite
+
+syn match kconfigDependencies 'depends on\|requires'
+ \ contained
+ \ nextgroup=@kconfigConfigOptionIfExpr
+ \ skipwhite
+
+syn keyword kconfigReverseDependencies select
+ \ contained
+ \ nextgroup=@kconfigRevDepSymbol
+ \ skipwhite
+
+syn cluster kconfigRevDepSymbol contains=kconfigRevDepCSymbol,
+ \ kconfigRevDepNCSymbol
+
+syn match kconfigRevDepCSymbol '"[^"\\]*\%(\\.[^"\\]*\)*"'
+ \ contained
+ \ nextgroup=kconfigConfigOptionIf,
+ \ @kconfigConfigOptions
+ \ skipwhite skipnl
+
+syn match kconfigRevDepCSymbol "'[^'\\]*\%(\\.[^'\\]*\)*'"
+ \ contained
+ \ nextgroup=kconfigConfigOptionIf,
+ \ @kconfigConfigOptions
+ \ skipwhite skipnl
+
+syn match kconfigRevDepNCSymbol '\<\k\+\>'
+ \ contained
+ \ nextgroup=kconfigConfigOptionIf,
+ \ @kconfigConfigOptions
+ \ skipwhite skipnl
+
+syn keyword kconfigNumericalRanges range
+ \ contained
+ \ nextgroup=@kconfigRangeSymbol
+ \ skipwhite
+
+syn cluster kconfigRangeSymbol contains=kconfigRangeCSymbol,
+ \ kconfigRangeNCSymbol
+
+syn match kconfigRangeCSymbol '"[^"\\]*\%(\\.[^"\\]*\)*"'
+ \ contained
+ \ nextgroup=@kconfigRangeSymbol2
+ \ skipwhite skipnl
+
+syn match kconfigRangeCSymbol "'[^'\\]*\%(\\.[^'\\]*\)*'"
+ \ contained
+ \ nextgroup=@kconfigRangeSymbol2
+ \ skipwhite skipnl
+
+syn match kconfigRangeNCSymbol '\<\k\+\>'
+ \ contained
+ \ nextgroup=@kconfigRangeSymbol2
+ \ skipwhite skipnl
+
+syn cluster kconfigRangeSymbol2 contains=kconfigRangeCSymbol2,
+ \ kconfigRangeNCSymbol2
+
+syn match kconfigRangeCSymbol2 "'[^'\\]*\%(\\.[^'\\]*\)*'"
+ \ contained
+ \ nextgroup=kconfigConfigOptionIf,
+ \ @kconfigConfigOptions
+ \ skipwhite skipnl
+
+syn match kconfigRangeNCSymbol2 '\<\k\+\>'
+ \ contained
+ \ nextgroup=kconfigConfigOptionIf,
+ \ @kconfigConfigOptions
+ \ skipwhite skipnl
+
+syn region kconfigHelpText contained
+ \ matchgroup=kconfigConfigOption
+ \ start='\%(help\|---help---\)\s*\n\ze\z(\s\+\)'
+ \ skip='^$'
+ \ end='^\z1\@!'
+ \ nextgroup=@kconfigConfigOptions
+ \ skipwhite skipnl
+
+" XXX: Undocumented
+syn keyword kconfigDefBool def_bool
+ \ contained
+ \ nextgroup=@kconfigDefBoolSymbol
+ \ skipwhite
+
+syn cluster kconfigDefBoolSymbol contains=kconfigDefBoolCSymbol,
+ \ kconfigDefBoolNCSymbol
+
+syn match kconfigDefBoolCSymbol '"[^"\\]*\%(\\.[^"\\]*\)*"'
+ \ contained
+ \ nextgroup=kconfigConfigOptionIf,
+ \ @kconfigConfigOptions
+ \ skipwhite skipnl
+
+syn match kconfigDefBoolCSymbol "'[^'\\]*\%(\\.[^'\\]*\)*'"
+ \ contained
+ \ nextgroup=kconfigConfigOptionIf,
+ \ @kconfigConfigOptions
+ \ skipwhite skipnl
+
+syn match kconfigDefBoolNCSymbol '\<\k\+\>'
+ \ contained
+ \ nextgroup=kconfigConfigOptionIf,
+ \ @kconfigConfigOptions
+ \ skipwhite skipnl
+
+" XXX: This is actually only a valid option for “choiceâ€, but treating it
+" specially would require a lot of extra groups.
+syn keyword kconfigOptional optional
+ \ contained
+ \ nextgroup=@kconfigConfigOptions
+ \ skipwhite skipnl
+
+syn keyword kconfigConfigOptionIf if
+ \ contained
+ \ nextgroup=@kconfigConfigOptionIfExpr
+ \ skipwhite
+
+syn cluster kconfigConfigOptionIfExpr contains=@kconfigConfOptIfExprSym,
+ \ kconfigConfOptIfExprNeg,
+ \ kconfigConfOptIfExprGroup
+
+syn cluster kconfigConfOptIfExprSym contains=kconfigConfOptIfExprCSym,
+ \ kconfigConfOptIfExprNCSym
+
+syn match kconfigConfOptIfExprCSym '"[^"\\]*\%(\\.[^"\\]*\)*"'
+ \ contained
+ \ nextgroup=@kconfigConfigOptions,
+ \ kconfigConfOptIfExprAnd,
+ \ kconfigConfOptIfExprOr,
+ \ kconfigConfOptIfExprEq,
+ \ kconfigConfOptIfExprNEq
+ \ skipwhite skipnl
+
+syn match kconfigConfOptIfExprCSym "'[^'\\]*\%(\\.[^'\\]*\)*'"
+ \ contained
+ \ nextgroup=@kconfigConfigOptions,
+ \ kconfigConfOptIfExprAnd,
+ \ kconfigConfOptIfExprOr,
+ \ kconfigConfOptIfExprEq,
+ \ kconfigConfOptIfExprNEq
+ \ skipwhite skipnl
+
+syn match kconfigConfOptIfExprNCSym '\<\k\+\>'
+ \ contained
+ \ nextgroup=@kconfigConfigOptions,
+ \ kconfigConfOptIfExprAnd,
+ \ kconfigConfOptIfExprOr,
+ \ kconfigConfOptIfExprEq,
+ \ kconfigConfOptIfExprNEq
+ \ skipwhite skipnl
+
+syn cluster kconfigConfOptIfExprSym2 contains=kconfigConfOptIfExprCSym2,
+ \ kconfigConfOptIfExprNCSym2
+
+syn match kconfigConfOptIfExprEq '='
+ \ contained
+ \ nextgroup=@kconfigConfOptIfExprSym2
+ \ skipwhite
+
+syn match kconfigConfOptIfExprNEq '!='
+ \ contained
+ \ nextgroup=@kconfigConfOptIfExprSym2
+ \ skipwhite
+
+syn match kconfigConfOptIfExprCSym2 "'[^'\\]*\%(\\.[^'\\]*\)*'"
+ \ contained
+ \ nextgroup=@kconfigConfigOptions,
+ \ kconfigConfOptIfExprAnd,
+ \ kconfigConfOptIfExprOr
+ \ skipwhite skipnl
+
+syn match kconfigConfOptIfExprNCSym2 '\<\k\+\>'
+ \ contained
+ \ nextgroup=@kconfigConfigOptions,
+ \ kconfigConfOptIfExprAnd,
+ \ kconfigConfOptIfExprOr
+ \ skipwhite skipnl
+
+syn match kconfigConfOptIfExprNeg '!'
+ \ contained
+ \ nextgroup=@kconfigConfigOptionIfExpr
+ \ skipwhite
+
+syn match kconfigConfOptIfExprAnd '&&'
+ \ contained
+ \ nextgroup=@kconfigConfigOptionIfExpr
+ \ skipwhite
+
+syn match kconfigConfOptIfExprOr '||'
+ \ contained
+ \ nextgroup=@kconfigConfigOptionIfExpr
+ \ skipwhite
+
+syn match kconfigConfOptIfExprGroup '('
+ \ contained
+ \ nextgroup=@kconfigConfigOptionIfGExp
+ \ skipwhite
+
+" TODO: hm, this kind of recursion doesn't work right. We need another set of
+" expressions that have kconfigConfigOPtionIfGExp as nextgroup and a matcher
+" for '(' that sets it all off.
+syn cluster kconfigConfigOptionIfGExp contains=@kconfigConfOptIfGExpSym,
+ \ kconfigConfOptIfGExpNeg,
+ \ kconfigConfOptIfExprGroup
+
+syn cluster kconfigConfOptIfGExpSym contains=kconfigConfOptIfGExpCSym,
+ \ kconfigConfOptIfGExpNCSym
+
+syn match kconfigConfOptIfGExpCSym '"[^"\\]*\%(\\.[^"\\]*\)*"'
+ \ contained
+ \ nextgroup=@kconfigConfigIf,
+ \ kconfigConfOptIfGExpAnd,
+ \ kconfigConfOptIfGExpOr,
+ \ kconfigConfOptIfGExpEq,
+ \ kconfigConfOptIfGExpNEq
+ \ skipwhite skipnl
+
+syn match kconfigConfOptIfGExpCSym "'[^'\\]*\%(\\.[^'\\]*\)*'"
+ \ contained
+ \ nextgroup=@kconfigConfigIf,
+ \ kconfigConfOptIfGExpAnd,
+ \ kconfigConfOptIfGExpOr,
+ \ kconfigConfOptIfGExpEq,
+ \ kconfigConfOptIfGExpNEq
+ \ skipwhite skipnl
+
+syn match kconfigConfOptIfGExpNCSym '\<\k\+\>'
+ \ contained
+ \ nextgroup=kconfigConfOptIfExprGrpE,
+ \ kconfigConfOptIfGExpAnd,
+ \ kconfigConfOptIfGExpOr,
+ \ kconfigConfOptIfGExpEq,
+ \ kconfigConfOptIfGExpNEq
+ \ skipwhite skipnl
+
+syn cluster kconfigConfOptIfGExpSym2 contains=kconfigConfOptIfGExpCSym2,
+ \ kconfigConfOptIfGExpNCSym2
+
+syn match kconfigConfOptIfGExpEq '='
+ \ contained
+ \ nextgroup=@kconfigConfOptIfGExpSym2
+ \ skipwhite
+
+syn match kconfigConfOptIfGExpNEq '!='
+ \ contained
+ \ nextgroup=@kconfigConfOptIfGExpSym2
+ \ skipwhite
+
+syn match kconfigConfOptIfGExpCSym2 '"[^"\\]*\%(\\.[^"\\]*\)*"'
+ \ contained
+ \ nextgroup=kconfigConfOptIfExprGrpE,
+ \ kconfigConfOptIfGExpAnd,
+ \ kconfigConfOptIfGExpOr
+ \ skipwhite skipnl
+
+syn match kconfigConfOptIfGExpCSym2 "'[^'\\]*\%(\\.[^'\\]*\)*'"
+ \ contained
+ \ nextgroup=kconfigConfOptIfExprGrpE,
+ \ kconfigConfOptIfGExpAnd,
+ \ kconfigConfOptIfGExpOr
+ \ skipwhite skipnl
+
+syn match kconfigConfOptIfGExpNCSym2 '\<\k\+\>'
+ \ contained
+ \ nextgroup=kconfigConfOptIfExprGrpE,
+ \ kconfigConfOptIfGExpAnd,
+ \ kconfigConfOptIfGExpOr
+ \ skipwhite skipnl
+
+syn match kconfigConfOptIfGExpNeg '!'
+ \ contained
+ \ nextgroup=@kconfigConfigOptionIfGExp
+ \ skipwhite
+
+syn match kconfigConfOptIfGExpAnd '&&'
+ \ contained
+ \ nextgroup=@kconfigConfigOptionIfGExp
+ \ skipwhite
+
+syn match kconfigConfOptIfGExpOr '||'
+ \ contained
+ \ nextgroup=@kconfigConfigOptionIfGExp
+ \ skipwhite
+
+syn match kconfigConfOptIfExprGrpE ')'
+ \ contained
+ \ nextgroup=@kconfigConfigOptions,
+ \ kconfigConfOptIfExprAnd,
+ \ kconfigConfOptIfExprOr
+ \ skipwhite skipnl
+
+
+syn cluster kconfigConfigOptionExpr contains=@kconfigConfOptExprSym,
+ \ kconfigConfOptExprNeg,
+ \ kconfigConfOptExprGroup
+
+syn cluster kconfigConfOptExprSym contains=kconfigConfOptExprCSym,
+ \ kconfigConfOptExprNCSym
+
+syn match kconfigConfOptExprCSym '"[^"\\]*\%(\\.[^"\\]*\)*"'
+ \ contained
+ \ nextgroup=kconfigConfigOptionIf,
+ \ kconfigConfOptExprAnd,
+ \ kconfigConfOptExprOr,
+ \ kconfigConfOptExprEq,
+ \ kconfigConfOptExprNEq,
+ \ @kconfigConfigOptions
+ \ skipwhite skipnl
+
+syn match kconfigConfOptExprCSym "'[^'\\]*\%(\\.[^'\\]*\)*'"
+ \ contained
+ \ nextgroup=kconfigConfigOptionIf,
+ \ kconfigConfOptExprAnd,
+ \ kconfigConfOptExprOr,
+ \ kconfigConfOptExprEq,
+ \ kconfigConfOptExprNEq,
+ \ @kconfigConfigOptions
+ \ skipwhite skipnl
+
+syn match kconfigConfOptExprNCSym '\<\k\+\>'
+ \ contained
+ \ nextgroup=kconfigConfigOptionIf,
+ \ kconfigConfOptExprAnd,
+ \ kconfigConfOptExprOr,
+ \ kconfigConfOptExprEq,
+ \ kconfigConfOptExprNEq,
+ \ @kconfigConfigOptions
+ \ skipwhite skipnl
+
+syn cluster kconfigConfOptExprSym2 contains=kconfigConfOptExprCSym2,
+ \ kconfigConfOptExprNCSym2
+
+syn match kconfigConfOptExprEq '='
+ \ contained
+ \ nextgroup=@kconfigConfOptExprSym2
+ \ skipwhite
+
+syn match kconfigConfOptExprNEq '!='
+ \ contained
+ \ nextgroup=@kconfigConfOptExprSym2
+ \ skipwhite
+
+syn match kconfigConfOptExprCSym2 '"[^"\\]*\%(\\.[^"\\]*\)*"'
+ \ contained
+ \ nextgroup=kconfigConfigOptionIf,
+ \ kconfigConfOptExprAnd,
+ \ kconfigConfOptExprOr,
+ \ @kconfigConfigOptions
+ \ skipwhite skipnl
+
+syn match kconfigConfOptExprCSym2 "'[^'\\]*\%(\\.[^'\\]*\)*'"
+ \ contained
+ \ nextgroup=kconfigConfigOptionIf,
+ \ kconfigConfOptExprAnd,
+ \ kconfigConfOptExprOr,
+ \ @kconfigConfigOptions
+ \ skipwhite skipnl
+
+syn match kconfigConfOptExprNCSym2 '\<\k\+\>'
+ \ contained
+ \ nextgroup=kconfigConfigOptionIf,
+ \ kconfigConfOptExprAnd,
+ \ kconfigConfOptExprOr,
+ \ @kconfigConfigOptions
+ \ skipwhite skipnl
+
+syn match kconfigConfOptExprNeg '!'
+ \ contained
+ \ nextgroup=@kconfigConfigOptionExpr
+ \ skipwhite
+
+syn match kconfigConfOptExprAnd '&&'
+ \ contained
+ \ nextgroup=@kconfigConfigOptionExpr
+ \ skipwhite
+
+syn match kconfigConfOptExprOr '||'
+ \ contained
+ \ nextgroup=@kconfigConfigOptionExpr
+ \ skipwhite
+
+syn match kconfigConfOptExprGroup '('
+ \ contained
+ \ nextgroup=@kconfigConfigOptionGExp
+ \ skipwhite
+
+syn cluster kconfigConfigOptionGExp contains=@kconfigConfOptGExpSym,
+ \ kconfigConfOptGExpNeg,
+ \ kconfigConfOptGExpGroup
+
+syn cluster kconfigConfOptGExpSym contains=kconfigConfOptGExpCSym,
+ \ kconfigConfOptGExpNCSym
+
+syn match kconfigConfOptGExpCSym '"[^"\\]*\%(\\.[^"\\]*\)*"'
+ \ contained
+ \ nextgroup=kconfigConfOptExprGrpE,
+ \ kconfigConfOptGExpAnd,
+ \ kconfigConfOptGExpOr,
+ \ kconfigConfOptGExpEq,
+ \ kconfigConfOptGExpNEq
+ \ skipwhite skipnl
+
+syn match kconfigConfOptGExpCSym "'[^'\\]*\%(\\.[^'\\]*\)*'"
+ \ contained
+ \ nextgroup=kconfigConfOptExprGrpE,
+ \ kconfigConfOptGExpAnd,
+ \ kconfigConfOptGExpOr,
+ \ kconfigConfOptGExpEq,
+ \ kconfigConfOptGExpNEq
+ \ skipwhite skipnl
+
+syn match kconfigConfOptGExpNCSym '\<\k\+\>'
+ \ contained
+ \ nextgroup=kconfigConfOptExprGrpE,
+ \ kconfigConfOptGExpAnd,
+ \ kconfigConfOptGExpOr,
+ \ kconfigConfOptGExpEq,
+ \ kconfigConfOptGExpNEq
+ \ skipwhite skipnl
+
+syn cluster kconfigConfOptGExpSym2 contains=kconfigConfOptGExpCSym2,
+ \ kconfigConfOptGExpNCSym2
+
+syn match kconfigConfOptGExpEq '='
+ \ contained
+ \ nextgroup=@kconfigConfOptGExpSym2
+ \ skipwhite
+
+syn match kconfigConfOptGExpNEq '!='
+ \ contained
+ \ nextgroup=@kconfigConfOptGExpSym2
+ \ skipwhite
+
+syn match kconfigConfOptGExpCSym2 '"[^"\\]*\%(\\.[^"\\]*\)*"'
+ \ contained
+ \ nextgroup=kconfigConfOptExprGrpE,
+ \ kconfigConfOptGExpAnd,
+ \ kconfigConfOptGExpOr
+ \ skipwhite skipnl
+
+syn match kconfigConfOptGExpCSym2 "'[^'\\]*\%(\\.[^'\\]*\)*'"
+ \ contained
+ \ nextgroup=kconfigConfOptExprGrpE,
+ \ kconfigConfOptGExpAnd,
+ \ kconfigConfOptGExpOr
+ \ skipwhite skipnl
+
+syn match kconfigConfOptGExpNCSym2 '\<\k\+\>'
+ \ contained
+ \ nextgroup=kconfigConfOptExprGrpE,
+ \ kconfigConfOptGExpAnd,
+ \ kconfigConfOptGExpOr
+ \ skipwhite skipnl
+
+syn match kconfigConfOptGExpNeg '!'
+ \ contained
+ \ nextgroup=@kconfigConfigOptionGExp
+ \ skipwhite
+
+syn match kconfigConfOptGExpAnd '&&'
+ \ contained
+ \ nextgroup=@kconfigConfigOptionGExp
+ \ skipwhite
+
+syn match kconfigConfOptGExpOr '||'
+ \ contained
+ \ nextgroup=@kconfigConfigOptionGExp
+ \ skipwhite
+
+syn match kconfigConfOptExprGrpE ')'
+ \ contained
+ \ nextgroup=kconfigConfigOptionIf,
+ \ kconfigConfOptExprAnd,
+ \ kconfigConfOptExprOr
+ \ skipwhite skipnl
+
+hi def link kconfigTodo Todo
+hi def link kconfigComment Comment
+hi def link kconfigKeyword Keyword
+hi def link kconfigPreProc PreProc
+hi def link kconfigConditional Conditional
+hi def link kconfigPrompt String
+hi def link kconfigKeywordPrompt kconfigPrompt
+hi def link kconfigPath String
+hi def link kconfigSymbol String
+hi def link kconfigConstantSymbol Constant
+hi def link kconfigConfigOption Type
+hi def link kconfigTypeDefinition kconfigConfigOption
+hi def link kconfigTypeDefPrompt kconfigPrompt
+hi def link kconfigInputPrompt kconfigConfigOption
+hi def link kconfigPromptPrompt kconfigPrompt
+hi def link kconfigDefaultValue kconfigConfigOption
+hi def link kconfigDependencies kconfigConfigOption
+hi def link kconfigReverseDependencies kconfigConfigOption
+hi def link kconfigRevDepCSymbol kconfigConstantSymbol
+hi def link kconfigRevDepNCSymbol kconfigSymbol
+hi def link kconfigNumericalRanges kconfigConfigOption
+hi def link kconfigRangeCSymbol kconfigConstantSymbol
+hi def link kconfigRangeNCSymbol kconfigSymbol
+hi def link kconfigRangeCSymbol2 kconfigConstantSymbol
+hi def link kconfigRangeNCSymbol2 kconfigSymbol
+hi def link kconfigHelpText Normal
+hi def link kconfigDefBool kconfigConfigOption
+hi def link kconfigDefBoolCSymbol kconfigConstantSymbol
+hi def link kconfigDefBoolNCSymbol kconfigSymbol
+hi def link kconfigOptional kconfigConfigOption
+hi def link kconfigConfigOptionIf Conditional
+hi def link kconfigConfOptIfExprCSym kconfigConstantSymbol
+hi def link kconfigConfOptIfExprNCSym kconfigSymbol
+hi def link kconfigOperator Operator
+hi def link kconfigConfOptIfExprEq kconfigOperator
+hi def link kconfigConfOptIfExprNEq kconfigOperator
+hi def link kconfigConfOptIfExprCSym2 kconfigConstantSymbol
+hi def link kconfigConfOptIfExprNCSym2 kconfigSymbol
+hi def link kconfigConfOptIfExprNeg kconfigOperator
+hi def link kconfigConfOptIfExprAnd kconfigOperator
+hi def link kconfigConfOptIfExprOr kconfigOperator
+hi def link kconfigDelimiter Delimiter
+hi def link kconfigConfOptIfExprGroup kconfigDelimiter
+hi def link kconfigConfOptIfGExpCSym kconfigConstantSymbol
+hi def link kconfigConfOptIfGExpNCSym kconfigSymbol
+hi def link kconfigConfOptIfGExpEq kconfigOperator
+hi def link kconfigConfOptIfGExpNEq kconfigOperator
+hi def link kconfigConfOptIfGExpCSym2 kconfigConstantSymbol
+hi def link kconfigConfOptIfGExpNCSym2 kconfigSymbol
+hi def link kconfigConfOptIfGExpNeg kconfigOperator
+hi def link kconfigConfOptIfGExpAnd kconfigOperator
+hi def link kconfigConfOptIfGExpOr kconfigOperator
+hi def link kconfigConfOptIfExprGrpE kconfigDelimiter
+hi def link kconfigConfOptExprCSym kconfigConstantSymbol
+hi def link kconfigConfOptExprNCSym kconfigSymbol
+hi def link kconfigConfOptExprEq kconfigOperator
+hi def link kconfigConfOptExprNEq kconfigOperator
+hi def link kconfigConfOptExprCSym2 kconfigConstantSymbol
+hi def link kconfigConfOptExprNCSym2 kconfigSymbol
+hi def link kconfigConfOptExprNeg kconfigOperator
+hi def link kconfigConfOptExprAnd kconfigOperator
+hi def link kconfigConfOptExprOr kconfigOperator
+hi def link kconfigConfOptExprGroup kconfigDelimiter
+hi def link kconfigConfOptGExpCSym kconfigConstantSymbol
+hi def link kconfigConfOptGExpNCSym kconfigSymbol
+hi def link kconfigConfOptGExpEq kconfigOperator
+hi def link kconfigConfOptGExpNEq kconfigOperator
+hi def link kconfigConfOptGExpCSym2 kconfigConstantSymbol
+hi def link kconfigConfOptGExpNCSym2 kconfigSymbol
+hi def link kconfigConfOptGExpNeg kconfigOperator
+hi def link kconfigConfOptGExpAnd kconfigOperator
+hi def link kconfigConfOptGExpOr kconfigOperator
+hi def link kconfigConfOptExprGrpE kconfigConfOptIfExprGroup
+
+else
+
+syn keyword kconfigTodo contained TODO FIXME XXX NOTE
+
+syn match kconfigComment display '#.*$' contains=kconfigTodo
+
+syn keyword kconfigKeyword config menuconfig comment menu mainmenu
+
+syn keyword kconfigConditional choice endchoice if endif
+
+syn keyword kconfigPreProc source
+ \ nextgroup=kconfigPath
+ \ skipwhite
+
+syn match kconfigSpecialChar contained '\\.'
+
+syn region kconfigPath matchgroup=kconfigPath
+ \ start=+"+ skip=+\\\\\|\\\"+ end=+"+
+ \ contains=kconfigSpecialChar
+
+syn region kconfigPath matchgroup=kconfigPath
+ \ start=+'+ skip=+\\\\\|\\\'+ end=+'+
+ \ contains=kconfigSpecialChar
+
+syn match kconfigPath '\S\+'
+ \ contained
+
+syn region kconfigString matchgroup=kconfigString
+ \ start=+"+ skip=+\\\\\|\\\"+ end=+"+
+ \ contains=kconfigSpecialChar
+
+syn region kconfigString matchgroup=kconfigString
+ \ start=+'+ skip=+\\\\\|\\\'+ end=+'+
+ \ contains=kconfigSpecialChar
+
+syn keyword kconfigType bool boolean tristate string hex int
+
+syn keyword kconfigOption prompt default requires select range
+ \ optional
+syn match kconfigOption 'depends\%( on\)'
+
+syn keyword kconfigMacro def_bool def_tristate
+
+syn region kconfigHelpText contained
+ \ matchgroup=kconfigConfigOption
+ \ start='\%(help\|---help---\)\s*\n\ze\z(\s\+\)'
+ \ skip='^$'
+ \ end='^\z1\@!'
+
+hi def link kconfigTodo Todo
+hi def link kconfigComment Comment
+hi def link kconfigKeyword Keyword
+hi def link kconfigConditional Conditional
+hi def link kconfigPreProc PreProc
+hi def link kconfigSpecialChar SpecialChar
+hi def link kconfigPath String
+hi def link kconfigString String
+hi def link kconfigType Type
+hi def link kconfigOption Identifier
+hi def link kconfigHelpText Normal
+hi def link kconfigmacro Macro
+
+endif
+
+let b:current_syntax = "kconfig"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/ocaml.vim b/runtime/syntax/ocaml.vim
index d95a3c8d4..cdef8c38b 100644
--- a/runtime/syntax/ocaml.vim
+++ b/runtime/syntax/ocaml.vim
@@ -5,9 +5,9 @@
" Karl-Heinz Sylla <Karl-Heinz.Sylla@gmd.de>
" Issac Trotts <ijtrotts@ucdavis.edu>
" URL: http://www.ocaml.info/vim/syntax/ocaml.vim
-" Last Change: 2005 May 18 - Added 'NOTE' to highlighted comment words (MM)
+" Last Change: 2006 Apr 11 - Fixed an initialization bug (MM)
+" 2005 May 18 - Added 'NOTE' to highlighted comment words (MM)
" 2005 Apr 14 - Fixed a small bug concerning 'include' (MM)
-" 2005 Mar 15 - Added a patch from David Baelde (MM)
" A minor patch was applied to the official version so that object/end
" can be distinguished from begin/end, which is used for indentation,
@@ -17,7 +17,7 @@
" For version 6.x: Quit when a syntax file was already loaded
if version < 600
syntax clear
-elseif exists("b:current_syntax") && b:current_syntax != "ocaml"
+elseif exists("b:current_syntax") && b:current_syntax == "ocaml"
finish
endif
diff --git a/runtime/syntax/progress.vim b/runtime/syntax/progress.vim
index dd29310ad..576042397 100644
--- a/runtime/syntax/progress.vim
+++ b/runtime/syntax/progress.vim
@@ -3,12 +3,12 @@
" Filename extensions: *.p (collides with Pascal),
" *.i (collides with assembler)
" *.w (collides with cweb)
-" Maintainer: Philip Uren <philu@computer.org>
-" Contributors: Chris Ruprecht <chrup@mac.com>
-" Philip Uren <philu@computer.org>
+" Maintainer: Philip Uren <philuSPAX@ieee.org> Remove "SPAX" spam block
+" Contributors: Chris Ruprecht <chrup@mac.com>
" Mikhail Kuperblum <mikhail@whasup.com>
-" URL: http://www.zeta.org.au/~philu/vim/progress.vim
-" Last Change: Thu May 3 08:49:47 EST 2001
+" John Florian <jflorian@voyager.net>
+" Last Change: Tue Apr 11 10:18:23 EST 2006
+" $Id$
" For version 5.x: Clear all syntax items
" For version 6.x: Quit when a syntax file was already loaded
@@ -24,6 +24,9 @@ else
set iskeyword=@,48-57,_,-,!,#,$,%
endif
+" The Progress editor doesn't cope with tabs very well.
+set expandtab
+
syn case ignore
" Progress Blocks of code and mismatched "end." errors.
@@ -31,7 +34,7 @@ syn match ProgressEndError "\<end\>"
syn region ProgressDoBlock transparent matchgroup=ProgressDo start="\<do\>" matchgroup=ProgressDo end="\<end\>" contains=ALLBUT,ProgressProcedure,ProgressFunction
syn region ProgressForBlock transparent matchgroup=ProgressFor start="\<for\>" matchgroup=ProgressFor end="\<end\>" contains=ALLBUT,ProgressProcedure,ProgressFunction
syn region ProgressRepeatBlock transparent matchgroup=ProgressRepeat start="\<repeat\>" matchgroup=ProgressRepeat end="\<end\>" contains=ALLBUT,ProgressProcedure,ProgressFunction
-syn region ProgressCaseBlock transparent matchgroup=ProgressCase start="\<case\>" matchgroup=ProgressCase end="\<end\scase\>" contains=ALLBUT,ProgressProcedure,ProgressFunction
+syn region ProgressCaseBlock transparent matchgroup=ProgressCase start="\<case\>" matchgroup=ProgressCase end="\<end\scase\>\|\<end\>" contains=ALLBUT,ProgressProcedure,ProgressFunction
" These are Progress reserved words,
" and they could go in ProgressReserved,
@@ -43,14 +46,23 @@ syn keyword ProgressFor each where
syn keyword ProgressTodo contained TODO BUG FIX
syn keyword ProgressDebug contained DEBUG
syn keyword ProgressDebug debugger
-
-syn keyword ProgressFunction procedure function
+syn match ProgressTodo contained "NEED[S]*\s\s*WORK"
+
+" If you like to highlight the whole line of
+" the start and end of procedures
+" to make the whole block of code stand out:
+syn match ProgressProcedure "^\s*procedure.*"
+syn match ProgressProcedure "^\s*end\s\s*procedure.*"
+syn match ProgressFunction "^\s*function.*"
+syn match ProgressFunction "^\s*end\s\s*function.*"
+" ... otherwise use this:
+" syn keyword ProgressFunction procedure function
syn keyword ProgressReserved accum[ulate] active-window add alias all alter ambig[uous] analyz[e] and any apply as asc[ending] assign at attr[-space]
syn keyword ProgressReserved authorization auto-ret[urn] avail[able] back[ground] before-h[ide] begins bell between blank break btos by call can-do can-find
-syn keyword ProgressReserved center[ed] check chr clear clipboard col colon color col[umn] column-lab[el] col[umns] compiler connected control count-of
+syn keyword ProgressReserved center[ed] character check chr clear clipboard col colon color col[umn] column-lab[el] col[umns] compiler connected control count-of
syn keyword ProgressReserved cpstream create ctos current current-changed current-lang[uage] current-window current_date curs[or] database dataservers
-syn keyword ProgressReserved dbcodepage dbcollation dbname dbrest[rictions] dbtaskid dbtype dbvers[ion] dde deblank debug-list debugger decimals declare
+syn keyword ProgressReserved dbcodepage dbcollation dbname dbrest[rictions] dbtaskid dbtype dbvers[ion] dde deblank debug-list debugger decimal decimals declare
syn keyword ProgressReserved def default default-noxl[ate] default-window def[ine] delete delimiter desc[ending] dict[ionary] disable discon[nect] disp
syn keyword ProgressReserved disp[lay] distinct dos down drop editing enable encode entry error-stat[us] escape etime except exclusive
syn keyword ProgressReserved exclusive[-lock] exclusive-web-us[er] exists export false fetch field field[s] file-info[rmation] fill find find-case-sensitive
@@ -58,7 +70,7 @@ syn keyword ProgressReserved find-global find-next-occurrence find-prev-occurren
syn keyword ProgressReserved fram[e] frame-col frame-db frame-down frame-field frame-file frame-inde[x] frame-line frame-name frame-row frame-val[ue]
syn keyword ProgressReserved from from-c[hars] from-p[ixels] gateway[s] get-byte get-codepage[s] get-coll[ations] get-key-val[ue] getbyte global go-on
syn keyword ProgressReserved go-pend[ing] grant graphic-e[dge] group having header help hide import in index indicator input input-o[utput] insert
-syn keyword ProgressReserved into is is-attr[-space] join kblabel key-code key-func[tion] key-label keycode keyfunc[tion] keylabel keys keyword label
+syn keyword ProgressReserved integer into is is-attr[-space] join kblabel key-code key-func[tion] key-label keycode keyfunc[tion] keylabel keys keyword label
syn keyword ProgressReserved last last-even[t] last-key last-of lastkey ldbname leave library like line-count[er] listi[ng] locked lookup machine-class
syn keyword ProgressReserved map member message message-lines mouse mpe new next next-prompt no no-attr[-space] no-error no-f[ill] no-help no-hide no-label[s]
syn keyword ProgressReserved no-lock no-map no-mes[sage] no-pause no-prefe[tch] no-undo no-val[idate] no-wait not null num-ali[ases] num-dbs num-entries
@@ -70,39 +82,51 @@ syn keyword ProgressReserved release reposition retain retry return return-val[u
syn keyword ProgressReserved scroll sdbname search seek select self session set setuser[id] share[-lock] shared show-stat[s] skip some space status stream
syn keyword ProgressReserved stream-io string-xref system-dialog table term term[inal] text text-cursor text-seg[-growth] this-procedure time title
syn keyword ProgressReserved to today top-only trans trans[action] trigger triggers trim true underl[ine] undo unform[atted] union unique unix up update
-syn keyword ProgressReserved use-index use-revvideo use-underline user user[id] using v6frame value values view view-as vms wait-for web-con[text]
+syn keyword ProgressReserved use-index use-revvideo use-underline user user[id] using v6frame value values variable view view-as vms wait-for web-con[text]
syn keyword ProgressReserved window window-maxim[ized] window-minim[ized] window-normal with work-tab[le] workfile write xcode xref yes _cbit
-syn keyword ProgressReserved _control _list _memory _msg _pcontrol _serial[-num] _trace
+syn keyword ProgressReserved _control _list _memory _msg _pcontrol _serial[-num] _trace
" Strings. Handles embedded quotes.
" Note that, for some reason, Progress doesn't use the backslash, "\"
" as the escape character; it uses tilde, "~".
-syn region ProgressString matchgroup=ProgressQuote start=+"+ end=+"+ skip=+\~"+
-syn region ProgressString matchgroup=ProgressQuote start=+'+ end=+'+ skip=+\~'+
+syn region ProgressString matchgroup=ProgressQuote start=+"+ end=+"+ skip=+\~'\|\~\~+
+syn region ProgressString matchgroup=ProgressQuote start=+'+ end=+'+ skip=+\~'\|\~\~+
-syn match ProgressIdentifier "\<[a-zA-Z_][a-zA-Z0-9_]*\>()"
+syn match ProgressIdentifier "\<[a-zA-Z_%#]+\>()"
" syn match ProgressDelimiter "()"
-" syn match ProgressMatrixDelimiter "[][]"
-
+syn match ProgressMatrixDelimiter "[][]"
" If you prefer you can highlight the range
"syn match ProgressMatrixDelimiter "[\d\+\.\.\d\+]"
-syn match ProgressNumber "\<\d\+\(u\=l\=\|lu\|f\)\>"
+syn match ProgressNumber "\<\-\=\d\+\(u\=l\=\|lu\|f\)\>"
syn match ProgressByte "\$[0-9a-fA-F]\+"
-" If you don't like tabs:
-"syn match ProgressShowTab "\t"
-"syn match ProgressShowTabc "\t"
+" More values: Logicals, and Progress's unknown value, ?.
+syn match ProgressNumber "?"
+syn keyword ProgressNumber true false yes no
-syn region ProgressComment start="/\*" end="\*/" contains=ProgressComment,ProgressTodo,ProgressDebug
-syn match ProgressInclude "^[ ]*[{].*\.i[}]"
+" If you don't like tabs:
+syn match ProgressShowTab "\t"
-syn match ProgressSubstitute "^[ ]*[{].*[^i][}]"
-syn match ProgressPreProc "^[ ]*&.*"
+" If you don't like white space on the end of lines:
+" syn match ProgressSpaceError "\s\+$"
-syn match ProgressOperator "[!;|)(:.><+*=-]"
+syn region ProgressComment start="/\*" end="\*/" contains=ProgressComment,ProgressTodo,ProgressDebug
+syn region ProgressInclude start="^[ ]*[{][^&]" end="[}]" contains=ProgressPreProc,ProgressOperator,ProgressString,ProgressComment
+syn region ProgressPreProc start="&" end="\>" contained
+
+" This next line works reasonably well.
+" syn match ProgressOperator "[!;|)(:.><+*=-]"
+"
+" Progress allows a '-' to be part of an identifier. To be considered
+" the subtraction/negation operation operator it needs a non-word
+" character on either side. Also valid are cases where the minus
+" operation appears at the beginning or end of a line.
+" This next line trips up on "no-undo" etc.
+" syn match ProgressOperator "[!;|)(:.><+*=]\|\W-\W\|^-\W\|\W-$"
+syn match ProgressOperator "[!;|)(:.><+*=]\|\s-\s\|^-\s\|\s-$"
syn keyword ProgressOperator <= <> >= abs[olute] accelerator across add-first add-last advise alert-box allow-replication ansi-only anywhere append appl-alert[-boxes] application as-cursor ask-overwrite
syn keyword ProgressOperator attach[ment] auto-end-key auto-endkey auto-go auto-ind[ent] auto-resize auto-z[ap] available-formats ave[rage] avg backward[s] base-key batch[-mode] bgc[olor] binary
@@ -114,7 +138,7 @@ syn keyword ProgressOperator column-label-bgc[olor] column-label-dcolor column-l
syn keyword ProgressOperator connect constrained contents context context-pop[up] control-containe[r] c[ontrol-form] convert-to-offse[t] convert count cpcase cpcoll cpint[ernal] cplog
syn keyword ProgressOperator cpprint cprcodein cprcodeout cpterm crc-val[ue] c[reate-control] create-result-list-entry create-test-file current-column current-environm[ent] current-iteration
syn keyword ProgressOperator current-result-row current-row-modified current-value cursor-char cursor-line cursor-offset data-entry-retur[n] data-t[ype] date date-f[ormat] day db-references
-syn keyword ProgressOperator dcolor dde-error dde-i[d] dde-item dde-name dde-topic debu[g] dec[imal] default-b[utton] default-extensio[n] defer-lob-fetch defined delete-char delete-current-row
+syn keyword ProgressOperator dcolor dde-error dde-i[d] dde-item dde-name dde-topic debu[g] dec[imal] default-b[utton] default-extensio[n] defer-lob-fetch define defined delete-char delete-current-row
syn keyword ProgressOperator delete-line delete-selected-row delete-selected-rows deselect-focused-row deselect-rows deselect-selected-row d[esign-mode] dialog-box dialog-help dir disabled display-message
syn keyword ProgressOperator display-t[ype] double drag-enabled drop-down drop-down-list dump dynamic echo edge edge[-chars] edge-p[ixels] editor empty end-key endkey entered eq error error-col[umn]
syn keyword ProgressOperator error-row event-t[ype] event[s] exclusive-id execute exp expand extended extent external extract fetch-selected-row fgc[olor] file file-name file-off[set] file-type
@@ -174,38 +198,30 @@ if version >= 508 || !exists("did_progress_syntax_inits")
endif
" The default methods for highlighting. Can be overridden later.
- HiLink ProgressByte Number
+ HiLink ProgressByte Number
HiLink ProgressCase Repeat
- HiLink ProgressComment StatusLine
+ HiLink ProgressComment Comment
HiLink ProgressConditional Conditional
HiLink ProgressDebug Debug
HiLink ProgressDo Repeat
HiLink ProgressEndError Error
HiLink ProgressFor Repeat
HiLink ProgressFunction Procedure
+ HiLink ProgressIdentifier Identifier
HiLink ProgressInclude Include
- HiLink ProgressLabel Label
HiLink ProgressMatrixDelimiter Identifier
- HiLink ProgressModifier Type
HiLink ProgressNumber Number
- HiLink ProgressOperator Function
+ HiLink ProgressOperator Operator
HiLink ProgressPreProc PreProc
HiLink ProgressProcedure Procedure
HiLink ProgressQuote Delimiter
HiLink ProgressRepeat Repeat
- HiLink ProgressReserved Identifier
+ HiLink ProgressReserved Statement
+ HiLink ProgressSpaceError Error
HiLink ProgressString String
- HiLink ProgressStructure Structure
- HiLink ProgressSubstitute PreProc
HiLink ProgressTodo Todo
HiLink ProgressType Statement
- HiLink ProgressUnclassified Statement
-
- " Optional highlighting
- " HiLink ProgressDelimiter Identifier
- " HiLink ProgressShowTab Error
- " HiLink ProgressShowTabc Error
- " HiLink ProgressIdentifier Identifier
+ HiLink ProgressShowTab Error
delcommand HiLink
endif
diff --git a/runtime/syntax/rexx.vim b/runtime/syntax/rexx.vim
index ef4b058b5..179e453c9 100644
--- a/runtime/syntax/rexx.vim
+++ b/runtime/syntax/rexx.vim
@@ -1,11 +1,15 @@
" Vim syntax file
" Language: Rexx
" Maintainer: Thomas Geulig <geulig@nentec.de>
-" Last Change: 2001 May 2
-" URL: http://mywebpage.netscape.com/sharpPeople/vim/syntax/rexx.vim
+" Last Change: 2005 Dez 9, added some <http://www.ooRexx.org>-coloring,
+" line comments, do *over*, messages, directives,
+" highlighting classes, methods, routines and requires
+" Rony G. Flatscher <rony.flatscher@wu-wien.ac.at>
"
-" Special Thanks to Dan Sharp <dwsharp@hotmail.com> for comments and additions
-" (and providing the webspace)
+" URL: http://www.geulig.de/vim/rexx.vim
+"
+" Special Thanks to Dan Sharp <dwsharp@hotmail.com> and Rony G. Flatscher
+" <Rony.Flatscher@wu-wien.ac.at> for comments and additions
" For version 5.x: Clear all syntax items
" For version 6.x: Quit when a syntax file was already loaded
@@ -17,65 +21,126 @@ endif
syn case ignore
+" add to valid identifier chars
+setlocal iskeyword+=.
+setlocal iskeyword+=!
+setlocal iskeyword+=?
+
+" ---rgf, position important: must be before comments etc. !
+syn match rexxOperator "[-=|\/\\\+\*\[\],;<>&\~]"
+
+syn match rexxIdentifier "\<[a-zA-Z\!\?_]\([a-zA-Z0-9._?!]\)*\>"
+syn match rexxEnvironmentSymbol "\<\.\+\([a-zA-Z0-9._?!]\)*\>"
+
+
" A Keyword is the first symbol in a clause. A clause begins at the start
" of a line or after a semicolon. THEN, ELSE, OTHERWISE, and colons are always
" followed by an implied semicolon.
-syn match rexxClause "\(^\|;\|:\|then \|else \|otherwise \)\s*\w\+" contains=ALL
+syn match rexxClause "\(^\|;\|:\|then \|else \|otherwise \)\s*\w\+" contains=ALLBUT,rexxParse2,rexxRaise2
+
" Considered keywords when used together in a phrase and begin a clause
-syn match rexxKeyword contained "\<signal\( on \(error\|failure\|halt\|notready\|novalue\|syntax\|lostdigits\)\(\s\+name\)\=\)\=\>"
-syn match rexxKeyword contained "\<signal off \(error\|failure\|halt\|notready\|novalue\|syntax\|lostdigits\)\>"
-syn match rexxKeyword contained "\<call off \(error\|failure\|halt\|notready\)\>"
-syn match rexxKeyword contained "\<parse \(upper \)\=\(arg\|linein\|pull\|source\|var\|value\|version\)\>"
+syn match rexxParse "\<parse\s*\(\(upper\|lower\|caseless\)\s*\)\=\(arg\|linein\|pull\|source\|var\|\<value\>\|version\)\>"
+syn match rexxParse2 "\<with\>" contained containedin=rexxParse
+
+
syn match rexxKeyword contained "\<numeric \(digits\|form \(scientific\|engineering\|value\)\|fuzz\)\>"
syn match rexxKeyword contained "\<\(address\|trace\)\( value\)\=\>"
-syn match rexxKeyword contained "\<procedure\( expose\)\=\>"
-syn match rexxKeyword contained "\<do\( forever\)\=\>"
+syn match rexxKeyword contained "\<procedure\(\s*expose\)\=\>"
+syn match rexxKeyword contained "\<do\>\(\s*forever\)\=\>"
+syn match rexxKeyword contained "\<use\>\s*\<arg\>"
" Another keyword phrase, separated to aid highlighting in rexxFunction
-syn match rexxKeyword2 contained "\<call\( on \(error\|failure\|halt\|notready\)\(\s\+name\)\=\)\=\>"
+syn match rexxKeyword contained "\<signal\(\s*\(on\|off\)\s*\(any\|error\|failure\|halt\|lostdigits\|nomethod\|nostring\|notready\|novalue\|syntax\|user\s*\k*\)\(\s\+name\)\=\)\=\>"
+syn match rexxKeyword2 contained "\<call\(\s*\(on\|off\)\s*\(any\|error\|failure\|halt\|notready\|user\s*\k*\)\(\s\+name\)\=\)\=\>"
+
" Considered keywords when they begin a clause
-syn match rexxKeyword contained "\<\(arg\|drop\|end\|exit\|if\|interpret\|iterate\|leave\|nop\)\>"
-syn match rexxKeyword contained "\<\(options\|pull\|push\|queue\|return\|say\|select\|trace\)\>"
+syn match rexxKeyword contained "\<\(arg\|do\|drop\|end\|exit\|expose\|forward\|if\|interpret\|iterate\|leave\|nop\)\>"
+syn match rexxKeyword contained "\<\(options\|pull\|push\|queue\|raise\|reply\|return\|say\|select\|trace\)\>"
" Conditional phrases
-syn match rexxConditional "\(^\s*\| \)\(to\|by\|for\|until\|while\|then\|when\|otherwise\|else\)\( \|\s*$\)" contains=ALLBUT,rexxConditional
-syn match rexxConditional contained "\<\(to\|by\|for\|until\|while\|then\|when\|else\|otherwise\)\>"
+syn match rexxConditional "\(^\s*\| \)\(to\|by\|for\|until\|while\|then\|when\|otherwise\|else\|over\)\( \|\s*$\)"
+syn match rexxConditional contained "\<\(to\|by\|for\|until\|while\|then\|when\|otherwise\|else\|over\)\>"
+
+" must be after Conditional phrases!
+syn match rexxKeyword ".*\<\(then\|else\)\s*\<do\>"
-" Assignments -- a keyword followed by an equal sign becomes a variable
-syn match rexxAssign "\<\w\+\s*=\s*" contains=rexxSpecialVariable
+" Raise statement
+syn match rexxRaise "\(^\|;\|:\)\s\+\<raise\>\s*\<\(propagate\|error\|failure\|syntax\|user\)\>\="
+syn match rexxRaise2 "\<\(additional\|array\|description\|exit\|return\)\>" contained containedin=rexxRaise
+
+" Forward statement keywords
+syn match rexxForward "\(^\|;\|:\)\<forward\>\s*"
+syn match rexxForward2 "\<\(arguments\|array\|continue\|message\|class\|to\)\>" contained containedin=rexxForward
" Functions/Procedures
-syn match rexxFunction "\<\h\w*\(/\*\s*\*/\)*("me=e-1 contains=rexxComment,rexxConditional,rexxKeyword
-syn match rexxFunction "\<\(arg\|trace\)\(/\*\s*\*/\)*("me=e-1
-syn match rexxFunction "\<call\( on \(error\|failure\|halt\|notready\)\(\s\+name\)\=\)\=\>\s\+\w\+\>" contains=rexxKeyword2
+syn match rexxFunction "\<\w*\(/\*\s*\*/\)*("me=e-1 contains=rexxComment,rexxConditional,rexxKeyword,rexxIdentifier
+syn match rexxFunction "\<\<[a-zA-Z\!\?_]\([a-zA-Z0-9._?!]\)*\>("me=e-1
+syn match rexxFunction "\<call\s\+\k\+\>" contains=rexxKeyword2
+syn match rexxFunction "[()]"
" String constants
-syn region rexxString start=+"+ skip=+\\\\\|\\'+ end=+"+
-syn region rexxString start=+'+ skip=+\\\\\|\\"+ end=+'+
-syn match rexxCharacter +"'[^\\]'"+
+syn region rexxString start=+"+ skip=+""+ end=+"\(x\|b\)\=+ oneline
+syn region rexxString start=+'+ skip=+''+ end=+'\(x\|b\)\=+ oneline
" Catch errors caused by wrong parenthesis
-syn region rexxParen transparent start='(' end=')' contains=ALLBUT,rexxParenError,rexxTodo,rexxUserLabel,rexxKeyword
+syn region rexxParen transparent start='(' end=')' contains=ALLBUT,rexxParenError,rexxTodo,rexxLabel,rexxKeyword
syn match rexxParenError ")"
syn match rexxInParen "[\\[\\]{}]"
" Comments
syn region rexxComment start="/\*" end="\*/" contains=rexxTodo,rexxComment
syn match rexxCommentError "\*/"
+syn match rexxLineComment /--.*/
syn keyword rexxTodo contained TODO FIXME XXX
+
+" ooRexx messages
+syn region rexxMessageOperator start="\(\~\|\~\~\)" end="\(\S\|\s\)"me=e-1
+syn match rexxMessage "\(\~\|\~\~\)\s*\<\.*[a-zA-Z]\([a-zA-Z0-9._?!]\)*\>" contains=rexxMessageOperator
+
" Highlight User Labels
-syn match rexxUserLabel "\<\I\i*\s*:"me=e-1
+syn match rexxLabel "^\s*\k*\s*:"me=e-1
+
+syn match rexxLineContinue ",\ze\s*\(--.*\|\/\*.*\)*$"
+" the following is necessary, otherwise three consecutive dashes will cause it to highlight the first one
+syn match rexxLineContinue "-\ze\(\s+--.*\|\s*\/\*.*\)*$"
" Special Variables
-syn keyword rexxSpecialVariable sigl rc result
-syn match rexxCompoundVariable "\<\w\+\.\w*\>"
+syn keyword rexxSpecialVariable sigl rc result self super
+
+" Constants
+syn keyword rexxConst .true .false .nil
+
+" ooRexx builtin classes, first define dot to be o.k. in keywords
+syn keyword rexxBuiltinClass .object .class .method .message
+syn keyword rexxBuiltinClass .monitor .alarm
+syn keyword rexxBuiltinClass .stem .stream .string
+syn keyword rexxBuiltinClass .mutablebuffer
+syn keyword rexxBuiltinClass .array .list .queue .directory .table .set
+syn keyword rexxBuiltinClass .relation .bag .supplier .regularExpressions
+
+" Windows-only classes
+syn keyword rexxBuiltinClass .OLEObject .MenuObject .WindowsClipboard .WindowsEventLog
+syn keyword rexxBuiltinClass .WindowsManager .WindowObject .WindowsProgramManager
+
+
+" ooRexx directives, ---rgf location important, otherwise directives in top of
+" file not matched!
+syn region rexxClass start="::\s*class\s*"ms=e+1 end="\ze\(\s\|;\|$\)"
+syn region rexxMethod start="::\s*method\s*"ms=e+1 end="\ze\(\s\|;\|$\)"
+syn region rexxRequires start="::\s*requires\s*"ms=e+1 end="\ze\(\s\|;\|$\)"
+syn region rexxRoutine start="::\s*routine\s*"ms=e+1 end="\ze\(\s\|;\|$\)"
+
+syn region rexxDirective start="\(^\|;\)\s*::\s*\w\+" end="\($\|;\)" contains=rexxString,rexxComment,rexxLineComment,rexxClass,rexxMethod,rexxRoutine,rexxRequires keepend
+
+
if !exists("rexx_minlines")
- let rexx_minlines = 10
+" let rexx_minlines = 10
+ let rexx_minlines = 500
endif
exec "syn sync ccomment rexxComment minlines=" . rexx_minlines
@@ -90,7 +155,7 @@ if version >= 508 || !exists("did_rexx_syn_inits")
command -nargs=+ HiLink hi def link <args>
endif
- HiLink rexxUserLabel Function
+ HiLink rexxLabel Function
HiLink rexxCharacter Character
HiLink rexxParenError rexxError
HiLink rexxInParen rexxError
@@ -105,6 +170,34 @@ if version >= 508 || !exists("did_rexx_syn_inits")
HiLink rexxSpecialVariable Special
HiLink rexxConditional rexxKeyword
+ HiLink rexxOperator Operator
+ HiLink rexxMessageOperator rexxOperator
+ HiLink rexxLineComment RexxComment
+
+ HiLink rexxLineContinue WildMenu
+
+ HiLink rexxDirective rexxKeyword
+ HiLink rexxClass Type
+ HiLink rexxMethod rexxFunction
+ HiLink rexxRequires Include
+ HiLink rexxRoutine rexxFunction
+
+ HiLink rexxConst Constant
+ HiLink rexxTypeSpecifier Type
+ HiLink rexxBuiltinClass rexxTypeSpecifier
+
+ HiLink rexxEnvironmentSymbol rexxConst
+ HiLink rexxMessage rexxFunction
+
+ HiLink rexxParse rexxKeyword
+ HiLink rexxParse2 rexxParse
+
+ HiLink rexxRaise rexxKeyword
+ HiLink rexxRaise2 rexxRaise
+
+ HiLink rexxForward rexxKeyword
+ HiLink rexxForward2 rexxForward
+
delcommand HiLink
endif
diff --git a/runtime/syntax/xml.vim b/runtime/syntax/xml.vim
index 288ea54aa..8f8e15590 100644
--- a/runtime/syntax/xml.vim
+++ b/runtime/syntax/xml.vim
@@ -58,8 +58,8 @@ syn match xmlError "[<&]"
"
" <tag foo.attribute = "value">
" ^^^^^^^
-syn region xmlString contained start=+"+ end=+"+ contains=xmlEntity display
-syn region xmlString contained start=+'+ end=+'+ contains=xmlEntity display
+syn region xmlString contained start=+"+ end=+"+ contains=xmlEntity,@Spell display
+syn region xmlString contained start=+'+ end=+'+ contains=xmlEntity,@Spell display
" punctuation (within attributes) e.g. <tag xml:foo.attribute ...>
@@ -183,7 +183,7 @@ if exists('g:xml_syntax_folding')
\ end=+</\z1\_\s\{-}>+
\ matchgroup=xmlEndTag end=+/>+
\ fold
- \ contains=xmlTag,xmlEndTag,xmlCdata,xmlRegion,xmlComment,xmlEntity,xmlProcessing,@xmlRegionHook
+ \ contains=xmlTag,xmlEndTag,xmlCdata,xmlRegion,xmlComment,xmlEntity,xmlProcessing,@xmlRegionHook,@Spell
\ keepend
\ extend
@@ -239,7 +239,7 @@ syn region xmlCommentPart
\ start=+--+
\ end=+--+
\ contained
- \ contains=xmlTodo,@xmlCommentHook
+ \ contains=xmlTodo,@xmlCommentHook,@Spell
" CData sections
@@ -249,7 +249,7 @@ syn region xmlCommentPart
syn region xmlCdata
\ start=+<!\[CDATA\[+
\ end=+]]>+
- \ contains=xmlCdataStart,xmlCdataEnd,@xmlCdataHook
+ \ contains=xmlCdataStart,xmlCdataEnd,@xmlCdataHook,@Spell
\ keepend
\ extend
diff --git a/src/Make_vms.mms b/src/Make_vms.mms
index 557cb6da4..895b7bc98 100644
--- a/src/Make_vms.mms
+++ b/src/Make_vms.mms
@@ -2,7 +2,7 @@
# Makefile for Vim on OpenVMS
#
# Maintainer: Zoltan Arpadffy <arpadffy@polarhome.com>
-# Last change: 2006 Mar 31
+# Last change: 2006 Apr 11
#
# This has script been tested on VMS 6.2 to 8.2 on DEC Alpha, VAX and IA64
# with MMS and MMK
@@ -44,6 +44,7 @@ MODEL = BIG
# GUI or terminal mode executable.
# Comment out if you want just the character terminal mode only.
+# GUI with Motif
GUI = YES
# GUI with GTK
@@ -136,12 +137,24 @@ VIMRUN = ""
CONFIG_H = os_vms_conf.h
+# GTK or XPM but not both
.IFDEF GTK
.IFDEF GUI
+.ELSE
+GUI = YES
+.ENDIF
.IFDEF XPM
+XPM = ""
+.ENDIF
+.ENDIF
+
+.IFDEF XPM
+.IFDEF GUI
.ELSE
GUI = YES
.ENDIF
+.IFDEF GTK
+GTK = ""
.ENDIF
.ENDIF
diff --git a/src/dosinst.h b/src/dosinst.h
index 485e7cd71..455d2a61d 100644
--- a/src/dosinst.h
+++ b/src/dosinst.h
@@ -207,6 +207,14 @@ searchpath_save(char *name)
}
#ifdef WIN3264
+
+#ifndef CSIDL_COMMON_PROGRAMS
+# define CSIDL_COMMON_PROGRAMS 0x0017
+#endif
+#ifndef CSIDL_COMMON_DESKTOPDIRECTORY
+# define CSIDL_COMMON_DESKTOPDIRECTORY 0x0019
+#endif
+
/*
* Get the path to a requested Windows shell folder.
*
@@ -234,22 +242,14 @@ get_shell_folder_path(
if (strcmp(shell_folder_name, "desktop") == 0)
{
pcsidl = &desktop_csidl;
-#ifdef CSIDL_COMMON_DESKTOPDIRECTORY
csidl = CSIDL_COMMON_DESKTOPDIRECTORY;
alt_csidl = CSIDL_DESKTOP;
-#else
- csidl = CSIDL_DESKTOP;
-#endif
}
else if (strncmp(shell_folder_name, "Programs", 8) == 0)
{
pcsidl = &programs_csidl;
-#ifdef CSIDL_COMMON_PROGRAMS
csidl = CSIDL_COMMON_PROGRAMS;
alt_csidl = CSIDL_PROGRAMS;
-#else
- csidl = CSIDL_PROGRAMS;
-#endif
}
else
{
diff --git a/src/edit.c b/src/edit.c
index 08a24d7e7..f2a5cdacd 100644
--- a/src/edit.c
+++ b/src/edit.c
@@ -2969,6 +2969,9 @@ ins_compl_bs()
ins_compl_set_original_text(compl_leader);
else
{
+#ifdef FEAT_SPELL
+ spell_bad_len = 0; /* need to redetect bad word */
+#endif
/* Matches were cleared, need to search for them now. */
if (ins_complete(Ctrl_N) == FAIL)
compl_cont_status = 0;
diff --git a/src/eval.c b/src/eval.c
index 1b75201f8..45efab72c 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -16208,7 +16208,7 @@ var2fpos(varp, lnum, fnum)
return NULL;
len = (long)STRLEN(ml_get(pos.lnum));
/* Accept a position up to the NUL after the line. */
- if (pos.col <= 0 || (int)pos.col > len + 1)
+ if (pos.col == 0 || (int)pos.col > len + 1)
return NULL; /* invalid column number */
--pos.col;
diff --git a/src/ex_cmds.c b/src/ex_cmds.c
index 9206e0288..9ba3e8141 100644
--- a/src/ex_cmds.c
+++ b/src/ex_cmds.c
@@ -261,18 +261,23 @@ linelen(has_tab)
return len;
}
-/* Buffer for one line used during sorting. It's allocated to contain the
- * longest line being sorted. */
-static char_u *sortbuf;
+/* Buffer for two lines used during sorting. They are allocated to
+ * contain the longest line being sorted. */
+static char_u *sortbuf1;
+static char_u *sortbuf2;
static int sort_ic; /* ignore case */
static int sort_nr; /* sort on number */
+static int sort_rx; /* sort on regex instead of skipping it */
+
+static int sort_abort; /* flag to indicate if sorting has been interrupted */
/* Struct to store info to be sorted. */
typedef struct
{
linenr_T lnum; /* line number */
- long col_nr; /* column number or number */
+ long start_col_nr; /* starting column number or number */
+ long end_col_nr; /* ending column number */
} sorti_T;
static int
@@ -291,18 +296,35 @@ sort_compare(s1, s2)
{
sorti_T l1 = *(sorti_T *)s1;
sorti_T l2 = *(sorti_T *)s2;
- char_u *s;
+ int result = 0;
- /* When sorting numbers "col_nr" is the number, not the column number. */
- if (sort_nr)
- return l1.col_nr - l2.col_nr;
+ /* If the user interrupts, there's no way to stop qsort() immediately, but
+ * if we return 0 every time, qsort will assume it's done sorting and exit */
+ if (sort_abort)
+ return 0;
+ fast_breakcheck();
+ if (got_int)
+ sort_abort = TRUE;
- /* We need to copy one line into "sortbuf", because there is no guarantee
- * that the first pointer becomes invalid when obtaining the second one. */
- STRCPY(sortbuf, ml_get(l1.lnum) + l1.col_nr);
- s = ml_get(l2.lnum) + l2.col_nr;
+ /* When sorting numbers "start_col_nr" is the number, not the column number. */
+ if (sort_nr)
+ result = l1.start_col_nr - l2.start_col_nr;
+ else
+ {
+ /* We need to copy one line into "sortbuf1", because there is no guarantee
+ * that the first pointer becomes invalid when obtaining the second one. */
+ STRNCPY(sortbuf1, ml_get(l1.lnum) + l1.start_col_nr, l1.end_col_nr - l1.start_col_nr + 1);
+ sortbuf1[l1.end_col_nr - l1.start_col_nr] = 0;
+ STRNCPY(sortbuf2, ml_get(l2.lnum) + l2.start_col_nr, l2.end_col_nr - l2.start_col_nr + 1);
+ sortbuf2[l2.end_col_nr - l2.start_col_nr] = 0;
- return sort_ic ? STRICMP(sortbuf, s) : STRCMP(sortbuf, s);
+ result = sort_ic ? STRICMP(sortbuf1, sortbuf2) : STRCMP(sortbuf1, sortbuf2);
+ }
+ /* If the two lines have the same value, preserve the original line order */
+ if (result == 0)
+ return (int) (l1.lnum - l2.lnum);
+ else
+ return result;
}
/*
@@ -321,21 +343,25 @@ ex_sort(eap)
size_t i;
char_u *p;
char_u *s;
+ char_u *s2;
+ char_u c; /* temporary character storage */
int unique = FALSE;
long deleted;
- colnr_T col;
+ colnr_T start_col;
+ colnr_T end_col;
int sort_oct; /* sort on octal number */
int sort_hex; /* sort on hex number */
if (u_save((linenr_T)(eap->line1 - 1), (linenr_T)(eap->line2 + 1)) == FAIL)
return;
- sortbuf = NULL;
+ sortbuf1 = NULL;
+ sortbuf2 = NULL;
regmatch.regprog = NULL;
nrs = (sorti_T *)lalloc((long_u)(count * sizeof(sorti_T)), TRUE);
if (nrs == NULL)
- goto theend;
+ goto sortend;
- sort_ic = sort_nr = sort_oct = sort_hex = 0;
+ sort_abort = sort_ic = sort_rx = sort_nr = sort_oct = sort_hex = 0;
for (p = eap->arg; *p != NUL; ++p)
{
@@ -343,6 +369,8 @@ ex_sort(eap)
;
else if (*p == 'i')
sort_ic = TRUE;
+ else if (*p == 'r')
+ sort_rx = TRUE;
else if (*p == 'n')
sort_nr = 2;
else if (*p == 'o')
@@ -364,19 +392,19 @@ ex_sort(eap)
if (*s != *p)
{
EMSG(_(e_invalpat));
- goto theend;
+ goto sortend;
}
*s = NUL;
regmatch.regprog = vim_regcomp(p + 1, RE_MAGIC);
if (regmatch.regprog == NULL)
- goto theend;
+ goto sortend;
p = s; /* continue after the regexp */
regmatch.rm_ic = p_ic;
}
else
{
EMSG2(_(e_invarg2), p);
- goto theend;
+ goto sortend;
}
}
@@ -384,7 +412,7 @@ ex_sort(eap)
if (sort_nr + sort_oct + sort_hex > 2)
{
EMSG(_(e_invarg));
- goto theend;
+ goto sortend;
}
/* From here on "sort_nr" is used as a flag for any number sorting. */
@@ -393,9 +421,9 @@ ex_sort(eap)
/*
* Make an array with all line numbers. This avoids having to copy all
* the lines into allocated memory.
- * When sorting on strings "col_nr" is de offset in the line, for numbers
- * sorting it's the number to sort on. This means the pattern matching
- * and number conversion only has to be done once per line.
+ * When sorting on strings "start_col_nr" is the offset in the line, for
+ * numbers sorting it's the number to sort on. This means the pattern
+ * matching and number conversion only has to be done once per line.
* Also get the longest line length for allocating "sortbuf".
*/
for (lnum = eap->line1; lnum <= eap->line2; ++lnum)
@@ -405,57 +433,83 @@ ex_sort(eap)
if (maxlen < len)
maxlen = len;
+ start_col = 0;
+ end_col = len;
if (regmatch.regprog != NULL && vim_regexec(&regmatch, s, 0))
- col = regmatch.endp[0] - s;
+ {
+ if (sort_rx)
+ {
+ start_col = regmatch.startp[0] - s;
+ end_col = regmatch.endp[0] - s;
+ }
+ else
+ start_col = regmatch.endp[0] - s;
+ }
else
- col = 0;
+ if (regmatch.regprog != NULL)
+ end_col = 0;
if (sort_nr)
{
+ /* Make sure vim_str2nr doesn't read any digits past the end
+ * of the match, by temporarily terminating the string there */
+ s2 = s + end_col;
+ c = *s2;
+ (*s2) = 0;
/* Sorting on number: Store the number itself. */
if (sort_hex)
- s = skiptohex(s + col);
+ s = skiptohex(s + start_col);
else
- s = skiptodigit(s + col);
+ s = skiptodigit(s + start_col);
vim_str2nr(s, NULL, NULL, sort_oct, sort_hex,
- &nrs[lnum - eap->line1].col_nr, NULL);
+ &nrs[lnum - eap->line1].start_col_nr, NULL);
+ (*s2) = c;
}
else
+ {
/* Store the column to sort at. */
- nrs[lnum - eap->line1].col_nr = col;
+ nrs[lnum - eap->line1].start_col_nr = start_col;
+ nrs[lnum - eap->line1].end_col_nr = end_col;
+ }
nrs[lnum - eap->line1].lnum = lnum;
if (regmatch.regprog != NULL)
fast_breakcheck();
if (got_int)
- goto theend;
+ goto sortend;
}
/* Allocate a buffer that can hold the longest line. */
- sortbuf = alloc((unsigned)maxlen + 1);
- if (sortbuf == NULL)
- goto theend;
+ sortbuf1 = alloc((unsigned)maxlen + 1);
+ if (sortbuf1 == NULL)
+ goto sortend;
+ sortbuf2 = alloc((unsigned)maxlen + 1);
+ if (sortbuf2 == NULL)
+ goto sortend;
/* Sort the array of line numbers. Note: can't be interrupted! */
qsort((void *)nrs, count, sizeof(sorti_T), sort_compare);
+ if (sort_abort)
+ goto sortend;
+
/* Insert the lines in the sorted order below the last one. */
lnum = eap->line2;
for (i = 0; i < count; ++i)
{
s = ml_get(nrs[eap->forceit ? count - i - 1 : i].lnum);
if (!unique || i == 0
- || (sort_ic ? STRICMP(s, sortbuf) : STRCMP(s, sortbuf)) != 0)
+ || (sort_ic ? STRICMP(s, sortbuf1) : STRCMP(s, sortbuf1)) != 0)
{
if (ml_append(lnum++, s, (colnr_T)0, FALSE) == FAIL)
break;
if (unique)
- STRCPY(sortbuf, s);
+ STRCPY(sortbuf1, s);
}
fast_breakcheck();
if (got_int)
- goto theend;
+ goto sortend;
}
/* delete the original lines if appending worked */
@@ -476,9 +530,10 @@ ex_sort(eap)
curwin->w_cursor.lnum = eap->line1;
beginline(BL_WHITE | BL_FIX);
-theend:
+sortend:
vim_free(nrs);
- vim_free(sortbuf);
+ vim_free(sortbuf1);
+ vim_free(sortbuf2);
vim_free(regmatch.regprog);
if (got_int)
EMSG(_(e_interr));
diff --git a/src/option.c b/src/option.c
index 0a4d9c7dd..d24b2cd9a 100644
--- a/src/option.c
+++ b/src/option.c
@@ -10252,7 +10252,7 @@ vimrc_found(fname, envname)
char_u *envname;
{
int opt_idx;
- int dofree;
+ int dofree = FALSE;
char_u *p;
if (!option_was_set((char_u *)"cp"))
diff --git a/src/os_mac_rsrc/doc-txt.icns b/src/os_mac_rsrc/doc-txt.icns
index 124a7303a..2219e2ce9 100644
--- a/src/os_mac_rsrc/doc-txt.icns
+++ b/src/os_mac_rsrc/doc-txt.icns
Binary files differ
diff --git a/src/screen.c b/src/screen.c
index b82bd9831..d371ed9fe 100644
--- a/src/screen.c
+++ b/src/screen.c
@@ -231,7 +231,15 @@ redraw_win_later(wp, type)
redraw_later_clear()
{
redraw_all_later(CLEAR);
- screen_attr = HL_BOLD | HL_UNDERLINE;
+#ifdef FEAT_GUI
+ if (gui.in_use)
+ /* Use a code that will reset gui.highlight_mask in
+ * gui_stop_highlight(). */
+ screen_attr = HL_ALL + 1;
+ else
+#endif
+ /* Use attributes that is very unlikely to appear in text. */
+ screen_attr = HL_BOLD | HL_UNDERLINE | HL_INVERSE;
}
/*
diff --git a/src/testdir/test57.in b/src/testdir/test57.in
index 7e70169ce..d74af5791 100644
--- a/src/testdir/test57.in
+++ b/src/testdir/test57.in
@@ -3,50 +3,494 @@ Tests for :sort command. vim: set ft=vim :
STARTTEST
:so small.vim
:"
-:/^t1:/+1,/^t2/-1sort
-:/^t2:/+1,/^t3/-1sort u
-:/^t3:/+1,/^t4/-1sort u /[^:]*:/
-:/^t4:/+1,/^t5/-1sort n
-:/^t5:/+1,/^t6/-1sort n -[^:]*:-
-:/^t6:/+1,/^t7/-1sort o
-:/^t7:/+1,/^t8/-1sort x ,.*/,
-:/^t8:/+1,/^t9/-1sort n o
-:/^t1:/,$wq! test.out
+:/^t01:/+1,/^t02/-1sort
+:/^t02:/+1,/^t03/-1sort n
+:/^t03:/+1,/^t04/-1sort x
+:/^t04:/+1,/^t05/-1sort u
+:/^t05:/+1,/^t06/-1sort!
+:/^t06:/+1,/^t07/-1sort! n
+:/^t07:/+1,/^t08/-1sort! u
+:/^t08:/+1,/^t09/-1sort o
+:/^t09:/+1,/^t10/-1sort! x
+:/^t10:/+1,/^t11/-1sort/./
+:/^t11:/+1,/^t12/-1sort/../
+:/^t12:/+1,/^t13/-1sort/../u
+:/^t13:/+1,/^t14/-1sort/./n
+:/^t14:/+1,/^t15/-1sort/./r
+:/^t15:/+1,/^t16/-1sort/../r
+:/^t16:/+1,/^t17/-1sort/./rn
+:/^t17:/+1,/^t18/-1sort/\d/
+:/^t18:/+1,/^t19/-1sort/\d/r
+:/^t19:/+1,/^t20/-1sort/\d/n
+:/^t20:/+1,/^t21/-1sort/\d/rn
+:/^t21:/+1,/^t22/-1sort/\d\d/
+:/^t22:/+1,/^t23/-1sort/\d\d/n
+:/^t23:/+1,/^t24/-1sort/\d\d/x
+:/^t24:/+1,/^t25/-1sort/\d\d/r
+:/^t25:/+1,/^t26/-1sort/\d\d/rn
+:/^t26:/+1,/^t27/-1sort/\d\d/rx
+:/^t27:/+1,/^t28/-1sort no
+:/^t01:/,$wq! test.out
ENDTEST
-t1: alphabetical
-two test
-One test
-one test
-Two test
-t2: alpha, unique
-One test
-one test
-Two test
-one test
-Two test
-t3: alpha, unique, skip pattern
-one: xay
-two: aaa
-another: tuvy
-t4: number
-asdf 83 asd
-one 333
-xce 9
-t5: number and skip
-asdf 3 a: sd 11
-one 33:4 99
-:9
-t6: octal
-2389
-111
-asdf 0014
-t7: hex and skip
-sf/0x1d3
-0x44/1a1
-asd/ad 1413
-t8: wrong arguments
-ccc
-bbb
-aaa
-t8:
+t01: alphebetical
+abc
+ab
+a
+a321
+a123
+a122
+b321
+b123
+c123d
+ 123b
+c321d
+b322b
+b321
+b321b
+
+
+t02: numeric
+abc
+ab
+a
+a321
+a123
+a122
+b321
+b123
+c123d
+ 123b
+c321d
+b322b
+b321
+b321b
+
+
+t03: hexadecimal
+abc
+ab
+a
+a321
+a123
+a122
+b321
+b123
+c123d
+ 123b
+c321d
+b322b
+b321
+b321b
+
+
+t04: alpha, unique
+abc
+ab
+a
+a321
+a123
+a122
+b321
+b123
+c123d
+ 123b
+c321d
+b322b
+b321
+b321b
+
+
+t05: alpha, reverse
+abc
+ab
+a
+a321
+a123
+a122
+b321
+b123
+c123d
+ 123b
+c321d
+b322b
+b321
+b321b
+
+
+t06: numeric, reverse
+abc
+ab
+a
+a321
+a123
+a122
+b321
+b123
+c123d
+ 123b
+c321d
+b322b
+b321
+b321b
+
+
+t07: unique, reverse
+abc
+ab
+a
+a321
+a123
+a122
+b321
+b123
+c123d
+ 123b
+c321d
+b322b
+b321
+b321b
+
+
+t08: octal
+abc
+ab
+a
+a321
+a123
+a122
+b321
+b123
+c123d
+ 123b
+c321d
+b322b
+b321
+b321b
+
+
+t09: reverse, hexadecimal
+abc
+ab
+a
+a321
+a123
+a122
+b321
+b123
+c123d
+ 123b
+c321d
+b322b
+b321
+b321b
+
+
+t10: alpha, skip first character
+abc
+ab
+a
+a321
+a123
+a122
+b321
+b123
+c123d
+ 123b
+c321d
+b322b
+b321
+b321b
+
+
+t11: alpha, skip first 2 characters
+abc
+ab
+a
+a321
+a123
+a122
+b321
+b123
+c123d
+ 123b
+c321d
+b322b
+b321
+b321b
+
+
+t12: alpha, unique, skip first 2 characters
+abc
+ab
+a
+a321
+a123
+a122
+b321
+b123
+c123d
+ 123b
+c321d
+b322b
+b321
+b321b
+
+
+t13: numeric, skip first character
+abc
+ab
+a
+a321
+a123
+a122
+b321
+b123
+c123d
+ 123b
+c321d
+b322b
+b321
+b321b
+
+
+t14: alpha, sort on first character
+abc
+ab
+a
+a321
+a123
+a122
+b321
+b123
+c123d
+ 123b
+c321d
+b322b
+b321
+b321b
+
+
+t15: alpha, sort on first 2 characters
+abc
+ab
+a
+a321
+a123
+a122
+b321
+b123
+c123d
+ 123b
+c321d
+b322b
+b321
+b321b
+
+
+t16: numeric, sort on first character
+abc
+ab
+a
+a321
+a123
+a122
+b321
+b123
+c123d
+ 123b
+c321d
+b322b
+b321
+b321b
+
+
+t17: alpha, skip past first digit
+abc
+ab
+a
+a321
+a123
+a122
+b321
+b123
+c123d
+ 123b
+c321d
+b322b
+b321
+b321b
+
+
+t18: alpha, sort on first digit
+abc
+ab
+a
+a321
+a123
+a122
+b321
+b123
+c123d
+ 123b
+c321d
+b322b
+b321
+b321b
+
+
+t19: numeric, skip past first digit
+abc
+ab
+a
+a321
+a123
+a122
+b321
+b123
+c123d
+ 123b
+c321d
+b322b
+b321
+b321b
+
+
+t20: numeric, sort on first digit
+abc
+ab
+a
+a321
+a123
+a122
+b321
+b123
+c123d
+ 123b
+c321d
+b322b
+b321
+b321b
+
+
+t21: alpha, skip past first 2 digits
+abc
+ab
+a
+a321
+a123
+a122
+b321
+b123
+c123d
+ 123b
+c321d
+b322b
+b321
+b321b
+
+
+t22: numeric, skip past first 2 digits
+abc
+ab
+a
+a321
+a123
+a122
+b321
+b123
+c123d
+ 123b
+c321d
+b322b
+b321
+b321b
+
+
+t23: hexadecimal, skip past first 2 digits
+abc
+ab
+a
+a321
+a123
+a122
+b321
+b123
+c123d
+ 123b
+c321d
+b322b
+b321
+b321b
+
+
+t24: alpha, sort on first 2 digits
+abc
+ab
+a
+a321
+a123
+a122
+b321
+b123
+c123d
+ 123b
+c321d
+b322b
+b321
+b321b
+
+
+t25: numeric, sort on first 2 digits
+abc
+ab
+a
+a321
+a123
+a122
+b321
+b123
+c123d
+ 123b
+c321d
+b322b
+b321
+b321b
+
+
+t26: hexadecimal, sort on first 2 digits
+abc
+ab
+a
+a321
+a123
+a122
+b321
+b123
+c123d
+ 123b
+c321d
+b322b
+b321
+b321b
+
+
+t27: wrong arguments
+abc
+ab
+a
+a321
+a123
+a122
+b321
+b123
+c123d
+ 123b
+c321d
+b322b
+b321
+b321b
+
+
+t28: done
+
diff --git a/src/testdir/test57.ok b/src/testdir/test57.ok
index 69b98625d..177713342 100644
--- a/src/testdir/test57.ok
+++ b/src/testdir/test57.ok
@@ -1,35 +1,455 @@
-t1: alphabetical
-One test
-Two test
-one test
-two test
-t2: alpha, unique
-One test
-Two test
-Two test
-one test
-t3: alpha, unique, skip pattern
-two: aaa
-another: tuvy
-one: xay
-t4: number
-xce 9
-asdf 83 asd
-one 333
-t5: number and skip
-one 33:4 99
-:9
-asdf 3 a: sd 11
-t6: octal
-asdf 0014
-2389
-111
-t7: hex and skip
-asd/ad 1413
-0x44/1a1
-sf/0x1d3
-t8: wrong arguments
-ccc
-bbb
-aaa
-t8:
+t01: alphebetical
+
+
+ 123b
+a
+a122
+a123
+a321
+ab
+abc
+b123
+b321
+b321
+b321b
+b322b
+c123d
+c321d
+t02: numeric
+abc
+ab
+a
+
+
+a122
+a123
+b123
+c123d
+ 123b
+a321
+b321
+c321d
+b321
+b321b
+b322b
+t03: hexadecimal
+
+
+a
+ab
+abc
+ 123b
+a122
+a123
+a321
+b123
+b321
+b321
+b321b
+b322b
+c123d
+c321d
+t04: alpha, unique
+
+ 123b
+a
+a122
+a123
+a321
+ab
+abc
+b123
+b321
+b321b
+b322b
+c123d
+c321d
+t05: alpha, reverse
+c321d
+c123d
+b322b
+b321b
+b321
+b321
+b123
+abc
+ab
+a321
+a123
+a122
+a
+ 123b
+
+
+t06: numeric, reverse
+b322b
+b321b
+b321
+c321d
+b321
+a321
+ 123b
+c123d
+b123
+a123
+a122
+
+
+a
+ab
+abc
+t07: unique, reverse
+c321d
+c123d
+b322b
+b321b
+b321
+b123
+abc
+ab
+a321
+a123
+a122
+a
+ 123b
+
+t08: octal
+abc
+ab
+a
+
+
+a122
+a123
+b123
+c123d
+ 123b
+a321
+b321
+c321d
+b321
+b321b
+b322b
+t09: reverse, hexadecimal
+c321d
+c123d
+b322b
+b321b
+b321
+b321
+b123
+a321
+a123
+a122
+ 123b
+abc
+ab
+a
+
+
+t10: alpha, skip first character
+a
+
+
+a122
+a123
+b123
+ 123b
+c123d
+a321
+b321
+b321
+b321b
+c321d
+b322b
+ab
+abc
+t11: alpha, skip first 2 characters
+ab
+a
+
+
+a321
+b321
+b321
+b321b
+c321d
+a122
+b322b
+a123
+b123
+ 123b
+c123d
+abc
+t12: alpha, unique, skip first 2 characters
+ab
+a
+
+a321
+b321
+b321b
+c321d
+a122
+b322b
+a123
+b123
+ 123b
+c123d
+abc
+t13: numeric, skip first character
+abc
+ab
+a
+
+
+a122
+a123
+b123
+c123d
+ 123b
+a321
+b321
+c321d
+b321
+b321b
+b322b
+t14: alpha, sort on first character
+
+
+ 123b
+abc
+ab
+a
+a321
+a123
+a122
+b321
+b123
+b322b
+b321
+b321b
+c123d
+c321d
+t15: alpha, sort on first 2 characters
+a
+
+
+ 123b
+a123
+a122
+a321
+abc
+ab
+b123
+b321
+b322b
+b321
+b321b
+c123d
+c321d
+t16: numeric, sort on first character
+abc
+ab
+a
+a321
+a123
+a122
+b321
+b123
+c123d
+ 123b
+c321d
+b322b
+b321
+b321b
+
+
+t17: alpha, skip past first digit
+abc
+ab
+a
+
+
+a321
+b321
+b321
+b321b
+c321d
+a122
+b322b
+a123
+b123
+ 123b
+c123d
+t18: alpha, sort on first digit
+abc
+ab
+a
+
+
+a123
+a122
+b123
+c123d
+ 123b
+a321
+b321
+c321d
+b322b
+b321
+b321b
+t19: numeric, skip past first digit
+abc
+ab
+a
+
+
+a321
+b321
+c321d
+b321
+b321b
+a122
+b322b
+a123
+b123
+c123d
+ 123b
+t20: numeric, sort on first digit
+abc
+ab
+a
+
+
+a123
+a122
+b123
+c123d
+ 123b
+a321
+b321
+c321d
+b322b
+b321
+b321b
+t21: alpha, skip past first 2 digits
+abc
+ab
+a
+
+
+a321
+b321
+b321
+b321b
+c321d
+a122
+b322b
+a123
+b123
+ 123b
+c123d
+t22: numeric, skip past first 2 digits
+abc
+ab
+a
+
+
+a321
+b321
+c321d
+b321
+b321b
+a122
+b322b
+a123
+b123
+c123d
+ 123b
+t23: hexadecimal, skip past first 2 digits
+abc
+ab
+a
+
+
+a321
+b321
+b321
+a122
+a123
+b123
+b321b
+c321d
+b322b
+ 123b
+c123d
+t24: alpha, sort on first 2 digits
+abc
+ab
+a
+
+
+a123
+a122
+b123
+c123d
+ 123b
+a321
+b321
+c321d
+b322b
+b321
+b321b
+t25: numeric, sort on first 2 digits
+abc
+ab
+a
+
+
+a123
+a122
+b123
+c123d
+ 123b
+a321
+b321
+c321d
+b322b
+b321
+b321b
+t26: hexadecimal, sort on first 2 digits
+abc
+ab
+a
+
+
+a123
+a122
+b123
+c123d
+ 123b
+a321
+b321
+c321d
+b322b
+b321
+b321b
+t27: wrong arguments
+abc
+ab
+a
+a321
+a123
+a122
+b321
+b123
+c123d
+ 123b
+c321d
+b322b
+b321
+b321b
+
+
+t28: done
+
diff --git a/src/version.h b/src/version.h
index 9358164f3..4b7c05ae5 100644
--- a/src/version.h
+++ b/src/version.h
@@ -35,6 +35,6 @@
*/
#define VIM_VERSION_NODOT "vim70d"
#define VIM_VERSION_SHORT "7.0d"
-#define VIM_VERSION_MEDIUM "7.0d BETA"
-#define VIM_VERSION_LONG "VIM - Vi IMproved 7.0d BETA (2006 Apr 10)"
-#define VIM_VERSION_LONG_DATE "VIM - Vi IMproved 7.0d BETA (2006 Apr 10, compiled "
+#define VIM_VERSION_MEDIUM "7.0d01 BETA"
+#define VIM_VERSION_LONG "VIM - Vi IMproved 7.0d01 BETA (2006 Apr 11)"
+#define VIM_VERSION_LONG_DATE "VIM - Vi IMproved 7.0d01 BETA (2006 Apr 11, compiled "
diff --git a/src/window.c b/src/window.c
index b401fc1eb..5ee8172e3 100644
--- a/src/window.c
+++ b/src/window.c
@@ -91,6 +91,9 @@ static void win_new_height __ARGS((win_T *, int));
#endif
#if defined(FEAT_WINDOWS) || defined(PROTO)
+
+static char *m_onlyone = N_("Already only one window");
+
/*
* all CTRL-W window commands are handled here, called from normal_cmd().
*/
@@ -330,6 +333,31 @@ newwindow:
break;
#endif
+/* move window to new tab page */
+ case 'T':
+ if (firstwin == lastwin)
+ MSG(_(m_onlyone));
+ else
+ {
+ tabpage_T *oldtab = curtab;
+ tabpage_T *newtab;
+ win_T *wp = curwin;
+
+ /* First create a new tab with the window, then go back to
+ * the old tab and close the window there. */
+ if (win_new_tabpage((int)Prenum) == OK
+ && valid_tabpage(oldtab))
+ {
+ newtab = curtab;
+ goto_tabpage_tp(oldtab);
+ if (curwin == wp)
+ win_close(curwin, FALSE);
+ if (valid_tabpage(newtab))
+ goto_tabpage_tp(newtab);
+ }
+ }
+ break;
+
/* cursor to top-left window */
case 't':
case Ctrl_T:
@@ -1102,6 +1130,7 @@ win_init(newp, oldp)
newp->w_pcmark = oldp->w_pcmark;
newp->w_prev_pcmark = oldp->w_prev_pcmark;
newp->w_alt_fnum = oldp->w_alt_fnum;
+ newp->w_wrow = oldp->w_wrow;
newp->w_fraction = oldp->w_fraction;
newp->w_prev_fraction_row = oldp->w_prev_fraction_row;
#ifdef FEAT_JUMPLIST
@@ -2938,7 +2967,7 @@ close_others(message, forceit)
&& !autocmd_busy
#endif
)
- MSG(_("Already only one window"));
+ MSG(_(m_onlyone));
return;
}
@@ -5153,6 +5182,8 @@ win_new_height(wp, height)
* Will equalize heights soon to fix it. */
if (height < 0)
height = 0;
+ if (wp->w_height == height)
+ return; /* nothing to do */
if (wp->w_wrow != wp->w_prev_fraction_row && wp->w_height > 0)
wp->w_fraction = ((long)wp->w_wrow * FRACTION_MULT