]> granicus.if.org Git - vim/commitdiff
updated for version 7.0065
authorBram Moolenaar <Bram@vim.org>
Mon, 28 Mar 2005 20:58:01 +0000 (20:58 +0000)
committerBram Moolenaar <Bram@vim.org>
Mon, 28 Mar 2005 20:58:01 +0000 (20:58 +0000)
25 files changed:
runtime/colors/darkblue.vim
runtime/doc/eval.txt
runtime/doc/options.txt
runtime/ftplugin/c.vim
runtime/ftplugin/changelog.vim
runtime/ftplugin/cs.vim
runtime/ftplugin/ishd.vim
runtime/ftplugin/lisp.vim
runtime/ftplugin/rpl.vim
runtime/ftplugin/vb.vim
runtime/indent.vim
runtime/indent/bib.vim [new file with mode: 0644]
runtime/indent/c.vim
runtime/indent/cs.vim
runtime/indent/lisp.vim [new file with mode: 0644]
runtime/indent/rpl.vim
runtime/indent/vb.vim
src/Makefile
src/gui_kde.cc
src/os_unix.c
src/regexp.c
src/spell.c
src/testdir/test24.in
src/testdir/test24.ok
src/version.h

index 9e004d3f653dc1dcdcef66eb4a03d33dcf58e4ce..4bf05d0447ce65f75c9cc1d8f4e08d5ee19ece2f 100644 (file)
@@ -1,6 +1,6 @@
 " Vim color file
 " Maintainer:  Bohdan Vlasyuk <bohdan@vstu.edu.ua>
-" Last Change: 2002 Mar 09
+" Last Change: 2005 Mar 28
 
 " darkblue -- for those who prefer dark background
 " [note: looks bit uglier with come terminal palettes,
@@ -32,31 +32,31 @@ hi MoreMsg                  ctermfg=darkgreen       ctermfg=darkgreen
 hi Question                    guifg=green gui=none ctermfg=green cterm=none
 hi NonText                     guifg=#0030ff           ctermfg=darkblue
 
-hi StatusLine          guifg=blue guibg=darkgray gui=none              ctermfg=blue ctermbg=gray term=none cterm=none
-hi StatusLineNC                guifg=black guibg=darkgray gui=none             ctermfg=black ctermbg=gray term=none cterm=none
-hi VertSplit           guifg=black guibg=darkgray gui=none             ctermfg=black ctermbg=gray term=none cterm=none
+hi StatusLine  guifg=blue guibg=darkgray gui=none              ctermfg=blue ctermbg=gray term=none cterm=none
+hi StatusLineNC        guifg=black guibg=darkgray gui=none             ctermfg=black ctermbg=gray term=none cterm=none
+hi VertSplit   guifg=black guibg=darkgray gui=none             ctermfg=black ctermbg=gray term=none cterm=none
 
-hi Folded                      guifg=#808080 guibg=#000040                     ctermfg=darkgrey ctermbg=black cterm=bold term=bold
-hi FoldColumn          guifg=#808080 guibg=#000040                     ctermfg=darkgrey ctermbg=black cterm=bold term=bold
-hi LineNr                      guifg=#90f020                   ctermfg=green cterm=none
+hi Folded      guifg=#808080 guibg=#000040                     ctermfg=darkgrey ctermbg=black cterm=bold term=bold
+hi FoldColumn  guifg=#808080 guibg=#000040                     ctermfg=darkgrey ctermbg=black cterm=bold term=bold
+hi LineNr      guifg=#90f020                   ctermfg=green cterm=none
 
-hi DiffAdd                     guibg=darkblue  ctermbg=darkblue term=none cterm=none
-hi DiffChange          guibg=darkmagenta ctermbg=magenta cterm=none
-hi DiffDelete          ctermfg=blue ctermbg=cyan gui=bold guifg=Blue guibg=DarkCyan
-hi DiffText                    cterm=bold ctermbg=red gui=bold guibg=Red
+hi DiffAdd     guibg=darkblue  ctermbg=darkblue term=none cterm=none
+hi DiffChange  guibg=darkmagenta ctermbg=magenta cterm=none
+hi DiffDelete  ctermfg=blue ctermbg=cyan gui=bold guifg=Blue guibg=DarkCyan
+hi DiffText    cterm=bold ctermbg=red gui=bold guibg=Red
 
-hi Cursor                      guifg=#000020 guibg=#ffaf38 ctermfg=bg ctermbg=brown
-hi lCursor                     guifg=#ffffff guibg=#000000 ctermfg=bg ctermbg=darkgreen
+hi Cursor      guifg=black guibg=yellow ctermfg=black ctermbg=yellow
+hi lCursor     guifg=black guibg=white ctermfg=black ctermbg=white
 
 
-hi Comment                     guifg=#80a0ff ctermfg=darkred
-hi Constant                    ctermfg=magenta guifg=#ffa0a0 cterm=none
-hi Special                     ctermfg=brown guifg=Orange cterm=none gui=none
-hi Identifier          ctermfg=cyan guifg=#40ffff cterm=none
-hi Statement           ctermfg=yellow cterm=none guifg=#ffff60 gui=none
-hi PreProc                     ctermfg=magenta guifg=#ff80ff gui=none cterm=none
-hi type                                ctermfg=green guifg=#60ff60 gui=none cterm=none
-hi Underlined          cterm=underline term=underline
-hi Ignore                      guifg=bg ctermfg=bg
+hi Comment     guifg=#80a0ff ctermfg=darkred
+hi Constant    ctermfg=magenta guifg=#ffa0a0 cterm=none
+hi Special     ctermfg=brown guifg=Orange cterm=none gui=none
+hi Identifier  ctermfg=cyan guifg=#40ffff cterm=none
+hi Statement   ctermfg=yellow cterm=none guifg=#ffff60 gui=none
+hi PreProc     ctermfg=magenta guifg=#ff80ff gui=none cterm=none
+hi type                ctermfg=green guifg=#60ff60 gui=none cterm=none
+hi Underlined  cterm=underline term=underline
+hi Ignore      guifg=bg ctermfg=bg
 
 
index dc2078662ed911e4198cc8752887589a5bad7234..dc260b9f08ee3e74a6421f16215d2304d1790278 100644 (file)
@@ -1,4 +1,4 @@
-*eval.txt*      For Vim version 7.0aa.  Last change: 2005 Mar 25
+*eval.txt*      For Vim version 7.0aa.  Last change: 2005 Mar 26
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -2534,8 +2534,8 @@ getqflist()                                               *getqflist()*
                                bufname() to get the name
                        lnum    line number in the buffer (first line is 1)
                        col     column number (first column is 1)
-                       vcol    non-zero: column number is visual column
-                               zero: column number is byte index
+                       vcol    non-zero: "col" is visual column
+                               zero: "col" is byte index
                        nr      error number
                        text    description of the error
                        type    type of the error, 'E', '1', etc.
@@ -3290,7 +3290,9 @@ readfile({fname} [, {binary} [, {max}]])
                        :for line in readfile(fname, '', 10)
                        :  if line =~ 'Date' | echo line | endif
                        :endfor
-<              When {max} is zero or negative the result is an empty list.
+<              When {max} is negative -{max} lines from the end of the file
+               are returned, or as many as there are.
+               When {max} is zero the result is an empty list.
                Note that without {max} the whole file is read into memory.
                Also note that there is no recognition of encoding.  Read a
                file into a buffer if you need to.
@@ -3600,12 +3602,17 @@ setqflist({list})                                       *setqflist()*
 
                    filename    name of a file
                    lnum        line number in the file
-                   col         column number
                    pattern     search pattern used to locate the error
+                   col         column number
+                   vcol        when non-zero: "col" is visual column
+                               when zero: "col" is byte index
+                   nr          error number
                    text        description of the error
+                   type        single-character error type, 'E', 'W', etc.
 
-               The "col" and "text" entries are optional.  Either "lnum" or
-               "pattern" entry can be used to locate a matching error line.
+               The "col", "vcol", "nr", "type" and "text" entries are
+               optional.  Either "lnum" or "pattern" entry can be used to
+               locate a matching error line.
                If the "filename" entry is not present or neither the "lnum"
                or "pattern" entries are present, then the item will not be
                handled as an error line.
index e17c874c0b88cd2ada84ca2a0746cb9106c41f86..96abe9e3d6d955d6e4b84b8c63c1a44389d45bc4 100644 (file)
@@ -1,4 +1,4 @@
-*options.txt*  For Vim version 7.0aa.  Last change: 2005 Mar 21
+*options.txt*  For Vim version 7.0aa.  Last change: 2005 Mar 28
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -600,10 +600,10 @@ A jump table for the options with a short description can be found at |Q_op|.
                        {not in Vi}
                        {only available when compiled with the |+farsi|
                        feature}
