updated for version 7.0d01

This commit is contained in:
Bram Moolenaar
2006-04-11 21:38:50 +00:00
parent 779b74b2a2
commit 4c3f536f47
42 changed files with 2215 additions and 283 deletions

View File

@ -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.

View File

@ -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>

View File

@ -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:

View File

@ -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

View File

@ -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*

View File

@ -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

View File

@ -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)

View File

@ -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)

View File

@ -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 -

View File

@ -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_^*

View File

@ -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.

View File

@ -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:

View File

@ -1,7 +1,7 @@
.\" Traduction Lundi 7 ao<61>t 2000 par Richard Hitier
.\" (richard.hitier@dial.oleane.com)
.\" Mise <20> 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
Ouvre N fen<65>tres c<>te <20> c<>te.
Quand N est omis, ouvre une fen<65>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
<richard.hitier@dial.oleane.com> 2000-08-07.
.br
Cette page de manuel a <20>t<EFBFBD> mise <20> jour par David Blanchet.
<david.blanchet@free.fr> 2005-01-17.
<david.blanchet@free.fr> 2006-04-10.

View File

@ -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.

View File

@ -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

View File

@ -425,4 +425,4 @@ BUGS
2002 Feb 22 VIM(1)
2006 Apr 11 VIM(1)

View File

@ -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*

View File

@ -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()

View File

@ -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

View File

@ -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

View File

@ -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')

View File

@ -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

View File

@ -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>

View File

@ -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

View File

@ -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.

728
runtime/syntax/kconfig.vim Normal file
View File

@ -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

View File

@ -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

View File

@ -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 match ProgressTodo contained "NEED[S]*\s\s*WORK"
syn keyword ProgressFunction procedure function
" 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]\+"
" More values: Logicals, and Progress's unknown value, ?.
syn match ProgressNumber "?"
syn keyword ProgressNumber true false yes no
" If you don't like tabs:
"syn match ProgressShowTab "\t"
"syn match ProgressShowTabc "\t"
syn match ProgressShowTab "\t"
" If you don't like white space on the end of lines:
" syn match ProgressSpaceError "\s\+$"
syn region ProgressComment start="/\*" end="\*/" contains=ProgressComment,ProgressTodo,ProgressDebug
syn match ProgressInclude "^[ ]*[{].*\.i[}]"
syn region ProgressInclude start="^[ ]*[{][^&]" end="[}]" contains=ProgressPreProc,ProgressOperator,ProgressString,ProgressComment
syn region ProgressPreProc start="&" end="\>" contained
syn match ProgressSubstitute "^[ ]*[{].*[^i][}]"
syn match ProgressPreProc "^[ ]*&.*"
syn match ProgressOperator "[!;|)(:.><+*=-]"
" 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

View File

@ -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\)\>"
" Assignments -- a keyword followed by an equal sign becomes a variable
syn match rexxAssign "\<\w\+\s*=\s*" contains=rexxSpecialVariable
" must be after Conditional phrases!
syn match rexxKeyword ".*\<\(then\|else\)\s*\<do\>"
" 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

View File

@ -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

View File

@ -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
.IFDEF XPM
.ELSE
GUI = YES
.ENDIF
.IFDEF XPM
XPM = ""
.ENDIF
.ENDIF
.IFDEF XPM
.IFDEF GUI
.ELSE
GUI = YES
.ENDIF
.IFDEF GTK
GTK = ""
.ENDIF
.ENDIF

View File

@ -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
{

View File

@ -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;

View File

@ -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;

View File

@ -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 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;
/* When sorting numbers "start_col_nr" is the number, not the column number. */
if (sort_nr)
return l1.col_nr - l2.col_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;
/* 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;
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));

View File

@ -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"))

Binary file not shown.

View File

@ -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;
}
/*

View File

@ -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

View File

@ -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

View File

@ -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 "

View File

@ -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