# HG changeset patch # User vimboss # Date 1144791530 0 # Node ID 1cdd2661f34c2aa93ae2f0317194d29d3a43f5be # Parent 6675076019ae7e7444c526b342c91ae2ef6cfaac updated for version 7.0d01 diff --git a/README.txt b/README.txt --- 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 --- 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 " 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 :call ZipBrowseSelect() diff --git a/runtime/doc/change.txt b/runtime/doc/change.txt --- 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 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 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 --- 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 --- 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 "". + |:map-| *E37* *E89* > No write since last change (use ! to override) diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt --- 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 shor 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 --- 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 @@ 2. Usage *zip-usage* *zip-manual* ============================================================================== 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 --- 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 --- 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 Vi *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 @@ 8 Support saving and restoring session 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 --- 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 wo |: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 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 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 --- 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. 2000-08-07. .br Cette page de manuel a été mise à jour par David Blanchet. - 2005-01-17. + 2006-04-10. diff --git a/runtime/doc/vim-fr.UTF-8.1 b/runtime/doc/vim-fr.UTF-8.1 --- 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. 2000-08-07. .br Cette page de manuel a été mise à jour par David Blanchet. - 2005-01-17. + 2006-04-10. diff --git a/runtime/doc/vim.1 b/runtime/doc/vim.1 --- 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 --- 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 --- 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 a 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 --- a/runtime/filetype.vim +++ b/runtime/filetype.vim @@ -1,7 +1,7 @@ " Vim support file to detect file types " " Maintainer: Bram Moolenaar -" 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 " 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 " Zope " dtml (zope dynamic template markup language), pt (zope page template), " cpt (zope form controller page template) -au BufNewFile,BufRead *.dtml,*.pt,*.cpt call 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 --- /dev/null +++ b/runtime/ftplugin/kconfig.vim @@ -0,0 +1,14 @@ +" Vim filetype plugin file +" Maintainer: Nikolai Weibull +" 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 --- a/runtime/ftplugin/ocaml.vim +++ b/runtime/ftplugin/ocaml.vim @@ -4,11 +4,12 @@ " Markus Mottl " Stefano Zacchiroli " 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( vnoremap BUncomOff :'<,'>`dd`< if !hasmapto('Abbrev') - iabbrev ASS (assert false (* XXX *)) + iabbrev ASS (assert (0=1) (* XXX *)) endif endif diff --git a/runtime/indent/html.vim b/runtime/indent/html.vim --- a/runtime/indent/html.vim +++ b/runtime/indent/html.vim @@ -1,8 +1,8 @@ " Description: html indenter " Author: Johannes Zellner " 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,*,<>>,,{,} +setlocal indentkeys=o,O,*,<>>,{,} if exists('g:html_indent_tags') diff --git a/runtime/makemenu.vim b/runtime/makemenu.vim --- a/runtime/makemenu.vim +++ b/runtime/makemenu.vim @@ -1,6 +1,6 @@ " Script to define the syntax menu in synmenu.vim " Maintainer: Bram Moolenaar -" Last Change: 2006 Apr 10 +" Last Change: 2006 Apr 11 " This is used by "make menu" in the src directory. edit :p:h/synmenu.vim @@ -237,6 +237,7 @@ SynMenu HIJK.Java.Java\ Properties:jprop 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 --- a/runtime/synmenu.vim +++ b/runtime/synmenu.vim @@ -213,9 +213,10 @@ an 50.50.440 &Syntax.HIJK.Java.Java\ Pro an 50.50.450 &Syntax.HIJK.JavaScript :cal SetSyn("javascript") an 50.50.460 &Syntax.HIJK.Jess :cal SetSyn("jess") an 50.50.470 &Syntax.HIJK.Jgraph :cal SetSyn("jgraph") -an 50.50.490 &Syntax.HIJK.KDE\ script :cal SetSyn("kscript") -an 50.50.500 &Syntax.HIJK.Kimwitu++ :cal SetSyn("kwt") -an 50.50.510 &Syntax.HIJK.KixTart :cal SetSyn("kix") +an 50.50.490 &Syntax.HIJK.Kconfig :cal SetSyn("kconfig") +an 50.50.500 &Syntax.HIJK.KDE\ script :cal SetSyn("kscript") +an 50.50.510 &Syntax.HIJK.Kimwitu++ :cal SetSyn("kwt") +an 50.50.520 &Syntax.HIJK.KixTart :cal SetSyn("kix") an 50.60.100 &Syntax.L-Ma.Lace :cal SetSyn("lace") an 50.60.110 &Syntax.L-Ma.LamdaProlog :cal SetSyn("lprolog") an 50.60.120 &Syntax.L-Ma.Latte :cal SetSyn("latte") diff --git a/runtime/syntax/cl.vim b/runtime/syntax/cl.vim --- 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 -" Last update: Wed May 2 10:30:30 EST 2001 +" Maintainer: Philip Uren - 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 "\" syn match clifError "\" syn match clifError "\" +syn match clSpaceError "\s\+$" + " If and while regions syn region clLoop transparent matchgroup=clWhile start="\" matchgroup=clWhile end="\" contains=ALLBUT,clBreak,clProcedure syn region clIf transparent matchgroup=clConditional start="\" matchgroup=clConditional end="\" 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_syn 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 --- 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 as Comment. -syn region dtdComment start=++ contains=dtdTodo +syn region dtdComment start=++ 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 --- /dev/null +++ b/runtime/syntax/kconfig.vim @@ -0,0 +1,728 @@ +" Vim syntax file +" Maintainer: Nikolai Weibull +" 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 --- a/runtime/syntax/ocaml.vim +++ b/runtime/syntax/ocaml.vim @@ -5,9 +5,9 @@ " Karl-Heinz Sylla " Issac Trotts " 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 --- 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 -" Contributors: Chris Ruprecht -" Philip Uren +" Maintainer: Philip Uren Remove "SPAX" spam block +" Contributors: Chris Ruprecht " Mikhail Kuperblum -" URL: http://www.zeta.org.au/~philu/vim/progress.vim -" Last Change: Thu May 3 08:49:47 EST 2001 +" John Florian +" 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 "\" syn region ProgressDoBlock transparent matchgroup=ProgressDo start="\" matchgroup=ProgressDo end="\" contains=ALLBUT,ProgressProcedure,ProgressFunction syn region ProgressForBlock transparent matchgroup=ProgressFor start="\" matchgroup=ProgressFor end="\" contains=ALLBUT,ProgressProcedure,ProgressFunction syn region ProgressRepeatBlock transparent matchgroup=ProgressRepeat start="\" matchgroup=ProgressRepeat end="\" contains=ALLBUT,ProgressProcedure,ProgressFunction -syn region ProgressCaseBlock transparent matchgroup=ProgressCase start="\" matchgroup=ProgressCase end="\" contains=ALLBUT,ProgressProcedure,ProgressFunction +syn region ProgressCaseBlock transparent matchgroup=ProgressCase start="\" matchgroup=ProgressCase 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 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 rep 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-labe 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_progre 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 --- a/runtime/syntax/rexx.vim +++ b/runtime/syntax/rexx.vim @@ -1,11 +1,15 @@ " Vim syntax file " Language: Rexx " Maintainer: Thomas Geulig -" Last Change: 2001 May 2 -" URL: http://mywebpage.netscape.com/sharpPeople/vim/syntax/rexx.vim +" Last Change: 2005 Dez 9, added some -coloring, +" line comments, do *over*, messages, directives, +" highlighting classes, methods, routines and requires +" Rony G. Flatscher " -" Special Thanks to Dan Sharp for comments and additions -" (and providing the webspace) +" URL: http://www.geulig.de/vim/rexx.vim +" +" Special Thanks to Dan Sharp and Rony G. Flatscher +" 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 "\" -syn match rexxKeyword contained "\" -syn match rexxKeyword contained "\" -syn match rexxKeyword contained "\" +syn match rexxParse "\\|version\)\>" +syn match rexxParse2 "\" contained containedin=rexxParse + + syn match rexxKeyword contained "\" syn match rexxKeyword contained "\<\(address\|trace\)\( value\)\=\>" -syn match rexxKeyword contained "\" -syn match rexxKeyword contained "\" +syn match rexxKeyword contained "\" +syn match rexxKeyword contained "\\(\s*forever\)\=\>" +syn match rexxKeyword contained "\\s*\" " Another keyword phrase, separated to aid highlighting in rexxFunction -syn match rexxKeyword2 contained "\" +syn match rexxKeyword contained "\" +syn match rexxKeyword2 contained "\" + " 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*\" -" 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\+\\s*\<\(propagate\|error\|failure\|syntax\|user\)\>\=" +syn match rexxRaise2 "\<\(additional\|array\|description\|exit\|return\)\>" contained containedin=rexxRaise + +" Forward statement keywords +syn match rexxForward "\(^\|;\|:\)\\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 "\\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 "\" 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_s command -nargs=+ HiLink hi def link 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_s 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 --- a/runtime/syntax/xml.vim +++ b/runtime/syntax/xml.vim @@ -58,8 +58,8 @@ syn match xmlError "[<&]" " " " ^^^^^^^ -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. @@ -183,7 +183,7 @@ if exists('g:xml_syntax_folding') \ end=++ \ 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=++ - \ contains=xmlCdataStart,xmlCdataEnd,@xmlCdataHook + \ contains=xmlCdataStart,xmlCdataEnd,@xmlCdataHook,@Spell \ keepend \ extend diff --git a/src/Make_vms.mms b/src/Make_vms.mms --- a/src/Make_vms.mms +++ b/src/Make_vms.mms @@ -2,7 +2,7 @@ # Makefile for Vim on OpenVMS # # Maintainer: Zoltan Arpadffy -# 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 diff --git a/src/dosinst.h b/src/dosinst.h --- 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 --- 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 --- 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 --- 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; - - /* When sorting numbers "col_nr" is the number, not the column number. */ + int result = 0; + + /* 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; - - /* 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 = 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; + + 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; - - sort_ic = sort_nr = sort_oct = sort_hex = 0; + goto sortend; + + 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(®match, 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 --- 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 124a7303a1ed9693327921610e30718a02040ee0..2219e2ce99a31bcd9c4c7b9e0b3c8bd3033b6d36 GIT binary patch literal 40106 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 diff --git a/src/screen.c b/src/screen.c --- 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 --- a/src/testdir/test57.in +++ b/src/testdir/test57.in @@ -3,50 +3,494 @@ Tests for :sort command. vim: set ft 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 --- 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 --- 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 --- a/src/window.c +++ b/src/window.c @@ -91,6 +91,9 @@ static void win_new_height __ARGS((win_T #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