-       When on, the second language is Farsi. In editing mode CTRL-_ toggles
+       When on, the second language is Farsi.  In editing mode CTRL-_ toggles
        the keyboard map between Farsi and English, when 'allowrevins' set.
 
-       When off, the keyboard map toggles between Hebrew and English. This
+       When off, the keyboard map toggles between Hebrew and English.  This
        is useful to start the Vim in native mode i.e. English (left-to-right
        mode) and have default second language Farsi or Hebrew (right-to-left
        mode).  See |farsi.txt|.
@@ -620,7 +620,7 @@ A jump table for the options with a short description can be found at |Q_op|.
        letters, Cyrillic letters).
 
        There are currently two possible values:
-       "single":       Use the same width as characters in US-ASCII. This is
+       "single":       Use the same width as characters in US-ASCII.  This is
                        expected by most users.
        "double":       Use twice the width of ASCII characters.
 
@@ -628,9 +628,9 @@ A jump table for the options with a short description can be found at |Q_op|.
        those characters are solely based on how many octets they take in
        legacy/traditional CJK encodings.  In those encodings, Euro,
        Registered sign, Greek/Cyrillic letters are represented by two octets,
-       therefore those fonts have "wide" glyphs for them. This is also
+       therefore those fonts have "wide" glyphs for them.  This is also
        true of some line drawing characters used to make tables in text
-       file. Therefore, when a CJK font is used for GUI Vim or
+       file.  Therefore, when a CJK font is used for GUI Vim or
        Vim is running inside a terminal (emulators) that uses a CJK font
        (or Vim is run inside an xterm invoked with "-cjkwidth" option.),
        this option should be set to "double" to match the width perceived
@@ -659,7 +659,7 @@ A jump table for the options with a short description can be found at |Q_op|.
                        |+netbeans_intg| or |+sun_workshop| feature}
        When on, Vim will change its value for the current working directory
        whenever you open a file, switch buffers, delete a buffer or
-       open/close a window. It will change to the directory containing the
+       open/close a window.  It will change to the directory containing the
        file which was opened or selected.  This option is provided for
        backward compatibility with the Vim released with Sun ONE Studio 4
        Enterprise Edition.
@@ -977,7 +977,7 @@ A jump table for the options with a short description can be found at |Q_op|.
        The pattern is used like with |:autocmd|, see |autocmd-patterns|.
        Watch out for special characters, see |option-backslash|.
        When $TMPDIR, $TMP or $TEMP is not defined, it is not used for the
-       default value. "/tmp/*" is only used for Unix.
+       default value.  "/tmp/*" is only used for Unix.
 
                                                *'balloondelay'* *'bdlay'*
 'balloondelay' 'bdlay' number  (default: 600)
@@ -1570,8 +1570,8 @@ A jump table for the options with a short description can be found at |Q_op|.
           6. included files
 
        As you can see, CTRL-N and CTRL-P can be used to do any 'iskeyword'-
-       based expansion (eg dictionary |i_CTRL-X_CTRL-K|, included patterns
-       |i_CTRL-X_CTRL-I|, tags |i_CTRL-X_CTRL-]| and normal expansions)
+       based expansion (e.g., dictionary |i_CTRL-X_CTRL-K|, included patterns
+       |i_CTRL-X_CTRL-I|, tags |i_CTRL-X_CTRL-]| and normal expansions).
 
                                                *'completefunc'* *'cfu'*
 'completefunc' 'cfu'   string  (default: empty)
@@ -1758,7 +1758,7 @@ A jump table for the options with a short description can be found at |Q_op|.
                        not after '!' or '?'.  Also see 'joinspaces'.
                                                                *cpo-J*
                J       A |sentence| has to be followed by two spaces after
-                       the '.', '!' or '?'. A <Tab> is not recognized as
+                       the '.', '!' or '?'.  A <Tab> is not recognized as
                        white space.
                                                                *cpo-k*
                k       Disable the recognition of raw key codes in
@@ -2163,7 +2163,7 @@ A jump table for the options with a short description can be found at |Q_op|.
          "." is replaced with the path name of the edited file.
        - For Unix and Win32, if a directory ends in two path separators, the
          swap file name will be built from the complete path to the file
-         with all path separators substituted to percent '%' signs. This will
+         with all path separators substituted to percent '%' signs.  This will
          ensure file name uniqueness in the preserve directory.
        - Spaces after the comma are ignored, other spaces are considered part
          of the directory name.  To have a space at the start of a directory
@@ -2902,7 +2902,7 @@ A jump table for the options with a short description can be found at |Q_op|.
                                                      VMS: "SEARCH/NUMBERS ")
                        global or local to buffer |global-local|
                        {not in Vi}
-       Program to use for the |:grep| command. This option may contain '%'
+       Program to use for the |:grep| command.  This option may contain '%'
        and '#' characters, which are expanded like when used in a command-
        line.  The placeholder "$*" is allowed to specify where the arguments
        will be included.  Environment variables are expanded |:set_env|.  See
@@ -3064,7 +3064,7 @@ A jump table for the options with a short description can be found at |Q_op|.
                i   - italic
                u   - underline
                s   - strikeout
-               cXX - character set XX. valid charsets are: ANSI, ARABIC,
+               cXX - character set XX.  Valid charsets are: ANSI, ARABIC,
                      BALTIC, CHINESEBIG5, DEFAULT, EASTEUROPE, GB2312, GREEK,
                      HANGEUL, HEBREW, JOHAB, MAC, OEM, RUSSIAN, SHIFTJIS,
                      SYMBOL, THAI, TURKISH, VIETNAMESE ANSI and BALTIC.
@@ -3146,7 +3146,7 @@ A jump table for the options with a short description can be found at |Q_op|.
 
                                                *'guioptions'* *'go'*
 'guioptions' 'go'      string  (default "gmrLtT"   (MS-Windows),
-                                        "agimrLtT" (GTK, Motif and Athena)
+                                        "agimrLtT" (GTK, Motif and Athena))
                        global
                        {not in Vi}
                        {only available when compiled with GUI enabled}
@@ -3441,7 +3441,7 @@ A jump table for the options with a short description can be found at |Q_op|.
        Unix xterm and iris-ansi by default, where 't_IS' is taken from the
        builtin termcap).
        When Vim was compiled with HAVE_X11 defined, the original icon will be
-       restored if possible |X11|. See |X11-icon| for changing the icon on
+       restored if possible |X11|.  See |X11-icon| for changing the icon on
        X11.
 
                                                *'iconstring'*
@@ -3576,7 +3576,7 @@ A jump table for the options with a short description can be found at |Q_op|.
        Pattern to be used to find an include command.  It is a search
        pattern, just like for the "/" command (See |pattern|).  The default
        value is for C programs.  This option is used for the commands "[i",
-       "]I", "[d", etc..  The 'isfname' option is used to recognize the file
+       "]I", "[d", etc.  The 'isfname' option is used to recognize the file
        name that comes after the matched pattern.  See |option-backslash|
        about including spaces and backslashes.
 
@@ -3754,7 +3754,7 @@ A jump table for the options with a short description can be found at |Q_op|.
        The characters given by this option are included in identifiers.
        Identifiers are used in recognizing environment variables and after a
        match of the 'define' option.  It is also used for "\i" in a
-       |pattern|. See 'isfname' for a description of the format of this
+       |pattern|.  See 'isfname' for a description of the format of this
        option.
        Careful: If you change this option, it might break expanding
        environment variables.  E.g., when '/' is included and Vim tries to
@@ -4336,12 +4336,12 @@ A jump table for the options with a short description can be found at |Q_op|.
                        like in an xterm.
           popup        Right mouse button pops up a menu.  The shifted left
                        mouse button extends a selection.  This works like
-                       with Microsoft Windows
+                       with Microsoft Windows.
           popup_setpos Like "popup", but the cursor will be moved to the
                        position where the mouse was clicked, and thus the
                        selected operation will act upon the clicked object.
                        If clicking inside a selection, that selection will
-                       be acted upon, ie. no cursor move.  This implies of
+                       be acted upon, i.e. no cursor move.  This implies of
                        course, that right clicking outside a selection will
                        end Visual mode.
        Overview of what button does what for each model:
