mirror of
https://github.com/macvim-dev/macvim.git
synced 2026-06-07 15:37:14 +02:00
Merge remote-tracking branch 'vim/master'
This commit is contained in:
+10
-1
@@ -3878,7 +3878,6 @@ set_one_cmd_context(
|
||||
case CMD_cfdo:
|
||||
case CMD_confirm:
|
||||
case CMD_debug:
|
||||
case CMD_filter:
|
||||
case CMD_folddoclosed:
|
||||
case CMD_folddoopen:
|
||||
case CMD_hide:
|
||||
@@ -3903,6 +3902,16 @@ set_one_cmd_context(
|
||||
case CMD_windo:
|
||||
return arg;
|
||||
|
||||
case CMD_filter:
|
||||
if (*arg != NUL)
|
||||
arg = skip_vimgrep_pat(arg, NULL, NULL);
|
||||
if (arg == NULL || *arg == NUL)
|
||||
{
|
||||
xp->xp_context = EXPAND_NOTHING;
|
||||
return NULL;
|
||||
}
|
||||
return skipwhite(arg);
|
||||
|
||||
#ifdef FEAT_CMDL_COMPL
|
||||
# ifdef FEAT_SEARCH_EXTRA
|
||||
case CMD_match:
|
||||
|
||||
+19
-11
@@ -5428,7 +5428,6 @@ static int skip_label(linenr_T, char_u **pp);
|
||||
static int cin_first_id_amount(void);
|
||||
static int cin_get_equal_amount(linenr_T lnum);
|
||||
static int cin_ispreproc(char_u *);
|
||||
static int cin_ispreproc_cont(char_u **pp, linenr_T *lnump);
|
||||
static int cin_iscomment(char_u *);
|
||||
static int cin_islinecomment(char_u *);
|
||||
static int cin_isterminated(char_u *, int, int);
|
||||
@@ -6008,13 +6007,18 @@ cin_ispreproc(char_u *s)
|
||||
* Return TRUE if line "*pp" at "*lnump" is a preprocessor statement or a
|
||||
* continuation line of a preprocessor statement. Decrease "*lnump" to the
|
||||
* start and return the line in "*pp".
|
||||
* Put the amount of indent in "*amount".
|
||||
*/
|
||||
static int
|
||||
cin_ispreproc_cont(char_u **pp, linenr_T *lnump)
|
||||
cin_ispreproc_cont(char_u **pp, linenr_T *lnump, int *amount)
|
||||
{
|
||||
char_u *line = *pp;
|
||||
linenr_T lnum = *lnump;
|
||||
int retval = FALSE;
|
||||
int candidate_amount = *amount;
|
||||
|
||||
if (*line != NUL && line[STRLEN(line) - 1] == '\\')
|
||||
candidate_amount = get_indent_lnum(lnum);
|
||||
|
||||
for (;;)
|
||||
{
|
||||
@@ -6033,6 +6037,8 @@ cin_ispreproc_cont(char_u **pp, linenr_T *lnump)
|
||||
|
||||
if (lnum != *lnump)
|
||||
*pp = ml_get(*lnump);
|
||||
if (retval)
|
||||
*amount = candidate_amount;
|
||||
return retval;
|
||||
}
|
||||
|
||||
@@ -7396,7 +7402,7 @@ get_c_indent(void)
|
||||
l = skipwhite(ml_get(lnum));
|
||||
if (cin_nocode(l)) /* skip comment lines */
|
||||
continue;
|
||||
if (cin_ispreproc_cont(&l, &lnum))
|
||||
if (cin_ispreproc_cont(&l, &lnum, &amount))
|
||||
continue; /* ignore #define, #if, etc. */
|
||||
curwin->w_cursor.lnum = lnum;
|
||||
|
||||
@@ -7809,10 +7815,10 @@ get_c_indent(void)
|
||||
*/
|
||||
if (curwin->w_cursor.lnum <= ourscope)
|
||||
{
|
||||
/* we reached end of scope:
|
||||
* if looking for a enum or structure initialization
|
||||
/* We reached end of scope:
|
||||
* If looking for a enum or structure initialization
|
||||
* go further back:
|
||||
* if it is an initializer (enum xxx or xxx =), then
|
||||
* If it is an initializer (enum xxx or xxx =), then
|
||||
* don't add ind_continuation, otherwise it is a variable
|
||||
* declaration:
|
||||
* int x,
|
||||
@@ -7851,7 +7857,8 @@ get_c_indent(void)
|
||||
/*
|
||||
* Skip preprocessor directives and blank lines.
|
||||
*/
|
||||
if (cin_ispreproc_cont(&l, &curwin->w_cursor.lnum))
|
||||
if (cin_ispreproc_cont(&l, &curwin->w_cursor.lnum,
|
||||
&amount))
|
||||
continue;
|
||||
|
||||
if (cin_nocode(l))
|
||||
@@ -7968,7 +7975,8 @@ get_c_indent(void)
|
||||
}
|
||||
|
||||
/* Skip preprocessor directives and blank lines. */
|
||||
if (cin_ispreproc_cont(&l, &curwin->w_cursor.lnum))
|
||||
if (cin_ispreproc_cont(&l, &curwin->w_cursor.lnum,
|
||||
&amount))
|
||||
continue;
|
||||
|
||||
/* Finally the actual check for "namespace". */
|
||||
@@ -8144,7 +8152,7 @@ get_c_indent(void)
|
||||
* unlocked it)
|
||||
*/
|
||||
l = ml_get_curline();
|
||||
if (cin_ispreproc_cont(&l, &curwin->w_cursor.lnum)
|
||||
if (cin_ispreproc_cont(&l, &curwin->w_cursor.lnum, &amount)
|
||||
|| cin_nocode(l))
|
||||
continue;
|
||||
|
||||
@@ -8865,7 +8873,7 @@ term_again:
|
||||
/*
|
||||
* Skip preprocessor directives and blank lines.
|
||||
*/
|
||||
if (cin_ispreproc_cont(&l, &curwin->w_cursor.lnum))
|
||||
if (cin_ispreproc_cont(&l, &curwin->w_cursor.lnum, &amount))
|
||||
continue;
|
||||
|
||||
if (cin_nocode(l))
|
||||
@@ -8966,7 +8974,7 @@ term_again:
|
||||
{
|
||||
look = ml_get(--curwin->w_cursor.lnum);
|
||||
if (!(cin_nocode(look) || cin_ispreproc_cont(
|
||||
&look, &curwin->w_cursor.lnum)))
|
||||
&look, &curwin->w_cursor.lnum, &amount)))
|
||||
break;
|
||||
}
|
||||
if (curwin->w_cursor.lnum > 0
|
||||
|
||||
@@ -2317,6 +2317,25 @@ h,
|
||||
d,
|
||||
e,
|
||||
f,
|
||||
g,
|
||||
h,
|
||||
i;
|
||||
JSEND
|
||||
|
||||
STARTTEST
|
||||
:set cin cino&
|
||||
/start of define
|
||||
=/end of define
|
||||
ENDTEST
|
||||
|
||||
/* start of define */
|
||||
{
|
||||
}
|
||||
#define AAA \
|
||||
BBB\
|
||||
CCC
|
||||
|
||||
#define CNT \
|
||||
1 + \
|
||||
2 + \
|
||||
4
|
||||
|
||||
@@ -2080,3 +2080,17 @@ var a,
|
||||
i;
|
||||
JSEND
|
||||
|
||||
|
||||
/* start of define */
|
||||
{
|
||||
}
|
||||
#define AAA \
|
||||
BBB\
|
||||
CCC
|
||||
|
||||
#define CNT \
|
||||
1 + \
|
||||
2 + \
|
||||
4
|
||||
/* end of define */
|
||||
|
||||
|
||||
@@ -52,3 +52,25 @@ func Test_filter_fails()
|
||||
call assert_fails('filter! /pat/', 'E476:')
|
||||
call assert_fails('filter! /pat/ asdf', 'E492:')
|
||||
endfunc
|
||||
|
||||
function s:complete_filter_cmd(filtcmd)
|
||||
let keystroke = "\<TAB>\<C-R>=execute('let cmdline = getcmdline()')\<CR>\<C-C>"
|
||||
let cmdline = ''
|
||||
call feedkeys(':' . a:filtcmd . keystroke, 'ntx')
|
||||
return cmdline
|
||||
endfunction
|
||||
|
||||
func Test_filter_cmd_completion()
|
||||
" Do not complete pattern
|
||||
call assert_equal("filter \t", s:complete_filter_cmd('filter '))
|
||||
call assert_equal("filter pat\t", s:complete_filter_cmd('filter pat'))
|
||||
call assert_equal("filter /pat\t", s:complete_filter_cmd('filter /pat'))
|
||||
call assert_equal("filter /pat/\t", s:complete_filter_cmd('filter /pat/'))
|
||||
|
||||
" Complete after string pattern
|
||||
call assert_equal('filter pat print', s:complete_filter_cmd('filter pat pri'))
|
||||
|
||||
" Complete after regexp pattern
|
||||
call assert_equal('filter /pat/ print', s:complete_filter_cmd('filter /pat/ pri'))
|
||||
call assert_equal('filter #pat# print', s:complete_filter_cmd('filter #pat# pri'))
|
||||
endfunc
|
||||
|
||||
@@ -235,3 +235,31 @@ func Test_insert_expr()
|
||||
|
||||
close!
|
||||
endfunc
|
||||
|
||||
func Test_undofile_earlier()
|
||||
" Issue #1254
|
||||
" create undofile with timestamps older than Vim startup time.
|
||||
let t0 = localtime() - 43200
|
||||
call test_settime(t0)
|
||||
new Xfile
|
||||
call feedkeys("ione\<Esc>", 'xt')
|
||||
set ul=100
|
||||
call test_settime(t0 + 1)
|
||||
call feedkeys("otwo\<Esc>", 'xt')
|
||||
set ul=100
|
||||
call test_settime(t0 + 2)
|
||||
call feedkeys("othree\<Esc>", 'xt')
|
||||
set ul=100
|
||||
w
|
||||
wundo Xundofile
|
||||
bwipe!
|
||||
" restore normal timestamps.
|
||||
call test_settime(0)
|
||||
new Xfile
|
||||
rundo Xundofile
|
||||
earlier 1d
|
||||
call assert_equal('', getline(1))
|
||||
bwipe!
|
||||
call delete('Xfile')
|
||||
call delete('Xundofile')
|
||||
endfunc
|
||||
|
||||
+3
-5
@@ -2298,10 +2298,8 @@ undo_time(
|
||||
}
|
||||
else
|
||||
{
|
||||
/* When doing computations with time_t subtract starttime, because
|
||||
* time_t converted to a long may result in a wrong number. */
|
||||
if (dosec)
|
||||
target = (long)(curbuf->b_u_time_cur - starttime) + step;
|
||||
target = (long)(curbuf->b_u_time_cur) + step;
|
||||
else if (dofile)
|
||||
{
|
||||
if (step < 0)
|
||||
@@ -2350,7 +2348,7 @@ undo_time(
|
||||
else
|
||||
{
|
||||
if (dosec)
|
||||
closest = (long)(vim_time() - starttime + 1);
|
||||
closest = (long)(vim_time() + 1);
|
||||
else if (dofile)
|
||||
closest = curbuf->b_u_save_nr_last + 2;
|
||||
else
|
||||
@@ -2388,7 +2386,7 @@ undo_time(
|
||||
{
|
||||
uhp->uh_walk = mark;
|
||||
if (dosec)
|
||||
val = (long)(uhp->uh_time - starttime);
|
||||
val = (long)(uhp->uh_time);
|
||||
else if (dofile)
|
||||
val = uhp->uh_save_nr;
|
||||
else
|
||||
|
||||
@@ -779,6 +779,12 @@ static char *(features[]) =
|
||||
|
||||
static int included_patches[] =
|
||||
{ /* Add new patch number below this line */
|
||||
/**/
|
||||
150,
|
||||
/**/
|
||||
149,
|
||||
/**/
|
||||
148,
|
||||
/**/
|
||||
147,
|
||||
/**/
|
||||
|
||||
Reference in New Issue
Block a user