0
0
mirror of https://github.com/vim/vim.git synced 2025-07-04 23:07:33 -04:00

updated for version 7.0211

This commit is contained in:
Bram Moolenaar 2006-03-01 22:01:55 +00:00
parent e224ffa156
commit e1438bb8d0
13 changed files with 415 additions and 117 deletions

View File

@ -1,4 +1,4 @@
*message.txt* For Vim version 7.0aa. Last change: 2006 Jan 08
*message.txt* For Vim version 7.0aa. Last change: 2006 Mar 01
VIM REFERENCE MANUAL by Bram Moolenaar
@ -751,9 +751,12 @@ and the screen is about to be redrawn:
-> Press <Enter> or <Space> to redraw the screen and continue, without that
key being used otherwise.
-> Press ':' or any other Normal mode command character to start that command.
-> Press 'k', 'u', 'b' or 'g' to scroll back in the messages. This works the
same way as at the |more-prompt|. Only works when 'compatible' is off and
'more' is on.
-> Press 'k', <Up>, 'u', 'b' or 'g' to scroll back in the messages. This
works the same way as at the |more-prompt|. Only works when 'compatible'
is off and 'more' is on.
-> Pressing 'j', 'd' or <Down> is ignored when messages scrolled off the top
of the screen, 'compatible' is off and 'more' is on, to avoid that typing
one 'j' too many causes the messages to disappear.
-> Press <C-Y> to copy (yank) a modeless selection to the clipboard register.
-> Use a menu. The characters defined for Cmdline-mode are used.
-> When 'mouse' contains the 'r' flag, clicking the left mouse button works

View File

@ -1,4 +1,4 @@
*tabpage.txt* For Vim version 7.0aa. Last change: 2006 Feb 26
*tabpage.txt* For Vim version 7.0aa. Last change: 2006 Mar 01
VIM REFERENCE MANUAL by Bram Moolenaar
@ -32,8 +32,9 @@ each tab page. With the mouse you can click on the label to jump to that tab
page. There are other ways to move between tab pages, see below.
Most commands work only in the current tab page. That includes the |CTRL-W|
commands, |:windo|, |:all| and |:ball|. The commands that are aware of
other tab pages than the current one are mentioned below.
commands, |:windo|, |:all| and |:ball| (when not using the |:tab| modifier).
The commands that are aware of other tab pages than the current one are
mentioned below.
Tabs are also a nice way to edit a buffer temporarily without changing the
current window layout. Open a new tab page, do whatever you want to do and
@ -45,7 +46,7 @@ close the tab page.
OPENING A NEW TAB PAGE:
When starting Vim "vim -p filename ..." opens each file argument in a separate
tab page (up to 10). |-p|
tab page (up to 'tabpagemax'). |-p|
A double click with the mouse in the tab pages line opens a new, empty tab
page. It is placed left of the position of the click. The first click may

View File

@ -1,6 +1,6 @@
" Vim plugin for showing matching parens
" Maintainer: Bram Moolenaar <Bram@vim.org>
" Last Change: 2006 Feb 27
" Last Change: 2006 Mar 01
" Exit quickly when:
" - this plugin was already loaded (or disabled)
@ -28,7 +28,7 @@ endif
function! s:Highlight_Matching_Pair()
" Remove any previous match.
if s:paren_hl_on
match none
3match none
let s:paren_hl_on = 0
endif
@ -81,6 +81,8 @@ function! s:Highlight_Matching_Pair()
if before > 0
if &ve != ''
let vcol = virtcol('.')
let old_ve = &ve
set ve=all
endif
call cursor(c_lnum, c_col - before)
endif
@ -88,6 +90,7 @@ function! s:Highlight_Matching_Pair()
if before > 0
if &ve != ''
exe 'normal ' . vcol . '|'
let &ve = old_ve
else
call cursor(0, c_col)
endif
@ -95,12 +98,12 @@ function! s:Highlight_Matching_Pair()
" If a match is found setup match highlighting.
if m_lnum > 0 && m_lnum >= line('w0') && m_lnum <= line('w$')
exe 'match MatchParen /\(\%' . c_lnum . 'l\%' . (c_col - before) .
exe '3match MatchParen /\(\%' . c_lnum . 'l\%' . (c_col - before) .
\ 'c\)\|\(\%' . m_lnum . 'l\%' . m_col . 'c\)/'
let s:paren_hl_on = 1
endif
endfunction
" Define commands that will disable and enable the plugin.
command! NoMatchParen match none | unlet! g:loaded_matchparen | au! matchparen
command! NoMatchParen 3match none | unlet! g:loaded_matchparen | au! matchparen
command! DoMatchParen runtime plugin/matchparen.vim | doau CursorMoved

