mirror of
https://github.com/vim/vim
synced 2025-07-15 16:51:57 +00:00
updated for version 7.0065
This commit is contained in:
@ -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
|
||||
|
||||
|
||||
|
@ -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.
|
||||
|
@ -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
|
||||
|
@ -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".
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
" Vim filetype plugin file
|
||||
" Language: RPL/2
|
||||
" Maintainer: Jo<4A>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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
15
runtime/indent/bib.vim
Normal file
15
runtime/indent/bib.vim
Normal file
@ -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<"
|
@ -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<"
|
||||
|
@ -11,3 +11,5 @@ let b:did_indent = 1
|
||||
|
||||
" C# is like indenting C
|
||||
setlocal cindent
|
||||
|
||||
let b:undo_indent = "setl cin<"
|
||||
|
15
runtime/indent/lisp.vim
Normal file
15
runtime/indent/lisp.vim
Normal file
@ -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<"
|
@ -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<4A>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)
|
||||
|
@ -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
|
||||
|
@ -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; \
|
||||
|
@ -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$
|
||||
*
|
||||
|
@ -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
|
||||
}
|
||||
|
220
src/regexp.c
220
src/regexp.c
@ -100,7 +100,7 @@
|
||||
*
|
||||
* +----------------------+
|
||||
* V |
|
||||
* <aa>\+ BRANCH <aa> --> BRANCH --> BACKP BRANCH --> NOTHING --> END
|
||||
* <aa>\+ BRANCH <aa> --> BRANCH --> BACK BRANCH --> NOTHING --> END
|
||||
* | | ^ ^
|
||||
* | +-----------+ |
|
||||
* +--------------------------------------------------+
|
||||
@ -229,8 +229,6 @@
|
||||
#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(®stack, 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;
|
||||
|
||||
case BACKP:
|
||||
/*
|
||||
* 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;
|
||||
|
||||
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(®stack, RS_MOPEN, scan, startp);
|
||||
rp = regstack_push(®stack, RS_MOPEN, scan);
|
||||
if (rp == NULL)
|
||||
status = RA_FAIL;
|
||||
else
|
||||
@ -4109,7 +4144,7 @@ regmatch(scan)
|
||||
|
||||
case NOPEN: /* \%( */
|
||||
case NCLOSE: /* \) after \%( */
|
||||
if (regstack_push(®stack, RS_NOPEN, scan, startp) == NULL)
|
||||
if (regstack_push(®stack, 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(®stack, RS_ZOPEN, scan, startp);
|
||||
rp = regstack_push(®stack, RS_ZOPEN, scan);
|
||||
if (rp == NULL)
|
||||
status = RA_FAIL;
|
||||
else
|
||||
@ -4154,7 +4189,7 @@ regmatch(scan)
|
||||
{
|
||||
no = op - MCLOSE;
|
||||
cleanup_subexpr();
|
||||
rp = regstack_push(®stack, RS_MCLOSE, scan, startp);
|
||||
rp = regstack_push(®stack, RS_MCLOSE, scan);
|
||||
if (rp == NULL)
|
||||
status = RA_FAIL;
|
||||
else
|
||||
@ -4179,7 +4214,7 @@ regmatch(scan)
|
||||
{
|
||||
no = op - ZCLOSE;
|
||||
cleanup_zsubexpr();
|
||||
rp = regstack_push(®stack, RS_ZCLOSE, scan, startp);
|
||||
rp = regstack_push(®stack, 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(®stack, RS_BRANCH, scan, startp);
|
||||
rp = regstack_push(®stack, 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(®stack, RS_BRCPLX_MORE, scan, startp);
|
||||
rp = regstack_push(®stack, 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(®stack, RS_BRCPLX_LONG,
|
||||
scan, startp);
|
||||
rp = regstack_push(®stack, 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(®stack, RS_BRCPLX_SHORT,
|
||||
scan, startp);
|
||||
rp = regstack_push(®stack, 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(®stack, 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(®stack, RS_NOMATCH, scan, startp);
|
||||
rp = regstack_push(®stack, 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(®stack, RS_BEHIND1, scan, startp);
|
||||
rp = regstack_push(®stack, 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(®stack, &scan, &startp);
|
||||
regstack_pop(®stack, &scan);
|
||||
break;
|
||||
|
||||
case RS_MOPEN:
|
||||
@ -4653,7 +4679,7 @@ regmatch(scan)
|
||||
if (status == RA_NOMATCH)
|
||||
restore_se(&rp->rs_un.sesave, ®_startpos[rp->rs_no],
|
||||
®_startp[rp->rs_no]);
|
||||
regstack_pop(®stack, &scan, &startp);
|
||||
regstack_pop(®stack, &scan);
|
||||
break;
|
||||
|
||||
#ifdef FEAT_SYN_HL
|
||||
@ -4662,7 +4688,7 @@ regmatch(scan)
|
||||
if (status == RA_NOMATCH)
|
||||
restore_se(&rp->rs_un.sesave, ®_startzpos[rp->rs_no],
|
||||
®_startzp[rp->rs_no]);
|
||||
regstack_pop(®stack, &scan, &startp);
|
||||
regstack_pop(®stack, &scan);
|
||||
break;
|
||||
#endif
|
||||
|
||||
@ -4671,7 +4697,7 @@ regmatch(scan)
|
||||
if (status == RA_NOMATCH)
|
||||
restore_se(&rp->rs_un.sesave, ®_endpos[rp->rs_no],
|
||||
®_endp[rp->rs_no]);
|
||||
regstack_pop(®stack, &scan, &startp);
|
||||
regstack_pop(®stack, &scan);
|
||||
break;
|
||||
|
||||
#ifdef FEAT_SYN_HL
|
||||
@ -4680,34 +4706,33 @@ regmatch(scan)
|
||||
if (status == RA_NOMATCH)
|
||||
restore_se(&rp->rs_un.sesave, ®_endzpos[rp->rs_no],
|
||||
®_endzp[rp->rs_no]);
|
||||
regstack_pop(®stack, &scan, &startp);
|
||||
regstack_pop(®stack, &scan);
|
||||
break;
|
||||
#endif
|
||||
|
||||
case RS_BRANCH:
|
||||
if (status == RA_MATCH)
|
||||
/* this branch matched, use it */
|
||||
regstack_pop(®stack, &scan, &startp);
|
||||
regstack_pop(®stack, &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(®stack, &scan, &startp);
|
||||
regstack_pop(®stack, &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(®stack, &scan, &startp);
|
||||
regstack_pop(®stack, &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(®stack, &scan, &startp);
|
||||
regstack_pop(®stack, &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(®stack, &scan, &startp);
|
||||
reg_restore(&rp->rs_un.regsave, &backpos);
|
||||
regstack_pop(®stack, &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(®stack, &scan, &startp);
|
||||
regstack_pop(®stack, &scan);
|
||||
if (status == RA_CONT)
|
||||
scan = regnext(scan);
|
||||
break;
|
||||
@ -4771,7 +4796,7 @@ regmatch(scan)
|
||||
case RS_BEHIND1:
|
||||
if (status == RA_NOMATCH)
|
||||
{
|
||||
regstack_pop(®stack, &scan, &startp);
|
||||
regstack_pop(®stack, &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(®stack, &scan, &startp);
|
||||
regstack_pop(®stack, &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(®stack, &scan, &startp);
|
||||
regstack_pop(®stack, &scan);
|
||||
regstack.ga_len -= sizeof(regbehind_T);
|
||||
}
|
||||
}
|
||||
@ -4879,14 +4906,14 @@ regmatch(scan)
|
||||
|
||||
if (status == RA_MATCH)
|
||||
{
|
||||
regstack_pop(®stack, &scan, &startp);
|
||||
regstack_pop(®stack, &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(®stack, &scan, &startp);
|
||||
regstack_pop(®stack, &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;
|
||||
|
@ -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;
|
||||
|
Binary file not shown.
@ -25,3 +25,5 @@ xx Aaaa xx
|
||||
xx Aaa xx
|
||||
xx foobar xA xx
|
||||
xx an A xx
|
||||
XX 9;
|
||||
YY 77;
|
||||
|
@ -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 "
|
||||
|
Reference in New Issue
Block a user