@@ -4364,7 +4364,7 @@ A jump table for the options with a short description can be found at |Q_op|.
 
                                        *'mouseshape'* *'mouses'* *E547*
 'mouseshape' 'mouses'  string  (default "i:beam,r:beam,s:updown,sd:cross,
-                                       m:no,ml:up-arrow,v:rightup-arrow"
+                                       m:no,ml:up-arrow,v:rightup-arrow")
                        global
                        {not in Vi}
                        {only available when compiled with the |+mouseshape|
@@ -4896,7 +4896,7 @@ A jump table for the options with a short description can be found at |Q_op|.
        If 'rulerformat' is set, it will determine the contents of the ruler.
        Each window has its own ruler.  If a window has a status line, the
        ruler is shown there.  Otherwise it is shown in the last line of the
-       screen.  If the statusline is given by 'statusline' (ie. not empty),
+       screen.  If the statusline is given by 'statusline' (i.e. not empty),
        this option takes precedence over 'ruler' and 'rulerformat'
        If the number of characters displayed is different from the number of
        bytes in the text (e.g., for a TAB or a multi-byte character), both
@@ -4950,7 +4950,7 @@ A jump table for the options with a short description can be found at |Q_op|.
                                                $VIM/vimfiles,
                                                $VIMRUNTIME,
                                                $VIM/vimfiles/after,
-                                               sys$login:vimfiles/after"
+                                               sys$login:vimfiles/after")
                        global
                        {not in Vi}
        This is a list of directories which will be searched for runtime
@@ -5415,7 +5415,7 @@ A jump table for the options with a short description can be found at |Q_op|.
                on the command-line, "<" will appear in the left most column.
                Ignored in Ex mode.
          T     truncate other messages in the middle if they are too long to
-               fit on the command line. "..." will appear in the middle.
+               fit on the command line.  "..." will appear in the middle.
                Ignored in Ex mode.
          W     don't give "written" or "[w]" when writing a file
          A     don't give the "ATTENTION" message when an existing swap file
@@ -5535,7 +5535,7 @@ A jump table for the options with a short description can be found at |Q_op|.
                        global
                        {not in Vi}
        The minimal number of screen columns to keep to the left and to the
-       right of the cursor if 'nowrap' is set. Setting this option to a value
+       right of the cursor if 'nowrap' is set.  Setting this option to a value
        greater than 0 while having |'sidescroll'| also at a non-zero value
        makes some context visible in the line you are scrolling in
        horizontally (except at the end and beginning of the line).  Setting
@@ -5700,9 +5700,9 @@ A jump table for the options with a short description can be found at |Q_op|.
        'laststatus' is 2) is controlling the output of |CTRL-G|.
 
        field       meaning ~
-       -           Left justify the item. The default is right justified
+       -           Left justify the item.  The default is right justified
                    when minwid is larger than the length of the item.
-       0           Leading zeroes in numeric items. Overridden by '-'.
+       0           Leading zeroes in numeric items.  Overridden by '-'.
        minwid      Minimum width of the item, padding as set by '-' & '0'.
                    Value must be 50 or less.
        maxwid      Maximum width of the item.  Truncation occurs with a '<'
@@ -5743,7 +5743,7 @@ A jump table for the options with a short description can be found at |Q_op|.
              Mnemonic: Offset from start of file (with one added)
              {not available when compiled without |+byte_offset| feature}
        O N   As above, in hexadecimal.
-       N N   Printer page number. (Only works in the 'printheader' option.)
+       N N   Printer page number.  (Only works in the 'printheader' option.)
        l N   Line number.
        L N   Number of lines in buffer.
        c N   Column number.
@@ -5752,7 +5752,7 @@ A jump table for the options with a short description can be found at |Q_op|.
        p N   Percentage through file in lines as in |CTRL-G|.
        P S   Percentage through file of displayed window.  This is like the
              percentage described for 'ruler'.  Always 3 in length.
-       a S   Argument list status as in default title. ({current} of {max})
+       a S   Argument list status as in default title.  ({current} of {max})
              Empty if the argument file count is zero or one.
        { NF  Evaluate expression between '{' and '}' and substitute result.
        ( -   Start of item group.  Can be used for setting the width and
@@ -5763,7 +5763,7 @@ A jump table for the options with a short description can be found at |Q_op|.
        = -   Separation point between left and right aligned items.
              No width fields allowed.
        * -   Set highlight group to User{N}, where {N} is taken from the
-             minwid field. eg. %1*.  Restore normal highlight with %* or %0*.
+             minwid field, e.g. %1*.  Restore normal highlight with %* or %0*.
              The difference between User{N} and StatusLine  will be applied
              to StatusLineNC for the statusline of non-current windows.
              The number N must be between 1 and 9.  See |hl-User1..9|
@@ -5774,10 +5774,10 @@ A jump table for the options with a short description can be found at |Q_op|.
        with a space it is assumed that it wants to separate itself from
        anything but other flags.  That is: A leading comma is removed if the
        preceding character stems from plaintext.  A leading space is removed
-       if the preceding character stems from another active flag. This will
+       if the preceding character stems from another active flag.  This will
        make a nice display when flags are used like in the examples below.
 
-       When all items in a group becomes an empty string (ie. flags that are
+       When all items in a group becomes an empty string (i.e. flags that are
        not set) and a minwid is not set for the group, the whole group will
        become empty.  This will make a group like the following disappear
        completely from the statusline when none of the flags are set. >
@@ -5786,7 +5786,7 @@ A jump table for the options with a short description can be found at |Q_op|.
        Beware that an expression is evaluated each and every time the status
        line is displayed.  The current buffer and current window will be set
        temporarily to that of the window (and buffer) whose statusline is
-       currently being drawn. The expression will evaluate in this context.
+       currently being drawn.  The expression will evaluate in this context.
        The variable "actual_curbuf" is set to the 'bufnr()' number of the
        real current buffer.  The expression is evaluated in the |sandbox|.
 
@@ -5896,7 +5896,7 @@ A jump table for the options with a short description can be found at |Q_op|.
                        also used in all buffer related split commands, for
                        example ":sbuffer", ":sbnext", or ":sbrewind".
           split        If included, split the current window before loading
-                       a buffer. Otherwise: do not split, use current window.
+                       a buffer.  Otherwise: do not split, use current window.
                        Supported in |quickfix| commands that display errors.
 
                                                *'syntax'* *'syn'*
@@ -6628,7 +6628,7 @@ A jump table for the options with a short description can be found at |Q_op|.
                saved.  When not included, the value of 'history' is used.
        c       When included, convert the text in the viminfo file from the
                'encoding' used when writing the file to the current
-               'encoding'. See |viminfo-encoding|.
+               'encoding'.  See |viminfo-encoding|.
        f       Whether file marks need to be stored.  If zero, file marks ('0
                to '9, 'A to 'Z) are not stored.  When not present or when
                non-zero, they are all stored.  '0 is used for the current
@@ -6771,8 +6771,8 @@ A jump table for the options with a short description can be found at |Q_op|.
                        global
                        {not in Vi}
        'wildcharm' works exactly like 'wildchar', except that it is
-       recognized when used inside a macro. You can find "spare" command-line
-       keys suitable for this option by looking at |ex-edit-index|. Normally
+       recognized when used inside a macro.  You can find "spare" command-line
+       keys suitable for this option by looking at |ex-edit-index|.  Normally
        you'll never actually type 'wildcharm', just use it in mappings that
        automatically invoke completion mode, e.g.: >
                :set wcm=<C-Z>
@@ -6862,7 +6862,7 @@ A jump table for the options with a short description can be found at |Q_op|.
 
        Examples: >
                :set wildmode=full
-<      Complete first full match, next match, etc. (the default) >
+<      Complete first full match, next match, etc.  (the default) >
                :set wildmode=longest,full
 <      Complete longest common string, then each full match >
                :set wildmode=list:full
index cf6686c72bd29f3e848b51d390affe8504a4f349..39ba8232ef1d92963e8adffed08ab836a6e28607 100644 (file)
@@ -1,7 +1,7 @@
 " Vim filetype plugin file
 " Language:    C
 " Maintainer:  Bram Moolenaar <Bram@vim.org>
-" Last Change: 2004 Sep 01
+" Last Change: 2005 Mar 27
 
 " Only do this when not done yet for this buffer
 if exists("b:did_ftplugin")
@@ -11,12 +11,10 @@ endif
 " Don't load another plugin for this buffer
 let b:did_ftplugin = 1
 
+" Using line continuation here.
 set cpo-=C
 
-let b:undo_ftplugin = "setl cin< fo< com<"
-       \ . "| if has('vms') | setl isk< | endif"
-
-setlocal cindent
+let b:undo_ftplugin = "setl fo< com< | if has('vms') | setl isk< | endif"
 
 " Set 'formatoptions' to break comment lines but not other lines,
 " and insert the comment leader when hitting <CR> or using "o".
index 47d58ccb90d38d748f9ac47b9568717525c5282d..847cca7e8e57c5ede8099cd74498811d838fb6f4 100644 (file)
@@ -216,7 +216,7 @@ if &filetype == "changelog"
     command! -nargs=0 NewChangelogEntry call s:new_changelog_entry()
   endif
 
-  let b:undo_ftplugin = "setl com< tw< fo< et< ai<"
+  let b:undo_ftplugin = "setl com< tw< fo< et<"
 
   if &textwidth == 0
     setlocal textwidth=78
@@ -224,7 +224,7 @@ if &filetype == "changelog"
   setlocal comments=
   setlocal formatoptions+=t
   setlocal noexpandtab
-  setlocal autoindent
+  " setlocal autoindent     now in indent file
 
   let &cpo = cpo_save
 else
index 7f45098a4fa0c715cccb67e9fa3b5df598e0e87c..0ff3c9d56f9be9ca3f7d9579f0bd70eb32d5a40e 100644 (file)
@@ -11,8 +11,6 @@ endif
 " Don't load another plugin for this buffer
 let b:did_ftplugin = 1
 
-setlocal cindent
-
 " Set 'formatoptions' to break comment lines but not other lines,
 " and insert the comment leader when hitting <CR> or using "o".
 setlocal fo-=t fo+=croql
index 63e1a747e9d944d073349ae398c4f22bce9e13c4..dedb32889d511a4d273b216329b542b127ad247a 100644 (file)
@@ -6,8 +6,6 @@
 if exists("b:did_ftplugin") | finish | endif
 let b:did_ftplugin = 1
 
-setlocal nocindent
-setlocal autoindent
 setlocal foldmethod=syntax
 
 set cpo-=C
index 9482833346caf2c3a5cebc9f2e82991ffcf5e62d..b477214027a7fefa966c7cf4478e4287bd209e18 100644 (file)
@@ -14,7 +14,6 @@ endif
 " Don't load another plugin for this buffer
 let b:did_ftplugin = 1
 
-setl autoindent
 setl comments=:;
 setl define=^\\s*(def\\k*
 setl formatoptions-=t
@@ -25,6 +24,3 @@ setl lisp
 " e.g. insertion of ;;; and ;; on normal "O" or "o" when staying in comment
 setl comments^=:;;;,:;;,sr:#\|,mb:\|,ex:\|#
 setl formatoptions+=croql
-" with smartindent # cause left alignment
-setl nosmartindent
-
index 2b26ef1fa3e5752d349dbdf0b8d10ed41896c423..5ddf2c1a057bb8fc3d8dc5caf638c5839c939dee 100644 (file)
@@ -1,7 +1,7 @@
 " Vim filetype plugin file
 " Language:     RPL/2
 " Maintainer:   Joël BERTRAND <rpl2@free.fr>
-" Last Change: 2002 Feb 07
+" Last Change: 2005 Mar 28
 " Version:             0.1
 
 " Only do this when not done yet for this buffer
@@ -12,8 +12,6 @@ endif
 " Don't load another plugin for this buffer
 let b:did_ftplugin = 1
 
-setlocal autoindent
-
 " Set 'formatoptions' to break comment lines but not other lines,
 " and insert the comment leader when hitting <CR> or using "o".
 setlocal fo-=t fo+=croql
index bb4c23a2cdb146e8c4d1c2febb27f57d4f9fc6dd..d70db89273dedb74c1dff1f854b53502b1e10da4 100644 (file)
@@ -6,8 +6,6 @@
 if exists("b:did_ftplugin") | finish | endif
 let b:did_ftplugin = 1
 
-setlocal nocindent
-setlocal autoindent
 setlocal com=sr:'\ -,mb:'\ \ ,el:'\ \ ,:'
 
 " we need this wrapper, as call doesn't allow a count
index 78fb9d0f469aa45033b9bf7205a2d96038cef3d8..1557d7102c68b8f6a06f0ff1c2652b7426677149 100644 (file)
@@ -1,7 +1,7 @@
 " Vim support file to switch on loading indent files for file types
 "
 " Maintainer:  Bram Moolenaar <Bram@vim.org>
-" Last Change: 2001 Sep 12
+" Last Change: 2005 Mar 28
 
 if exists("did_indent_on")
   finish
@@ -9,5 +9,17 @@ endif
 let did_indent_on = 1
 
 augroup filetypeindent
-  au FileType * if expand("<amatch>") != "" | if exists("b:did_indent") | unlet b:did_indent | endif | runtime! indent/<amatch>.vim | endif
+  au FileType * call s:LoadIndent()
+  func! s:LoadIndent()
+    if exists("b:undo_indent")
+      exe b:undo_indent
+      unlet! b:undo_indent b:did_indent
+    endif
+    if expand("<amatch>") != ""
+      if exists("b:did_indent")
+       unlet b:did_indent
+      endif
+      runtime! indent/<amatch>.vim
+    endif
+  endfunc
 augroup END
diff --git a/runtime/indent/bib.vim b/runtime/indent/bib.vim
new file mode 100644 (file)
index 0000000..d1a0636
--- /dev/null
@@ -0,0 +1,15 @@
+" Vim indent file
+" Language:      BibTeX
+" Maintainer:    Dorai Sitaram <ds26@gte.com>
+" URL:          http://www.ccs.neu.edu/~dorai/vimplugins/vimplugins.html
+" Last Change:   2005 Mar 28
+
+" Only do this when not done yet for this buffer
+if exists("b:did_indent")
+  finish
+endif
+let b:did_indent = 1
+
+setlocal cindent
+
+let b:undo_indent = "setl cin<"
index 135251dcad37eda55e58d5b4135de3419630b293..e224382f63759a573830e0d68bf27cf71eec4582 100644 (file)
@@ -1,7 +1,7 @@
 " Vim indent file
 " Language:    C
 " Maintainer:  Bram Moolenaar <Bram@vim.org>
-" Last Change: 2001 Jun 12
+" Last Change: 2005 Mar 27
 
 " Only load this indent file when no other was loaded.
 if exists("b:did_indent")
@@ -11,3 +11,5 @@ let b:did_indent = 1
 
 " C indenting is built-in, thus this is very simple
 setlocal cindent
+
+let b:undo_indent = "setl cin<"
index 064ab0069187b1768c4446ca3b40ee82c7f1d2ed..4a040b6fe2bde6ae53e9bc38eb20bcbfa1a66030 100644 (file)
@@ -11,3 +11,5 @@ let b:did_indent = 1
 
 " C# is like indenting C
 setlocal cindent
+
+let b:undo_indent = "setl cin<"
diff --git a/runtime/indent/lisp.vim b/runtime/indent/lisp.vim
new file mode 100644 (file)
index 0000000..444fe10
--- /dev/null
@@ -0,0 +1,15 @@
+" Vim indent file
+" Language:    Lisp
+" Maintainer:  noone
+" Last Change: 2005 Mar 28
+
+" Only load this indent file when no other was loaded.
+if exists("b:did_indent")
+   finish
+endif
+let b:did_indent = 1
+
+" Autoindent is the best we can do.
+setlocal ai
+
+let b:undo_indent = "setl ai<"
index 341f5f950ea270a5c2f945336b2af627eb4bf1bc..07bfd06590c9b36ee67da568908c6197774b5f8d 100644 (file)
@@ -1,7 +1,7 @@
 " Vim indent file
 " Language:    RPL/2
 " Version:     0.2
-" Last Change: 2002 August 16
+" Last Change: 2005 Mar 28
 " Maintainer:  BERTRAND Joël <rpl2@free.fr>
 
 " Only load this indent file when no other was loaded.
@@ -10,6 +10,7 @@ if exists("b:did_indent")
 endif
 let b:did_indent = 1
 
+setlocal autoindent
 setlocal indentkeys+==~end,=~case,=~if,=~then,=~else,=~do,=~until,=~while,=~repeat,=~select,=~default,=~for,=~start,=~next,=~step,<<>,<>>
 
 " Define the appropriate indent function but only once
@@ -18,6 +19,8 @@ if exists("*RplGetFreeIndent")
   finish
 endif
 
+let b:undo_indent = "set ai< indentkeys< indentexpr<"
+
 function RplGetIndent(lnum)
   let ind = indent(a:lnum)
   let prevline=getline(a:lnum)
index b570b56b85426e3d820a19aaca038b51787c201e..85021bd7d9942ad24b2a51a638aa330ae74429a1 100644 (file)
@@ -8,10 +8,13 @@ if exists("b:did_indent")
 endif
 let b:did_indent = 1
 
+setlocal autoindent
 setlocal indentexpr=VbGetIndent(v:lnum)
 setlocal indentkeys&
 setlocal indentkeys+==~else,=~elseif,=~end,=~wend,=~case,=~next,=~select,=~loop,<:>
 
+let b:undo_indent = "set ai< indentexpr< indentkeys<"
+
 " Only define the function once.
 if exists("*VbGetIndent")
     finish
index a70d10f6b5fc9f5c10b5026b1ba22cd7027b5617..366dcddb6c1303138d5023a6b56f18d93079ff76 100644 (file)
@@ -1787,7 +1787,7 @@ installruntime: $(HELPSOURCE)/vim.1 $(DEST_VIM) $(DEST_RT) \
        cd $(COMPSOURCE); $(INSTALL_DATA) *.vim README.txt $(DEST_COMP)
        cd $(DEST_COMP); chmod $(HELPMOD) *.vim README.txt
 
-installmacros: $(MACROSOURCE) $(DEST_VIM) $(DEST_RT) $(DEST_MACRO)
+installmacros: $(DEST_VIM) $(DEST_RT) $(DEST_MACRO)
        $(INSTALL_DATA_R) $(MACROSOURCE)/* $(DEST_MACRO)
        chmod $(DIRMOD) `find $(DEST_MACRO) -type d -print`
        chmod $(FILEMOD) `find $(DEST_MACRO) -type f -print`
@@ -1799,14 +1799,14 @@ installmacros: $(MACROSOURCE) $(DEST_VIM) $(DEST_RT) $(DEST_MACRO)
              fi
 
 # install the tutor files
-installtutor: $(TUTORSOURCE) $(DEST_VIM) $(DEST_RT) $(DEST_TUTOR)
+installtutor: $(DEST_VIM) $(DEST_RT) $(DEST_TUTOR)
        $(INSTALL_DATA) vimtutor $(DEST_BIN)/$(VIMNAME)tutor
        chmod $(SCRIPTMOD) $(DEST_BIN)/$(VIMNAME)tutor
        -$(INSTALL_DATA) $(TUTORSOURCE)/README* $(TUTORSOURCE)/tutor* $(DEST_TUTOR)
        chmod $(HELPMOD) $(DEST_TUTOR)/*
 
 # Install the spell files, if they exist.
-installspell: $(SPELLSOURCE) $(DEST_VIM) $(DEST_RT) $(DEST_SPELL)
+installspell: $(DEST_VIM) $(DEST_RT) $(DEST_SPELL)
        if test -f $(SPELLSOURCE)/en.spl; then \
          $(INSTALL_DATA) $(SPELLSOURCE)/*.spl $(DEST_SPELL); \
          chmod $(HELPMOD) $(DEST_SPELL)/*.spl; \
index ffdb7f45ab1ba391df1527d91fc6937126bb612f..fc4664edb3ec333a6eac651e1c8f7af92f28df0a 100644 (file)
@@ -12,7 +12,7 @@
  *  (C) 2000 by Thomas Capricelli <orzel@freehackers.org>
  *
  *  Please visit http://freehackers.org/kvim for other vim- or
- *  kde-related coding.
+ *  kde-related coding. (URL currently doesn't work...)
  *
  *  $Id$
  *
index f41ed464b487292378d17625d5c950d05a83c9eb..afe9bfdc068085022b789ecd19ca51c5a2508bce 100644 (file)
@@ -5163,10 +5163,19 @@ mch_expand_wildcards(num_pat, pat, num_file, file, flags)
            STRCAT(command, pat[i]);
            STRCAT(command, "\"");
 #else
+           int intick = FALSE;
+
            p = command + STRLEN(command);
            *p++ = ' ';
            for (j = 0; pat[i][j] != NUL; )
-               if (vim_strchr((char_u *)" '", pat[i][j]) != NULL)
+           {
+               if (pat[i][j] == '`')
+               {
+                   intick = !intick;
+                   *p++ = pat[i][j++];
+               }
+               else if (!intick && vim_strchr((char_u *)" '",
+                                                          pat[i][j]) != NULL)
                {
                    *p++ = '"';
                    while (pat[i][j] != NUL
@@ -5181,6 +5190,7 @@ mch_expand_wildcards(num_pat, pat, num_file, file, flags)
                    if ((*p++ = pat[i][j++]) == '\\' && pat[i][j] != NUL)
                        *p++ = pat[i][j++];
                }
+           }
            *p = NUL;
 #endif
        }
index 3cd7cc99147ea673e4cf1af88939ec111120a0cc..fe20b3a8fbac283255b6d3f8378e3a0e7d41aba6 100644 (file)
  *
  *                    +----------------------+
  *                    V                      |
- * <aa>\+      BRANCH <aa> --> BRANCH --> BACKP BRANCH --> NOTHING --> END
+ * <aa>\+      BRANCH <aa> --> BRANCH --> BACK  BRANCH --> NOTHING --> END
  *                  |               |           ^                      ^
  *                  |               +-----------+                      |
  *                  +--------------------------------------------------+
 #define RE_COL         205     /* nr cmp  Match column number */
 #define RE_VCOL                206     /* nr cmp  Match virtual column number */
 
-#define BACKP          207     /*      Like BACK but for \+ */
-
 /*
  * Magic characters have a special meaning, they don't match literally.
  * Magic characters are negative.  This separates them from literal characters
@@ -283,8 +281,6 @@ toggle_Magic(x)
  * BACK                Normal "next" pointers all implicitly point forward; BACK
  *             exists to make loop structures possible.
  *
- * BACKP       Like BACK, but used for \+.  Doesn't check for an empty match.
- *
  * STAR,PLUS   '=', and complex '*' and '+', are implemented as circular
  *             BRANCH structures using BACK.  Simple cases (one character
  *             per match) are implemented with STAR and PLUS for speed
@@ -1452,7 +1448,7 @@ regpiece(flagp)
                /* Emit x+ as x(&|), where & means "self". */
                next = regnode(BRANCH); /* Either */
                regtail(ret, next);
-               regtail(regnode(BACKP), ret);   /* loop back */
+               regtail(regnode(BACK), ret);    /* loop back */
                regtail(next, regnode(BRANCH)); /* or */
                regtail(ret, regnode(NOTHING)); /* null. */
            }
@@ -2487,7 +2483,7 @@ regtail(p, val)
        scan = temp;
     }
 
-    if (OP(scan) == BACK || OP(scan) == BACKP)
+    if (OP(scan) == BACK)
        offset = (int)(scan - val);
     else
        offset = (int)(val - scan);
@@ -2965,6 +2961,7 @@ static int        need_clear_zsubexpr = FALSE;    /* extmatch subexpressions
 /*
  * Structure used to save the current input state, when it needs to be
  * restored after trying a match.  Used by reg_save() and reg_restore().
+ * Also stores the length of "backpos".
  */
 typedef struct
 {
@@ -2973,6 +2970,7 @@ typedef struct
        char_u  *ptr;   /* reginput pointer, for single-line regexp */
        lpos_T  pos;    /* reginput pos, for multi-line regexp */
     } rs_u;
+    int                rs_len;
 } regsave_T;
 
 /* struct to save start/end pointer/position in for \(\) */
@@ -2983,6 +2981,7 @@ typedef struct
        char_u  *ptr;
        lpos_T  pos;
     } se_u;
+    int                se_len;
 } save_se_T;
 
 static char_u  *reg_getline __ARGS((linenr_T lnum));
@@ -2993,8 +2992,8 @@ static void       cleanup_subexpr __ARGS((void));
 static void    cleanup_zsubexpr __ARGS((void));
 #endif
 static void    reg_nextline __ARGS((void));
-static void    reg_save __ARGS((regsave_T *save));
-static void    reg_restore __ARGS((regsave_T *save));
+static void    reg_save __ARGS((regsave_T *save, garray_T *gap));
+static void    reg_restore __ARGS((regsave_T *save, garray_T *gap));
 static int     reg_save_equal __ARGS((regsave_T *save));
 static void    save_se_multi __ARGS((save_se_T *savep, lpos_T *posp));
 static void    save_se_one __ARGS((save_se_T *savep, char_u **pp));
@@ -3547,7 +3546,6 @@ typedef struct regitem_S
 {
     regstate_T rs_state;       /* what we are doing, one of RS_ above */
     char_u     *rs_scan;       /* current node in program */
-    long       rs_startp;      /* start position for BACK (offset) */
     union
     {
        save_se_T  sesave;
@@ -3556,14 +3554,14 @@ typedef struct regitem_S
     short      rs_no;          /* submatch nr */
 } regitem_T;
 
-static regitem_T *regstack_push __ARGS((garray_T *regstack, regstate_T state, char_u *scan, long startp));
-static void regstack_pop __ARGS((garray_T *regstack, char_u **scan, long *startp));
+static regitem_T *regstack_push __ARGS((garray_T *regstack, regstate_T state, char_u *scan));
+static void regstack_pop __ARGS((garray_T *regstack, char_u **scan));
 
 /* used for BEHIND and NOBEHIND matching */
 typedef struct regbehind_S
 {
-    regsave_T  save_after;
-    regsave_T  save_behind;
+    regsave_T  save_after;
+    regsave_T  save_behind;
 } regbehind_T;
 
 /* used for STAR, PLUS and BRACE_SIMPLE matching */
@@ -3576,6 +3574,14 @@ typedef struct regstar_S
     long       maxval;
 } regstar_T;
 
+/* used to store input position when a BACK was encountered, so that we now if
+ * we made any progress since the last time. */
+typedef struct backpos_S
+{
+    char_u     *bp_scan;       /* "scan" where BACK was encountered */
+    regsave_T  bp_pos;         /* last input position */
+} backpos_T;
+
 /*
  * regmatch - main matching routine
  *
@@ -3598,7 +3604,8 @@ regmatch(scan)
   char_u       *next;          /* Next node. */
   int          op;
   int          c;
-  garray_T     regstack;
+  garray_T     regstack;       /* stack with regitem_T items, sometimes
+                                  preceded by regstar_T or regbehind_T. */
   regitem_T    *rp;
   int          no;
   int          status;         /* one of the RA_ values: */
@@ -3607,18 +3614,17 @@ regmatch(scan)
 #define RA_BREAK       3       /* break inner loop */
 #define RA_MATCH       4       /* successful match */
 #define RA_NOMATCH     5       /* didn't match */
-  long         startp = 0;     /* start position for BACK, offset to
-                                  regstack.ga_data */
-#define STARTP2REGS(startp) (regsave_T *)(((char *)regstack.ga_data) + startp)
-#define REGS2STARTP(p)     (long)((char *)p - (char *)regstack.ga_data)
+  garray_T     backpos;        /* table with backpos_T for BACK */
 
   /* Init the regstack empty.  Use an item size of 1 byte, since we push
    * different things onto it.  Use a large grow size to avoid reallocating
    * it too often. */
   ga_init2(&regstack, 1, 10000);
 
+  ga_init2(&backpos, sizeof(backpos_T), 10);
+
   /*
-   * Repeat until the stack is empty.
+   * Repeat until "regstack" is empty.
    */
   for (;;)
   {
@@ -3635,7 +3641,7 @@ regmatch(scan)
 #endif
 
     /*
-     * Repeat for items that can be matched sequential, without using the
+     * Repeat for items that can be matched sequentially, without using the
      * regstack.
      */
     for (;;)
@@ -4072,13 +4078,42 @@ regmatch(scan)
            break;
 
          case BACK:
-           /* When we run into BACK without matching something non-empty, we
-            * fail. */
-           if (startp != 0 && reg_save_equal(STARTP2REGS(startp)))
-               status = RA_NOMATCH;
-           break;
+           {
+               int             i;
+               backpos_T       *bp;
+
+               /*
+                * When we run into BACK we need to check if we don't keep
+                * looping without matching any input.  The second and later
+                * times a BACK is encountered it fails if the input is still
+                * at the same position as the previous time.
+                * The positions are stored in "backpos" and found by the
+                * current value of "scan", the position in the RE program.
+                */
+               bp = (backpos_T *)backpos.ga_data;
+               for (i = 0; i < backpos.ga_len; ++i)
+                   if (bp[i].bp_scan == scan)
+                       break;
+               if (i == backpos.ga_len)
+               {
+                   /* First time at this BACK, make room to store the pos. */
+                   if (ga_grow(&backpos, 1) == FAIL)
+                       status = RA_FAIL;
+                   else
+                   {
+                       /* get "ga_data" again, it may have changed */
+                       bp = (backpos_T *)backpos.ga_data;
+                       bp[i].bp_scan = scan;
+                       ++backpos.ga_len;
+                   }
+               }
+               else if (reg_save_equal(&bp[i].bp_pos))
+                   /* Still at same position as last time, fail. */
+                   status = RA_NOMATCH;
 
-         case BACKP:
+               if (status != RA_FAIL && status != RA_NOMATCH)
+                   reg_save(&bp[i].bp_pos, &backpos);
+           }
            break;
 
          case MOPEN + 0:   /* Match start: \zs */
@@ -4094,7 +4129,7 @@ regmatch(scan)
            {
                no = op - MOPEN;
                cleanup_subexpr();
-               rp = regstack_push(&regstack, RS_MOPEN, scan, startp);
+               rp = regstack_push(&regstack, RS_MOPEN, scan);
                if (rp == NULL)
                    status = RA_FAIL;
                else
@@ -4109,7 +4144,7 @@ regmatch(scan)
 
          case NOPEN:       /* \%( */
          case NCLOSE:      /* \) after \%( */
-               if (regstack_push(&regstack, RS_NOPEN, scan, startp) == NULL)
+               if (regstack_push(&regstack, RS_NOPEN, scan) == NULL)
                    status = RA_FAIL;
                /* We simply continue and handle the result when done. */
                break;
@@ -4127,7 +4162,7 @@ regmatch(scan)
            {
                no = op - ZOPEN;
                cleanup_zsubexpr();
-               rp = regstack_push(&regstack, RS_ZOPEN, scan, startp);
+               rp = regstack_push(&regstack, RS_ZOPEN, scan);
                if (rp == NULL)
                    status = RA_FAIL;
                else
@@ -4154,7 +4189,7 @@ regmatch(scan)
            {
                no = op - MCLOSE;
                cleanup_subexpr();
-               rp = regstack_push(&regstack, RS_MCLOSE, scan, startp);
+               rp = regstack_push(&regstack, RS_MCLOSE, scan);
                if (rp == NULL)
                    status = RA_FAIL;
                else
@@ -4179,7 +4214,7 @@ regmatch(scan)
            {
                no = op - ZCLOSE;
                cleanup_zsubexpr();
-               rp = regstack_push(&regstack, RS_ZCLOSE, scan, startp);
+               rp = regstack_push(&regstack, RS_ZCLOSE, scan);
                if (rp == NULL)
                    status = RA_FAIL;
                else
@@ -4355,13 +4390,9 @@ regmatch(scan)
            {
                if (OP(next) != BRANCH) /* No choice. */
                    next = OPERAND(scan);       /* Avoid recursion. */
-               else if (startp != 0 && OP(OPERAND(scan)) == BACKP
-                                      && reg_save_equal(STARTP2REGS(startp)))
-                   /* \+ with something empty before it */
-                   status = RA_NOMATCH;
                else
                {
-                   rp = regstack_push(&regstack, RS_BRANCH, scan, startp);
+                   rp = regstack_push(&regstack, RS_BRANCH, scan);
                    if (rp == NULL)
                        status = RA_FAIL;
                    else
@@ -4411,14 +4442,13 @@ regmatch(scan)
                if (brace_count[no] <= (brace_min[no] <= brace_max[no]
                                             ? brace_min[no] : brace_max[no]))
                {
-                   rp = regstack_push(&regstack, RS_BRCPLX_MORE, scan, startp);
+                   rp = regstack_push(&regstack, RS_BRCPLX_MORE, scan);
                    if (rp == NULL)
                        status = RA_FAIL;
                    else
                    {
                        rp->rs_no = no;
-                       reg_save(&rp->rs_un.regsave);
-                       startp = REGS2STARTP(&rp->rs_un.regsave);
+                       reg_save(&rp->rs_un.regsave, &backpos);
                        next = OPERAND(scan);
                        /* We continue and handle the result when done. */
                    }
@@ -4431,15 +4461,13 @@ regmatch(scan)
                    /* Range is the normal way around, use longest match */
                    if (brace_count[no] <= brace_max[no])
                    {
-                       rp = regstack_push(&regstack, RS_BRCPLX_LONG,
-                                                               scan, startp);
+                       rp = regstack_push(&regstack, RS_BRCPLX_LONG, scan);
                        if (rp == NULL)
                            status = RA_FAIL;
                        else
                        {
                            rp->rs_no = no;
-                           reg_save(&rp->rs_un.regsave);
-                           startp = REGS2STARTP(&rp->rs_un.regsave);
+                           reg_save(&rp->rs_un.regsave, &backpos);
                            next = OPERAND(scan);
                            /* We continue and handle the result when done. */
                        }
@@ -4450,14 +4478,12 @@ regmatch(scan)
                    /* Range is backwards, use shortest match first */
                    if (brace_count[no] <= brace_min[no])
                    {
-                       rp = regstack_push(&regstack, RS_BRCPLX_SHORT,
-                                                               scan, startp);
+                       rp = regstack_push(&regstack, RS_BRCPLX_SHORT, scan);
                        if (rp == NULL)
                            status = RA_FAIL;
                        else
                        {
-                           reg_save(&rp->rs_un.regsave);
-                           startp = REGS2STARTP(&rp->rs_un.regsave);
+                           reg_save(&rp->rs_un.regsave, &backpos);
                            /* We continue and handle the result when done. */
                        }
                    }
@@ -4533,7 +4559,7 @@ regmatch(scan)
                    {
                        regstack.ga_len += sizeof(regstar_T);
                        rp = regstack_push(&regstack, rst.minval <= rst.maxval
-                               ? RS_STAR_LONG : RS_STAR_SHORT, scan, startp);
+                                       ? RS_STAR_LONG : RS_STAR_SHORT, scan);
                        if (rp == NULL)
                            status = RA_FAIL;
                        else
@@ -4552,13 +4578,13 @@ regmatch(scan)
          case NOMATCH:
          case MATCH:
          case SUBPAT:
-           rp = regstack_push(&regstack, RS_NOMATCH, scan, startp);
+           rp = regstack_push(&regstack, RS_NOMATCH, scan);
            if (rp == NULL)
                status = RA_FAIL;
            else
            {
                rp->rs_no = op;
-               reg_save(&rp->rs_un.regsave);
+               reg_save(&rp->rs_un.regsave, &backpos);
                next = OPERAND(scan);
                /* We continue and handle the result when done. */
            }
@@ -4577,13 +4603,13 @@ regmatch(scan)
            else
            {
                regstack.ga_len += sizeof(regbehind_T);
-               rp = regstack_push(&regstack, RS_BEHIND1, scan, startp);
+               rp = regstack_push(&regstack, RS_BEHIND1, scan);
                if (rp == NULL)
                    status = RA_FAIL;
                else
                {
                    rp->rs_no = op;
-                   reg_save(&rp->rs_un.regsave);
+                   reg_save(&rp->rs_un.regsave, &backpos);
                    /* First try if what follows matches.  If it does then we
                     * check the behind match by looping. */
                }
@@ -4636,7 +4662,7 @@ regmatch(scan)
 
     /*
      * If there is something on the regstack execute the code for the state.
-     * If the state is popped then loop.
+     * If the state is popped then loop and use the older state.
      */
     while (regstack.ga_len > 0 && status != RA_FAIL)
     {
@@ -4645,7 +4671,7 @@ regmatch(scan)
        {
          case RS_NOPEN:
            /* Result is passed on as-is, simply pop the state. */
-           regstack_pop(&regstack, &scan, &startp);
+           regstack_pop(&regstack, &scan);
            break;
 
          case RS_MOPEN:
@@ -4653,7 +4679,7 @@ regmatch(scan)
            if (status == RA_NOMATCH)
                restore_se(&rp->rs_un.sesave, &reg_startpos[rp->rs_no],
                                                  &reg_startp[rp->rs_no]);
-           regstack_pop(&regstack, &scan, &startp);
+           regstack_pop(&regstack, &scan);
            break;
 
 #ifdef FEAT_SYN_HL
@@ -4662,7 +4688,7 @@ regmatch(scan)
            if (status == RA_NOMATCH)
                restore_se(&rp->rs_un.sesave, &reg_startzpos[rp->rs_no],
                                                 &reg_startzp[rp->rs_no]);
-           regstack_pop(&regstack, &scan, &startp);
+           regstack_pop(&regstack, &scan);
            break;
 #endif
 
@@ -4671,7 +4697,7 @@ regmatch(scan)
            if (status == RA_NOMATCH)
                restore_se(&rp->rs_un.sesave, &reg_endpos[rp->rs_no],
                                                    &reg_endp[rp->rs_no]);
-           regstack_pop(&regstack, &scan, &startp);
+           regstack_pop(&regstack, &scan);
            break;
 
 #ifdef FEAT_SYN_HL
@@ -4680,34 +4706,33 @@ regmatch(scan)
            if (status == RA_NOMATCH)
                restore_se(&rp->rs_un.sesave, &reg_endzpos[rp->rs_no],
                                                   &reg_endzp[rp->rs_no]);
-           regstack_pop(&regstack, &scan, &startp);
+           regstack_pop(&regstack, &scan);
            break;
 #endif
 
          case RS_BRANCH:
            if (status == RA_MATCH)
                /* this branch matched, use it */
-               regstack_pop(&regstack, &scan, &startp);
+               regstack_pop(&regstack, &scan);
            else
            {
                if (status != RA_BREAK)
                {
                    /* After a non-matching branch: try next one. */
-                   reg_restore(&rp->rs_un.regsave);
+                   reg_restore(&rp->rs_un.regsave, &backpos);
                    scan = rp->rs_scan;
                }
                if (scan == NULL || OP(scan) != BRANCH)
                {
                    /* no more branches, didn't find a match */
                    status = RA_NOMATCH;
-                   regstack_pop(&regstack, &scan, &startp);
+                   regstack_pop(&regstack, &scan);
                }
                else
                {
                    /* Prepare to try a branch. */
                    rp->rs_scan = regnext(scan);
-                   reg_save(&rp->rs_un.regsave);
-                   startp = REGS2STARTP(&rp->rs_un.regsave);
+                   reg_save(&rp->rs_un.regsave, &backpos);
                    scan = OPERAND(scan);
                }
            }
@@ -4717,10 +4742,10 @@ regmatch(scan)
            /* Pop the state.  Restore pointers when there is no match. */
            if (status == RA_NOMATCH)
            {
-               reg_restore(&rp->rs_un.regsave);
+               reg_restore(&rp->rs_un.regsave, &backpos);
                --brace_count[rp->rs_no];       /* decrement match count */
            }
-           regstack_pop(&regstack, &scan, &startp);
+           regstack_pop(&regstack, &scan);
            break;
 
          case RS_BRCPLX_LONG:
@@ -4728,12 +4753,12 @@ regmatch(scan)
            if (status == RA_NOMATCH)
            {
                /* There was no match, but we did find enough matches. */
-               reg_restore(&rp->rs_un.regsave);
+               reg_restore(&rp->rs_un.regsave, &backpos);
                --brace_count[rp->rs_no];
                /* continue with the items after "\{}" */
                status = RA_CONT;
            }
-           regstack_pop(&regstack, &scan, &startp);
+           regstack_pop(&regstack, &scan);
            if (status == RA_CONT)
                scan = regnext(scan);
            break;
@@ -4742,8 +4767,8 @@ regmatch(scan)
            /* Pop the state.  Restore pointers when there is no match. */
            if (status == RA_NOMATCH)
                /* There was no match, try to match one more item. */
-               reg_restore(&rp->rs_un.regsave);
-           regstack_pop(&regstack, &scan, &startp);
+               reg_restore(&rp->rs_un.regsave, &backpos);
+           regstack_pop(&regstack, &scan);
            if (status == RA_NOMATCH)
            {
                scan = OPERAND(scan);
@@ -4760,10 +4785,10 @@ regmatch(scan)
            else
            {
                status = RA_CONT;
-               if (rp->rs_no != SUBPAT)
-                   reg_restore(&rp->rs_un.regsave);    /* zero-width */
+               if (rp->rs_no != SUBPAT)        /* zero-width */
+                   reg_restore(&rp->rs_un.regsave, &backpos);
            }
-           regstack_pop(&regstack, &scan, &startp);
+           regstack_pop(&regstack, &scan);
            if (status == RA_CONT)
                scan = regnext(scan);
            break;
@@ -4771,7 +4796,7 @@ regmatch(scan)
          case RS_BEHIND1:
            if (status == RA_NOMATCH)
            {
-               regstack_pop(&regstack, &scan, &startp);
+               regstack_pop(&regstack, &scan);
                regstack.ga_len -= sizeof(regbehind_T);
            }
            else
@@ -4783,7 +4808,7 @@ regmatch(scan)
                 * the current position. */
 
                /* save the position after the found match for next */
-               reg_save(&(((regbehind_T *)rp) - 1)->save_after);
+               reg_save(&(((regbehind_T *)rp) - 1)->save_after, &backpos);
 
                /* start looking for a match with operand at the current
                 * postion.  Go back one character until we find the
@@ -4796,7 +4821,7 @@ regmatch(scan)
 
                rp->rs_state = RS_BEHIND2;
 
-               reg_restore(&rp->rs_un.regsave);
+               reg_restore(&rp->rs_un.regsave, &backpos);
                scan = OPERAND(rp->rs_scan);
            }
            break;
@@ -4810,11 +4835,12 @@ regmatch(scan)
                /* found a match that ends where "next" started */
                behind_pos = (((regbehind_T *)rp) - 1)->save_behind;
                if (rp->rs_no == BEHIND)
-                   reg_restore(&(((regbehind_T *)rp) - 1)->save_after);
+                   reg_restore(&(((regbehind_T *)rp) - 1)->save_after,
+                                                                   &backpos);
                else
                    /* But we didn't want a match. */
                    status = RA_NOMATCH;
-               regstack_pop(&regstack, &scan, &startp);
+               regstack_pop(&regstack, &scan);
                regstack.ga_len -= sizeof(regbehind_T);
            }
            else
@@ -4834,7 +4860,7 @@ regmatch(scan)
                            no = FAIL;
                        else
                        {
-                           reg_restore(&rp->rs_un.regsave);
+                           reg_restore(&rp->rs_un.regsave, &backpos);
                            rp->rs_un.regsave.rs_u.pos.col =
                                                 (colnr_T)STRLEN(regline);
                        }
@@ -4852,7 +4878,7 @@ regmatch(scan)
                if (no == OK)
                {
                    /* Advanced, prepare for finding match again. */
-                   reg_restore(&rp->rs_un.regsave);
+                   reg_restore(&rp->rs_un.regsave, &backpos);
                    scan = OPERAND(rp->rs_scan);
                }
                else
@@ -4861,12 +4887,13 @@ regmatch(scan)
                    behind_pos = (((regbehind_T *)rp) - 1)->save_behind;
                    if (rp->rs_no == NOBEHIND)
                    {
-                       reg_restore(&(((regbehind_T *)rp) - 1)->save_after);
+                       reg_restore(&(((regbehind_T *)rp) - 1)->save_after,
+                                                                   &backpos);
                        status = RA_MATCH;
                    }
                    else
                        status = RA_NOMATCH;
-                   regstack_pop(&regstack, &scan, &startp);
+                   regstack_pop(&regstack, &scan);
                    regstack.ga_len -= sizeof(regbehind_T);
                }
            }
@@ -4879,14 +4906,14 @@ regmatch(scan)
 
                if (status == RA_MATCH)
                {
-                   regstack_pop(&regstack, &scan, &startp);
+                   regstack_pop(&regstack, &scan);
                    regstack.ga_len -= sizeof(regstar_T);
                    break;
                }
 
                /* Tried once already, restore input pointers. */
                if (status != RA_BREAK)
-                   reg_restore(&rp->rs_un.regsave);
+                   reg_restore(&rp->rs_un.regsave, &backpos);
 
                /* Repeat until we found a position where it could match. */
                for (;;)
@@ -4936,7 +4963,7 @@ regmatch(scan)
                    if (rst->nextb == NUL || *reginput == rst->nextb
                                             || *reginput == rst->nextb_ic)
                    {
-                       reg_save(&rp->rs_un.regsave);
+                       reg_save(&rp->rs_un.regsave, &backpos);
                        scan = regnext(rp->rs_scan);
                        status = RA_CONT;
                        break;
@@ -4945,7 +4972,7 @@ regmatch(scan)
                if (status != RA_CONT)
                {
                    /* Failed. */
-                   regstack_pop(&regstack, &scan, &startp);
+                   regstack_pop(&regstack, &scan);
                    regstack.ga_len -= sizeof(regstar_T);
                    status = RA_NOMATCH;
                }
@@ -4996,11 +5023,10 @@ regmatch(scan)
  * Returns pointer to new item.  Returns NULL when out of memory.
  */
     static regitem_T *
-regstack_push(regstack, state, scan, startp)
+regstack_push(regstack, state, scan)
     garray_T   *regstack;
     regstate_T state;
     char_u     *scan;
-    long       startp;
 {
     regitem_T  *rp;
 
@@ -5015,7 +5041,6 @@ regstack_push(regstack, state, scan, startp)
     rp = (regitem_T *)((char *)regstack->ga_data + regstack->ga_len);
     rp->rs_state = state;
     rp->rs_scan = scan;
-    rp->rs_startp = startp;
 
     regstack->ga_len += sizeof(regitem_T);
     return rp;
@@ -5025,16 +5050,14 @@ regstack_push(regstack, state, scan, startp)
  * Pop an item from the regstack.
  */
     static void
-regstack_pop(regstack, scan, startp)
+regstack_pop(regstack, scan)
     garray_T   *regstack;
     char_u     **scan;
-    long       *startp;
 {
     regitem_T  *rp;
 
     rp = (regitem_T *)((char *)regstack->ga_data + regstack->ga_len) - 1;
     *scan = rp->rs_scan;
-    *startp = rp->rs_startp;
 
     regstack->ga_len -= sizeof(regitem_T);
 }
@@ -5441,7 +5464,7 @@ regnext(p)
     if (offset == 0)
        return NULL;
 
-    if (OP(p) == BACK || OP(p) == BACKP)
+    if (OP(p) == BACK)
        return p - offset;
     else
        return p + offset;
@@ -5526,8 +5549,9 @@ reg_nextline()
  * Save the input line and position in a regsave_T.
  */
     static void
-reg_save(save)
+reg_save(save, gap)
     regsave_T  *save;
+    garray_T   *gap;
 {
     if (REG_MULTI)
     {
@@ -5536,14 +5560,16 @@ reg_save(save)
     }
     else
        save->rs_u.ptr = reginput;
+    save->rs_len = gap->ga_len;
 }
 
 /*
  * Restore the input line and position from a regsave_T.
  */
     static void
-reg_restore(save)
+reg_restore(save, gap)
     regsave_T  *save;
+    garray_T   *gap;
 {
     if (REG_MULTI)
     {
@@ -5558,6 +5584,7 @@ reg_restore(save)
     }
     else
        reginput = save->rs_u.ptr;
+    gap->ga_len = save->rs_len;
 }
 
 /*
@@ -5911,9 +5938,6 @@ regprop(op)
       case BACK:
        p = "BACK";
        break;
-      case BACKP:
-       p = "BACKP";
-       break;
       case END:
        p = "END";
        break;
index f72325b699a38dba72b84f5776b32c2cc98c6f0a..30a02ab41fccfe35624b541c7a70e0e1b9a69a55 100644 (file)
@@ -540,7 +540,7 @@ spell_load_file(fname)
     int                region = REGION_ALL;
     int                wlen;
     winfo_T    *wi;
-    dword_T    *dw, *edw;
+    dword_T    *dw, *edw = NULL;
     nword_T    *nw = NULL;
     int                flags;
     char_u     *save_sourcing_name = sourcing_name;
index bdcdb4c69256089868476d1ad0948016f6aeb066..80eb90bf699ba694167818d364d2e72c06880a45 100644 (file)
Binary files a/src/testdir/test24.in and b/src/testdir/test24.in differ
index ae9dcb4e21e9342ea2102f693ef43dc7f4d6ab59..ed25dd4364cc0a5936ccb69bf7469ee5d0191430 100644 (file)
@@ -25,3 +25,5 @@ xx Aaaa xx
 xx Aaa xx
 xx foobar xA xx
 xx an A xx
+XX 9;
+YY 77;
index 8ecdf38eb12c73e0e3ff8c4915b22cac66369fa5..d0bad957c541642c282d42dbffe9d92b05181204 100644 (file)
@@ -36,5 +36,5 @@
 #define VIM_VERSION_NODOT      "vim70aa"
 #define VIM_VERSION_SHORT      "7.0aa"
 #define VIM_VERSION_MEDIUM     "7.0aa ALPHA"
-#define VIM_VERSION_LONG       "VIM - Vi IMproved 7.0aa ALPHA (2005 Mar 25)"
-#define VIM_VERSION_LONG_DATE  "VIM - Vi IMproved 7.0aa ALPHA (2005 Mar 25, compiled "
+#define VIM_VERSION_LONG       "VIM - Vi IMproved 7.0aa ALPHA (2005 Mar 28)"
+#define VIM_VERSION_LONG_DATE  "VIM - Vi IMproved 7.0aa ALPHA (2005 Mar 28, compiled "