162
runtime/syntax/rd.vim Normal file
View File

@ -0,0 +1,162 @@
" Vim syntax file
" Language: R Help File
" Maintainer: Johannes Ranke <jranke@uni-bremen.de>
" Last Change: 2006 Mär 01
" Version: 0.5
" Remarks: - Now includes R syntax highlighting in the appropriate
" sections if an r.vim file is in the same directory or in the
" default debian location.
" - I didn't yet include any special markup for S4 methods.
" - The two versions of \item{}{} markup are not
" distinguished (in the \arguments{} environment, the items to
" be described are R identifiers, but not in the \describe{}
" environment).
" - There is no Latex markup in equations
" Version Clears: {{{1
" For version 5.x: Clear all syntax items
" For version 6.x: Quit when a syntax file was already loaded
if version < 600
syntax clear
elseif exists("b:current_syntax")
finish
endif
syn case match
" Rd identifiers {{{
syn region rdIdentifier matchgroup=rdSection start="\\name{" end="}"
syn region rdIdentifier matchgroup=rdSection start="\\alias{" end="}"
syn region rdIdentifier matchgroup=rdSection start="\\pkg{" end="}"
syn region rdIdentifier matchgroup=rdSection start="\\item{" end="}" contained
syn region rdIdentifier matchgroup=rdSection start="\\method{" end=/}/ contained
" Highlighting of R code using an existing r.vim syntax file if available {{{1
let s:syntaxdir = expand("<sfile>:p:h") "look in the directory of this file
let s:rsyntax = s:syntaxdir . "/r.vim"
if filereadable(s:rsyntax)
syn include @R <sfile>:p:h/r.vim
elseif filereadable('/usr/share/vim/vim64/syntax/r.vim') "and debian location
syn include @R /usr/share/vim/vimcurrent/syntax/r.vim
else
syn match rdRComment /\#.*/ "if no r.vim is found, do comments
syn cluster R contains=rdRComment
endif
syn region rdRcode matchgroup=Delimiter start="\\examples{" matchgroup=Delimiter transparent end=/}/ contains=@R,rdSection
syn region rdRcode matchgroup=Delimiter start="\\usage{" matchgroup=Delimiter transparent end=/}/ contains=@R,rdIdentifier
syn region rdRcode matchgroup=Delimiter start="\\synopsis{" matchgroup=Delimiter transparent end=/}/ contains=@R
syn region rdRcode matchgroup=Delimiter start="\\special{" matchgroup=Delimiter transparent end=/}/ contains=@R contained
syn region rdRcode matchgroup=Delimiter start="\\code{" matchgroup=Delimiter transparent end=/}/ contains=@R contained
" Strings {{{1
syn region rdString start=/"/ end=/"/
" Special TeX characters ( \$ \& \% \# \{ \} \_) {{{1
syn match rdSpecialChar "\\[$&%#{}_]"
" Special Delimiters {{{1
syn match rdDelimiter "\\cr"
syn match rdDelimiter "\\tab "
" Keywords {{{1
syn match rdKeyword "\\R"
syn match rdKeyword "\\dots"
syn match rdKeyword "\\ldots"
" Links {{{1
syn region rdLink matchgroup=rdSection start="\\link{" end="}" contained keepend
syn region rdLink matchgroup=rdSection start="\\link\[.*\]{" end="}" contained keepend
" Type Styles {{{1
syn match rdType "\\emph\>"
syn match rdType "\\strong\>"
syn match rdType "\\bold\>"
syn match rdType "\\sQuote\>"
syn match rdType "\\dQuote\>"
syn match rdType "\\code\>"
syn match rdType "\\preformatted\>"
syn match rdType "\\kbd\>"
syn match rdType "\\samp\>"
syn match rdType "\\eqn\>"
syn match rdType "\\deqn\>"
syn match rdType "\\file\>"
syn match rdType "\\email\>"
syn match rdType "\\url\>"
syn match rdType "\\var\>"
syn match rdType "\\env\>"
syn match rdType "\\option\>"
syn match rdType "\\command\>"
syn match rdType "\\dfn\>"
syn match rdType "\\cite\>"
syn match rdType "\\acronym\>"
" Rd sections {{{1
syn match rdSection "\\encoding\>"
syn match rdSection "\\title\>"
syn match rdSection "\\description\>"
syn match rdSection "\\concept\>"
syn match rdSection "\\arguments\>"
syn match rdSection "\\details\>"
syn match rdSection "\\value\>"
syn match rdSection "\\references\>"
syn match rdSection "\\note\>"
syn match rdSection "\\author\>"
syn match rdSection "\\seealso\>"
syn match rdSection "\\keyword\>"
syn match rdSection "\\docType\>"
syn match rdSection "\\format\>"
syn match rdSection "\\source\>"
syn match rdSection "\\itemize\>"
syn match rdSection "\\describe\>"
syn match rdSection "\\enumerate\>"
syn match rdSection "\\item "
syn match rdSection "\\item$"
syn match rdSection "\\tabular{[lcr]*}"
syn match rdSection "\\dontrun\>"
syn match rdSection "\\dontshow\>"
syn match rdSection "\\testonly\>"
" Freely named Sections {{{1
syn region rdFreesec matchgroup=Delimiter start="\\section{" matchgroup=Delimiter transparent end=/}/
" Rd comments {{{1
syn match rdComment /%.*$/ contained
" Error {{{1
syn region rdRegion matchgroup=Delimiter start=/(/ matchgroup=Delimiter end=/)/ transparent contains=ALLBUT,rdError,rdBraceError,rdCurlyError
syn region rdRegion matchgroup=Delimiter start=/{/ matchgroup=Delimiter end=/}/ transparent contains=ALLBUT,rdError,rdBraceError,rdParenError
syn region rdRegion matchgroup=Delimiter start=/\[/ matchgroup=Delimiter end=/]/ transparent contains=ALLBUT,rdError,rdCurlyError,rdParenError
syn match rdError /[)\]}]/
syn match rdBraceError /[)}]/ contained
syn match rdCurlyError /[)\]]/ contained
syn match rdParenError /[\]}]/ contained
" Define the default highlighting {{{1
" For version 5.7 and earlier: only when not done already
" For version 5.8 and later: only when an item doesn't have highlighting yet
if version >= 508 || !exists("did_rd_syntax_inits")
if version < 508
let did_rd_syntax_inits = 1
command -nargs=+ HiLink hi link <args>
else
command -nargs=+ HiLink hi def link <args>
endif
HiLink rdIdentifier Identifier
HiLink rdString String
HiLink rdKeyword Keyword
HiLink rdLink Underlined
HiLink rdType Type
HiLink rdSection PreCondit
HiLink rdError Error
HiLink rdBraceError Error
HiLink rdCurlyError Error
HiLink rdParenError Error
HiLink rdDelimiter Delimiter
HiLink rdComment Comment
HiLink rdRComment Comment
HiLink rdSpecialChar SpecialChar
delcommand HiLink
endif
let b:current_syntax = "rd"
" vim: foldmethod=marker:

View File

@ -2,8 +2,8 @@
" Language: shell (sh) Korn shell (ksh) bash (sh)
" Maintainer: Dr. Charles E. Campbell, Jr. <NdrOchipS@PcampbellAfamily.Mbiz>
" Previous Maintainer: Lennart Schultz <Lennart.Schultz@ecmwf.int>
" Last Change: Feb 01, 2006
" Version: 80
" Last Change: Mar 01, 2006
" Version: 81
" URL: http://mysite.verizon.net/astronaut/vim/index.html#vimlinks_syntax
"
" Using the following VIM variables: {{{1
@ -123,7 +123,7 @@ syn match shTestError "]"
" Options Interceptor: {{{1
" ====================
syn match shOption "\s[\-+][a-zA-Z0-9]\+\>"ms=s+1
syn match shOption "\s--[^ \t$`|]\+"ms=s+1
syn match shOption "\s--[^ \t$`'"|]\+"ms=s+1
" Operators: {{{1
" ==========

View File

@ -4191,6 +4191,8 @@ do_arg_all(count, forceit)
int p_ea_save;
alist_T *alist; /* argument list to be used */
buf_T *buf;
tabpage_T *tpnext;
int had_tab = cmdmod.tab;
if (ARGCOUNT <= 0)
{
@ -4214,79 +4216,97 @@ do_arg_all(count, forceit)
* Also close windows that are not full width;
* When 'hidden' or "forceit" set the buffer becomes hidden.
* Windows that have a changed buffer and can't be hidden won't be closed.
* When the ":tab" modifier was used do this for all tab pages.
*/
for (wp = firstwin; wp != NULL; wp = wpnext)
if (had_tab > 0)
goto_tabpage_tp(first_tabpage);
for (;;)
{
wpnext = wp->w_next;
buf = wp->w_buffer;
if (buf->b_ffname == NULL
|| buf->b_nwindows > 1
tpnext = curtab->tp_next;
for (wp = firstwin; wp != NULL; wp = wpnext)
{
wpnext = wp->w_next;
buf = wp->w_buffer;
if (buf->b_ffname == NULL
|| buf->b_nwindows > 1
#ifdef FEAT_VERTSPLIT
|| wp->w_width != Columns
|| wp->w_width != Columns
#endif
)
i = ARGCOUNT;
else
{
/* check if the buffer in this window is in the arglist */
for (i = 0; i < ARGCOUNT; ++i)
)
i = ARGCOUNT;
else
{
if (ARGLIST[i].ae_fnum == buf->b_fnum
|| fullpathcmp(alist_name(&ARGLIST[i]),
buf->b_ffname, TRUE) & FPC_SAME)
/* check if the buffer in this window is in the arglist */
for (i = 0; i < ARGCOUNT; ++i)
{
if (i < opened_len)
opened[i] = TRUE;
if (wp->w_alist != curwin->w_alist)
if (ARGLIST[i].ae_fnum == buf->b_fnum
|| fullpathcmp(alist_name(&ARGLIST[i]),
buf->b_ffname, TRUE) & FPC_SAME)
{
/* Use the current argument list for all windows
* containing a file from it. */
alist_unlink(wp->w_alist);
wp->w_alist = curwin->w_alist;
++wp->w_alist->al_refcount;
if (i < opened_len)
opened[i] = TRUE;
if (wp->w_alist != curwin->w_alist)
{
/* Use the current argument list for all windows
* containing a file from it. */
alist_unlink(wp->w_alist);
wp->w_alist = curwin->w_alist;
++wp->w_alist->al_refcount;
}
break;
}
break;
}
}
}
wp->w_arg_idx = i;
wp->w_arg_idx = i;
if (i == ARGCOUNT) /* close this window */
{
if (P_HID(buf) || forceit || buf->b_nwindows > 1
|| !bufIsChanged(buf))
if (i == ARGCOUNT) /* close this window */
{
/* If the buffer was changed, and we would like to hide it,
* try autowriting. */
if (!P_HID(buf) && buf->b_nwindows <= 1 && bufIsChanged(buf))
if (P_HID(buf) || forceit || buf->b_nwindows > 1
|| !bufIsChanged(buf))
{
(void)autowrite(buf, FALSE);
#ifdef FEAT_AUTOCMD
/* check if autocommands removed the window */
if (!win_valid(wp) || !buf_valid(buf))
/* If the buffer was changed, and we would like to hide it,
* try autowriting. */
if (!P_HID(buf) && buf->b_nwindows <= 1 && bufIsChanged(buf))
{
wpnext = firstwin; /* start all over... */
continue;
(void)autowrite(buf, FALSE);
#ifdef FEAT_AUTOCMD
/* check if autocommands removed the window */
if (!win_valid(wp) || !buf_valid(buf))
{
wpnext = firstwin; /* start all over... */
continue;
}
#endif
}
#ifdef FEAT_WINDOWS
if (firstwin == lastwin) /* don't close last window */
#endif
use_firstwin = TRUE;
#ifdef FEAT_WINDOWS
else
{
win_close(wp, !P_HID(buf) && !bufIsChanged(buf));
# ifdef FEAT_AUTOCMD
/* check if autocommands removed the next window */
if (!win_valid(wpnext))
wpnext = firstwin; /* start all over... */
# endif
}
#endif
}
#ifdef FEAT_WINDOWS
if (firstwin == lastwin) /* don't close last window */
#endif
use_firstwin = TRUE;
#ifdef FEAT_WINDOWS
else
{
win_close(wp, !P_HID(buf) && !bufIsChanged(buf));
# ifdef FEAT_AUTOCMD
/* check if autocommands removed the next window */
if (!win_valid(wpnext))
wpnext = firstwin; /* start all over... */
# endif
}
#endif
}
}
/* Without the ":tab" modifier only do the current tab page. */
if (had_tab == 0 || tpnext == NULL)
break;
# ifdef FEAT_AUTOCMD
/* check if autocommands removed the next tab page */
if (!valid_tabpage(tpnext))
tpnext = first_tabpage; /* start all over...*/
# endif
goto_tabpage_tp(tpnext);
}
/*
@ -4359,6 +4379,10 @@ do_arg_all(count, forceit)
use_firstwin = FALSE;
}
ui_breakcheck();
/* When ":tab" was used open a new tab for a new window repeatedly. */
if (had_tab > 0 && tabpage_index(NULL) <= p_tpm)
cmdmod.tab = 9999;
}
/* Remove the "lock" on the argument list. */
@ -4390,6 +4414,10 @@ ex_buffer_all(eap)
int r;
int count; /* Maximum number of windows to open. */
int all; /* When TRUE also load inactive buffers. */
#ifdef FEAT_WINDOWS
int had_tab = cmdmod.tab;
tabpage_T *tpnext;
#endif
if (eap->addr_count == 0) /* make as many windows as possible */
count = 9999;
@ -4410,27 +4438,48 @@ ex_buffer_all(eap)
* Close superfluous windows (two windows for the same buffer).
* Also close windows that are not full-width.
*/
for (wp = firstwin; wp != NULL; wp = wpnext)
#ifdef FEAT_WINDOWS
if (had_tab > 0)
goto_tabpage_tp(first_tabpage);
for (;;)
{
wpnext = wp->w_next;
if (wp->w_buffer->b_nwindows > 1
#ifdef FEAT_VERTSPLIT
|| ((cmdmod.split & WSP_VERT)
? wp->w_height + wp->w_status_height < Rows - p_ch
: wp->w_width != Columns)
#endif
)
tpnext = curtab->tp_next;
for (wp = firstwin; wp != NULL; wp = wpnext)
{
win_close(wp, FALSE);
#ifdef FEAT_AUTOCMD
wpnext = firstwin; /* just in case an autocommand does something
strange with windows */
open_wins = 0;
wpnext = wp->w_next;
if (wp->w_buffer->b_nwindows > 1
#ifdef FEAT_VERTSPLIT
|| ((cmdmod.split & WSP_VERT)
? wp->w_height + wp->w_status_height < Rows - p_ch
: wp->w_width != Columns)
#endif
)
{
win_close(wp, FALSE);
#ifdef FEAT_AUTOCMD
wpnext = firstwin; /* just in case an autocommand does
something strange with windows */
open_wins = 0;
#endif
}
else
++open_wins;
}
else
++open_wins;
#ifdef FEAT_WINDOWS
/* Without the ":tab" modifier only do the current tab page. */
if (had_tab == 0 || tpnext == NULL)
break;
# ifdef FEAT_AUTOCMD
/* check if autocommands removed the next tab page */
if (!valid_tabpage(tpnext))
tpnext = first_tabpage; /* start all over...*/
# endif
goto_tabpage_tp(tpnext);
}
#endif
/*
* Go through the buffer list. When a buffer doesn't have a window yet,
@ -4522,6 +4571,11 @@ ex_buffer_all(eap)
/* Autocommands deleted the buffer or aborted script processing!!! */
if (aborting())
break;
#endif
#ifdef FEAT_WINDOWS
/* When ":tab" was used open a new tab for a new window repeatedly. */
if (had_tab > 0 && tabpage_index(NULL) <= p_tpm)
cmdmod.tab = 9999;
#endif
}
#ifdef FEAT_AUTOCMD

View File

@ -4392,7 +4392,7 @@ repl_cmdline(eap, src, srclen, repl, cmdlinep)
*/
len = (int)STRLEN(repl);
i = (int)(src - *cmdlinep) + (int)STRLEN(src + srclen) + len + 3;
if (eap->nextcmd)
if (eap->nextcmd != NULL)
i += (int)STRLEN(eap->nextcmd);/* add space for next command */
if ((new_cmdline = alloc((unsigned)i)) == NULL)
return NULL; /* out of memory! */
@ -4411,7 +4411,7 @@ repl_cmdline(eap, src, srclen, repl, cmdlinep)
STRCPY(new_cmdline + i, src + srclen);
src = new_cmdline + i; /* remember where to continue */
if (eap->nextcmd) /* append next command */
if (eap->nextcmd != NULL) /* append next command */
{
i = (int)STRLEN(new_cmdline) + 1;
STRCPY(new_cmdline + i, eap->nextcmd);
@ -10583,7 +10583,7 @@ ex_nohlsearch(eap)
}
/*
* ":match {group} {pattern}"
* ":[N]match {group} {pattern}"
* Sets nextcmd to the start of the next command, if any. Also called when
* skipping commands to find the next command.
*/
@ -10594,12 +10594,21 @@ ex_match(eap)
char_u *p;
char_u *end;
int c;
int mi;
if (eap->line2 <= 3)
mi = eap->line2 - 1;
else
{
EMSG(e_invcmd);
return;
}
/* First clear any old pattern. */
if (!eap->skip)
{
vim_free(curwin->w_match.regprog);
curwin->w_match.regprog = NULL;
vim_free(curwin->w_match[mi].regprog);
curwin->w_match[mi].regprog = NULL;
redraw_later(NOT_VALID); /* always need a redraw */
}
@ -10613,8 +10622,9 @@ ex_match(eap)
p = skiptowhite(eap->arg);
if (!eap->skip)
{
curwin->w_match_id = syn_namen2id(eap->arg, (int)(p - eap->arg));
if (curwin->w_match_id == 0)
curwin->w_match_id[mi] = syn_namen2id(eap->arg,
(int)(p - eap->arg));
if (curwin->w_match_id[mi] == 0)
{
EMSG2(_(e_nogroup), eap->arg);
return;
@ -10643,9 +10653,9 @@ ex_match(eap)
c = *end;
*end = NUL;
curwin->w_match.regprog = vim_regcomp(p + 1, RE_MAGIC);
curwin->w_match[mi].regprog = vim_regcomp(p + 1, RE_MAGIC);
*end = c;
if (curwin->w_match.regprog == NULL)
if (curwin->w_match[mi].regprog == NULL)
{
EMSG2(_(e_invarg2), p);
return;

View File

@ -30,12 +30,14 @@
? (a)->col < (b)->col \
: (a)->coladd < (b)->coladd)
# define equalpos(a, b) (((a).lnum == (b).lnum) && ((a).col == (b).col) && ((a).coladd == (b).coladd))
# define clearpos(a) {(a)->lnum = 0; (a)->col = 0; (a)->coladd = 0;}
#else
# define lt(a, b) (((a).lnum != (b).lnum) \
? ((a).lnum < (b).lnum) : ((a).col < (b).col))
# define ltp(a, b) (((a)->lnum != (b)->lnum) \
? ((a)->lnum < (b)->lnum) : ((a)->col < (b)->col))
# define equalpos(a, b) (((a).lnum == (b).lnum) && ((a).col == (b).col))
# define clearpos(a) {(a)->lnum = 0; (a)->col = 0;}
#endif
#define ltoreq(a, b) (lt(a, b) || equalpos(a, b))

View File

@ -932,22 +932,33 @@ wait_return(redraw)
c = K_IGNORE;
}
#endif
if (p_more && !p_cp && (c == 'b' || c == 'k' || c == 'u'
|| c == 'g' || c == K_UP))
/*
* Allow scrolling back in the messages.
* Also accept scroll-down commands when messages fill the screen,
* to avoid that typing one 'j' too many makes the messages
* disappear.
*/
if (p_more && !p_cp)
{
/* scroll back to show older messages */
do_more_prompt(c);
if (quit_more)
if (c == 'b' || c == 'k' || c == 'u' || c == 'g' || c == K_UP)
{
c = CAR; /* just pretend CR was hit */
quit_more = FALSE;
got_int = FALSE;
/* scroll back to show older messages */
do_more_prompt(c);
if (quit_more)
{
c = CAR; /* just pretend CR was hit */
quit_more = FALSE;
got_int = FALSE;
}
else
{
c = K_IGNORE;
hit_return_msg();
}
}
else
{
else if (msg_scrolled > Rows - 2
&& (c == 'j' || c == K_DOWN || c == 'd'))
c = K_IGNORE;
hit_return_msg();
}
}
} while ((had_got_int && c == Ctrl_C)
|| c == K_IGNORE

View File

@ -4147,7 +4147,7 @@ find_decl(ptr, len, locally, thisblock, searchflags)
curwin->w_cursor.col = 0;
/* Search forward for the identifier, ignore comment lines. */
found_pos.lnum = 0;
clearpos(&found_pos);
for (;;)
{
t = searchit(curwin, curbuf, &curwin->w_cursor, FORWARD,

View File

@ -172,6 +172,8 @@
* sectionID == SN_SUGFILE: <timestamp>
* <timestamp> 8 bytes time in seconds that must match with .sug file
*
* sectionID == SN_NOSPLITSUGS: nothing
*
* sectionID == SN_WORDS: <word> ...
* <word> N bytes NUL terminated common word
*
@ -241,6 +243,7 @@
* <flags2> 1 byte Bitmask of:
* WF_HAS_AFF >> 8 word includes affix
* WF_NEEDCOMP >> 8 word only valid in compound
* WF_NOSUGGEST >> 8 word not used for suggestions
*
* <pflags> 1 byte bitmask of:
* WFP_RARE rare prefix
@ -328,6 +331,7 @@ typedef long idx_T;
/* for <flags2>, shifted up one byte to be used in wn_flags */
#define WF_HAS_AFF 0x0100 /* word includes affix */
#define WF_NEEDCOMP 0x0200 /* word only valid in compound */
#define WF_NOSUGGEST 0x0400 /* word not to be suggested */
/* only used for su_badflags */
#define WF_MIXCAP 0x20 /* mix of upper and lower case: macaRONI */
@ -461,6 +465,7 @@ struct slang_S
* "sl_sal" is a list of wide char lists. */
garray_T sl_repsal; /* list of fromto_T entries from REPSAL lines */
short sl_repsal_first[256]; /* sl_rep_first for REPSAL lines */
int sl_nosplitsugs; /* don't suggest splitting a word */
/* Info from the .sug file. Loaded on demand. */
time_t sl_sugtime; /* timestamp for .sug file */
@ -528,6 +533,7 @@ typedef struct langp_S
#define SN_SUGFILE 11 /* timestamp for .sug file */
#define SN_REPSAL 12 /* REPSAL items section */
#define SN_WORDS 13 /* common words */
#define SN_NOSPLITSUGS 14 /* don't split word for suggestions */
#define SN_END 255 /* end of sections */
#define SNF_REQUIRED 1 /* <sectionflags>: required section */
@ -602,6 +608,7 @@ typedef struct suggest_S
/* score for various changes */
#define SCORE_SPLIT 149 /* split bad word */
#define SCORE_SPLIT_NO 249 /* split bad word with NOSPLITSUGS */
#define SCORE_ICASE 52 /* slightly different case */
#define SCORE_REGION 200 /* word is for different region */
#define SCORE_RARE 180 /* rare word */
@ -2010,7 +2017,7 @@ spell_move_to(wp, dir, allwords, curline, attrp)
* though...
*/
lnum = wp->w_cursor.lnum;
found_pos.lnum = 0;
clearpos(&found_pos);
while (!got_int)
{
@ -2663,6 +2670,10 @@ spell_load_file(fname, lang, old_lp, silent)
lp->sl_sugtime = get8c(fd); /* <timestamp> */
break;
case SN_NOSPLITSUGS:
lp->sl_nosplitsugs = TRUE; /* <timestamp> */
break;
case SN_COMPOUND:
res = read_compound(fd, lp, len);
break;
@ -4554,6 +4565,7 @@ typedef struct afffile_S
unsigned af_bad; /* BAD ID for banned word */
unsigned af_needaffix; /* NEEDAFFIX ID */
unsigned af_needcomp; /* NEEDCOMPOUND ID */
unsigned af_nosuggest; /* NOSUGGEST ID */
int af_pfxpostpone; /* postpone prefixes without chop string */
hashtab_T af_pref; /* hashtable for prefixes, affheader_T */
hashtab_T af_suff; /* hashtable for suffixes, affheader_T */
@ -4710,6 +4722,7 @@ typedef struct spellinfo_S
char_u *si_sofofr; /* SOFOFROM text */
char_u *si_sofoto; /* SOFOTO text */
int si_nosugfile; /* NOSUGFILE item found */
int si_nosplitsugs; /* NOSPLITSUGS item found */
int si_followup; /* soundsalike: ? */
int si_collapse; /* soundsalike: ? */
hashtab_T si_commonwords; /* hashtable for common words */
@ -5053,6 +5066,7 @@ spell_read_aff(spin, fname)
|| aff->af_bad != 0
|| aff->af_needaffix != 0
|| aff->af_needcomp != 0
|| aff->af_nosuggest != 0
|| compflags != NULL
|| aff->af_suff.ht_used > 0
|| aff->af_pref.ht_used > 0)
@ -5064,10 +5078,6 @@ spell_read_aff(spin, fname)
{
midword = getroom_save(spin, items[1]);
}
else if (STRCMP(items[0], "NOSPLITSUGS") == 0 && itemcnt == 1)
{
/* ignored, we always split */
}
else if (STRCMP(items[0], "TRY") == 0 && itemcnt == 2)
{
/* ignored, we look in the tree for what chars may appear */
@ -5100,6 +5110,12 @@ spell_read_aff(spin, fname)
aff->af_needaffix = affitem2flag(aff->af_flagtype, items[1],
fname, lnum);
}
else if (STRCMP(items[0], "NOSUGGEST") == 0 && itemcnt == 2
&& aff->af_nosuggest == 0)
{
aff->af_nosuggest = affitem2flag(aff->af_flagtype, items[1],
fname, lnum);
}
else if (STRCMP(items[0], "NEEDCOMPOUND") == 0 && itemcnt == 2
&& aff->af_needcomp == 0)
{
@ -5171,6 +5187,10 @@ spell_read_aff(spin, fname)
{
spin->si_nobreak = TRUE;
}
else if (STRCMP(items[0], "NOSPLITSUGS") == 0 && itemcnt == 1)
{
spin->si_nosplitsugs = TRUE;
}
else if (STRCMP(items[0], "NOSUGFILE") == 0 && itemcnt == 1)
{
spin->si_nosugfile = TRUE;
@ -5223,8 +5243,9 @@ spell_read_aff(spin, fname)
|| cur_aff->ah_flag == aff->af_rare
|| cur_aff->ah_flag == aff->af_keepcase
|| cur_aff->ah_flag == aff->af_needaffix
|| cur_aff->ah_flag == aff->af_nosuggest
|| cur_aff->ah_flag == aff->af_needcomp)
smsg((char_u *)_("Affix also used for BAD/RARE/KEEPCASE/NEEDAFFIX/NEEDCOMPOUND in %s line %d: %s"),
smsg((char_u *)_("Affix also used for BAD/RARE/KEEPCASE/NEEDAFFIX/NEEDCOMPOUND/NOSUGGEST in %s line %d: %s"),
fname, lnum, items[1]);
STRCPY(cur_aff->ah_key, items[1]);
hash_add(tp, cur_aff->ah_key);
@ -6242,6 +6263,9 @@ spell_read_dic(spin, fname, affile)
if (affile->af_needcomp != 0 && flag_in_afflist(
affile->af_flagtype, afflist, affile->af_needcomp))
flags |= WF_NEEDCOMP;
if (affile->af_nosuggest != 0 && flag_in_afflist(
affile->af_flagtype, afflist, affile->af_nosuggest))
flags |= WF_NOSUGGEST;
if (affile->af_pfxpostpone)
/* Need to store the list of prefix IDs with the word. */
@ -7671,6 +7695,16 @@ write_vim_spell(spin, fname)
put_sugtime(spin, fd); /* <timestamp> */
}
/* SN_NOSPLITSUGS: nothing
* This is used to notify that no suggestions with word splits are to be
* made. */
if (spin->si_nosplitsugs)
{
putc(SN_NOSPLITSUGS, fd); /* <sectionID> */
putc(0, fd); /* <sectionflags> */
put_bytes(fd, (long_u)0, 4); /* <sectionlen> */
}
/* SN_COMPOUND: compound info.
* We don't mark it required, when not supported all compound words will
* be bad words. */
@ -10776,6 +10810,11 @@ suggest_trie_walk(su, lp, fword, soundfold)
++sp->ts_curi; /* eat one NUL byte */
flags = (int)idxs[arridx];
/* Skip words with the NOSUGGEST flag. */
if (flags & WF_NOSUGGEST)
break;
fword_ends = (fword[sp->ts_fidx] == NUL
|| (soundfold
? vim_iswhite(fword[sp->ts_fidx])
@ -11127,7 +11166,11 @@ suggest_trie_walk(su, lp, fword, soundfold)
&& !can_compound(slang, p,
compflags + sp->ts_compsplit))
break;
newscore += SCORE_SPLIT;
if (slang->sl_nosplitsugs)
newscore += SCORE_SPLIT_NO;
else
newscore += SCORE_SPLIT;
/* Give a bonus to words seen before. */
newscore = score_wordcount_adj(slang, newscore,
@ -12670,6 +12713,10 @@ badword:
char_u *p;
int flags = (int)idxs[n + i];
/* Skip words with the NOSUGGEST flag */
if (flags & WF_NOSUGGEST)
continue;
if (flags & WF_KEEPCAP)
{
/* Must find the word in the keep-case tree. */

View File

@ -197,6 +197,9 @@ do_tag(tag, type, count, forceit, verbose)
free_string_option(nofile_fname);
nofile_fname = NULL;
clearpos(&saved_fmark.mark); /* shutup gcc 4.0 */
saved_fmark.fnum = 0;
/*
* Don't add a tag to the tagstack if 'tagstack' has been reset.
*/

View File

@ -3087,9 +3087,9 @@ make_tabpages(maxcount)
int count = maxcount;
int todo;
/* Limit to 10 tabs. */
if (count > 10)
count = 10;
/* Limit to 'tabpagemax' tabs. */
if (count > p_tpm)
count = p_tpm;
#ifdef FEAT_AUTOCMD
/*
@ -3852,7 +3852,9 @@ win_free(wp, tp)
vim_free(wp->w_localdir);
#ifdef FEAT_SEARCH_EXTRA
vim_free(wp->w_match.regprog);
vim_free(wp->w_match[0].regprog);
vim_free(wp->w_match[1].regprog);
vim_free(wp->w_match[2].regprog);
#endif
#ifdef FEAT_JUMPLIST
free_jumplist(wp);