mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
Merge pull request #12770 from janlazo/vim-8.1.1115
vim-patch:8.1.{1115,2267},8.2.{607,814,1472,1474,1476,1511}
This commit is contained in:
commit
8c49e3d509
2
runtime/autoload/dist/ft.vim
vendored
2
runtime/autoload/dist/ft.vim
vendored
@ -575,7 +575,7 @@ endfunc
|
|||||||
let s:ft_rules_udev_rules_pattern = '^\s*\cudev_rules\s*=\s*"\([^"]\{-1,}\)/*".*'
|
let s:ft_rules_udev_rules_pattern = '^\s*\cudev_rules\s*=\s*"\([^"]\{-1,}\)/*".*'
|
||||||
func dist#ft#FTRules()
|
func dist#ft#FTRules()
|
||||||
let path = expand('<amatch>:p')
|
let path = expand('<amatch>:p')
|
||||||
if path =~ '^/\(etc/udev/\%(rules\.d/\)\=.*\.rules\|lib/udev/\%(rules\.d/\)\=.*\.rules\)$'
|
if path =~ '/\(etc/udev/\%(rules\.d/\)\=.*\.rules\|\%(usr/\)\=lib/udev/\%(rules\.d/\)\=.*\.rules\)$'
|
||||||
setf udevrules
|
setf udevrules
|
||||||
return
|
return
|
||||||
endif
|
endif
|
||||||
|
@ -2650,7 +2650,7 @@ void buflist_list(exarg_T *eap)
|
|||||||
int i;
|
int i;
|
||||||
|
|
||||||
garray_T buflist;
|
garray_T buflist;
|
||||||
buf_T **buflist_data = NULL, **p;
|
buf_T **buflist_data = NULL;
|
||||||
|
|
||||||
if (vim_strchr(eap->arg, 't')) {
|
if (vim_strchr(eap->arg, 't')) {
|
||||||
ga_init(&buflist, sizeof(buf_T *), 50);
|
ga_init(&buflist, sizeof(buf_T *), 50);
|
||||||
@ -2662,13 +2662,14 @@ void buflist_list(exarg_T *eap)
|
|||||||
qsort(buflist.ga_data, (size_t)buflist.ga_len,
|
qsort(buflist.ga_data, (size_t)buflist.ga_len,
|
||||||
sizeof(buf_T *), buf_time_compare);
|
sizeof(buf_T *), buf_time_compare);
|
||||||
|
|
||||||
p = buflist_data = (buf_T **)buflist.ga_data;
|
buflist_data = (buf_T **)buflist.ga_data;
|
||||||
buf = *p;
|
buf = *buflist_data;
|
||||||
}
|
}
|
||||||
|
buf_T **p = buflist_data;
|
||||||
|
|
||||||
for (;
|
for (;
|
||||||
buf != NULL && !got_int;
|
buf != NULL && !got_int;
|
||||||
buf = buflist_data
|
buf = buflist_data != NULL
|
||||||
? (++p < buflist_data + buflist.ga_len ? *p : NULL)
|
? (++p < buflist_data + buflist.ga_len ? *p : NULL)
|
||||||
: buf->b_next) {
|
: buf->b_next) {
|
||||||
const bool is_terminal = buf->terminal;
|
const bool is_terminal = buf->terminal;
|
||||||
|
@ -1679,7 +1679,7 @@ static const char *list_arg_vars(exarg_T *eap, const char *arg, int *first)
|
|||||||
arg = (const char *)find_name_end((char_u *)arg, NULL, NULL,
|
arg = (const char *)find_name_end((char_u *)arg, NULL, NULL,
|
||||||
FNE_INCL_BR | FNE_CHECK_START);
|
FNE_INCL_BR | FNE_CHECK_START);
|
||||||
if (!ascii_iswhite(*arg) && !ends_excmd(*arg)) {
|
if (!ascii_iswhite(*arg) && !ends_excmd(*arg)) {
|
||||||
emsg_severe = TRUE;
|
emsg_severe = true;
|
||||||
EMSG(_(e_trailing));
|
EMSG(_(e_trailing));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -1692,7 +1692,7 @@ static const char *list_arg_vars(exarg_T *eap, const char *arg, int *first)
|
|||||||
/* This is mainly to keep test 49 working: when expanding
|
/* This is mainly to keep test 49 working: when expanding
|
||||||
* curly braces fails overrule the exception error message. */
|
* curly braces fails overrule the exception error message. */
|
||||||
if (len < 0 && !aborting()) {
|
if (len < 0 && !aborting()) {
|
||||||
emsg_severe = TRUE;
|
emsg_severe = true;
|
||||||
EMSG2(_(e_invarg2), arg);
|
EMSG2(_(e_invarg2), arg);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -2007,7 +2007,7 @@ char_u *get_lval(char_u *const name, typval_T *const rettv,
|
|||||||
* expression evaluation has been cancelled due to an
|
* expression evaluation has been cancelled due to an
|
||||||
* aborting error, an interrupt, or an exception. */
|
* aborting error, an interrupt, or an exception. */
|
||||||
if (!aborting() && !quiet) {
|
if (!aborting() && !quiet) {
|
||||||
emsg_severe = TRUE;
|
emsg_severe = true;
|
||||||
EMSG2(_(e_invarg2), name);
|
EMSG2(_(e_invarg2), name);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
@ -2675,6 +2675,7 @@ void ex_lockvar(exarg_T *eap)
|
|||||||
static void ex_unletlock(exarg_T *eap, char_u *argstart, int deep)
|
static void ex_unletlock(exarg_T *eap, char_u *argstart, int deep)
|
||||||
{
|
{
|
||||||
char_u *arg = argstart;
|
char_u *arg = argstart;
|
||||||
|
char_u *name_end;
|
||||||
bool error = false;
|
bool error = false;
|
||||||
lval_T lv;
|
lval_T lv;
|
||||||
|
|
||||||
@ -2687,43 +2688,43 @@ static void ex_unletlock(exarg_T *eap, char_u *argstart, int deep)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
os_unsetenv(name);
|
os_unsetenv(name);
|
||||||
arg = skipwhite(arg);
|
name_end = arg;
|
||||||
continue;
|
} else {
|
||||||
}
|
// Parse the name and find the end.
|
||||||
|
name_end = get_lval(arg, NULL, &lv, true, eap->skip || error,
|
||||||
// Parse the name and find the end.
|
0, FNE_CHECK_START);
|
||||||
char_u *const name_end = (char_u *)get_lval(arg, NULL, &lv, true,
|
if (lv.ll_name == NULL) {
|
||||||
eap->skip || error,
|
error = true; // error, but continue parsing.
|
||||||
0, FNE_CHECK_START);
|
}
|
||||||
if (lv.ll_name == NULL) {
|
if (name_end == NULL
|
||||||
error = true; // error, but continue parsing.
|
|| (!ascii_iswhite(*name_end) && !ends_excmd(*name_end))) {
|
||||||
}
|
if (name_end != NULL) {
|
||||||
if (name_end == NULL || (!ascii_iswhite(*name_end)
|
emsg_severe = true;
|
||||||
&& !ends_excmd(*name_end))) {
|
EMSG(_(e_trailing));
|
||||||
if (name_end != NULL) {
|
}
|
||||||
emsg_severe = TRUE;
|
if (!(eap->skip || error)) {
|
||||||
EMSG(_(e_trailing));
|
clear_lval(&lv);
|
||||||
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
if (!(eap->skip || error))
|
|
||||||
clear_lval(&lv);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!error && !eap->skip) {
|
if (!error && !eap->skip) {
|
||||||
if (eap->cmdidx == CMD_unlet) {
|
if (eap->cmdidx == CMD_unlet) {
|
||||||
if (do_unlet_var(&lv, name_end, eap->forceit) == FAIL)
|
if (do_unlet_var(&lv, name_end, eap->forceit) == FAIL) {
|
||||||
error = TRUE;
|
error = true;
|
||||||
} else {
|
}
|
||||||
if (do_lock_var(&lv, name_end, deep,
|
} else {
|
||||||
eap->cmdidx == CMD_lockvar) == FAIL) {
|
if (do_lock_var(&lv, name_end, deep,
|
||||||
error = true;
|
eap->cmdidx == CMD_lockvar) == FAIL) {
|
||||||
|
error = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!eap->skip) {
|
||||||
|
clear_lval(&lv);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!eap->skip)
|
|
||||||
clear_lval(&lv);
|
|
||||||
|
|
||||||
arg = skipwhite(name_end);
|
arg = skipwhite(name_end);
|
||||||
} while (!ends_excmd(*arg));
|
} while (!ends_excmd(*arg));
|
||||||
|
|
||||||
|
@ -2407,9 +2407,9 @@ static void f_float2nr(typval_T *argvars, typval_T *rettv, FunPtr fptr)
|
|||||||
float_T f;
|
float_T f;
|
||||||
|
|
||||||
if (tv_get_float_chk(argvars, &f)) {
|
if (tv_get_float_chk(argvars, &f)) {
|
||||||
if (f <= -VARNUMBER_MAX + DBL_EPSILON) {
|
if (f <= (float_T)-VARNUMBER_MAX + DBL_EPSILON) {
|
||||||
rettv->vval.v_number = -VARNUMBER_MAX;
|
rettv->vval.v_number = -VARNUMBER_MAX;
|
||||||
} else if (f >= VARNUMBER_MAX - DBL_EPSILON) {
|
} else if (f >= (float_T)VARNUMBER_MAX - DBL_EPSILON) {
|
||||||
rettv->vval.v_number = VARNUMBER_MAX;
|
rettv->vval.v_number = VARNUMBER_MAX;
|
||||||
} else {
|
} else {
|
||||||
rettv->vval.v_number = (varnumber_T)f;
|
rettv->vval.v_number = (varnumber_T)f;
|
||||||
|
@ -2886,7 +2886,7 @@ void ex_call(exarg_T *eap)
|
|||||||
if (!failed || eap->cstack->cs_trylevel > 0) {
|
if (!failed || eap->cstack->cs_trylevel > 0) {
|
||||||
// Check for trailing illegal characters and a following command.
|
// Check for trailing illegal characters and a following command.
|
||||||
if (!ends_excmd(*arg)) {
|
if (!ends_excmd(*arg)) {
|
||||||
emsg_severe = TRUE;
|
emsg_severe = true;
|
||||||
EMSG(_(e_trailing));
|
EMSG(_(e_trailing));
|
||||||
} else {
|
} else {
|
||||||
eap->nextcmd = check_nextcmd(arg);
|
eap->nextcmd = check_nextcmd(arg);
|
||||||
|
@ -1984,9 +1984,16 @@ void ex_argadd(exarg_T *eap)
|
|||||||
/// ":argdelete"
|
/// ":argdelete"
|
||||||
void ex_argdelete(exarg_T *eap)
|
void ex_argdelete(exarg_T *eap)
|
||||||
{
|
{
|
||||||
if (eap->addr_count > 0) {
|
if (eap->addr_count > 0 || *eap->arg == NUL) {
|
||||||
// ":1,4argdel": Delete all arguments in the range.
|
// ":argdel" works like ":.argdel"
|
||||||
if (eap->line2 > ARGCOUNT) {
|
if (eap->addr_count == 0) {
|
||||||
|
if (curwin->w_arg_idx >= ARGCOUNT) {
|
||||||
|
EMSG(_("E610: No argument to delete"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
eap->line1 = eap->line2 = curwin->w_arg_idx + 1;
|
||||||
|
} else if (eap->line2 > ARGCOUNT) {
|
||||||
|
// ":1,4argdel": Delete all arguments in the range.
|
||||||
eap->line2 = ARGCOUNT;
|
eap->line2 = ARGCOUNT;
|
||||||
}
|
}
|
||||||
linenr_T n = eap->line2 - eap->line1 + 1;
|
linenr_T n = eap->line2 - eap->line1 + 1;
|
||||||
@ -2016,8 +2023,6 @@ void ex_argdelete(exarg_T *eap)
|
|||||||
curwin->w_arg_idx = ARGCOUNT - 1;
|
curwin->w_arg_idx = ARGCOUNT - 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (*eap->arg == NUL) {
|
|
||||||
EMSG(_(e_argreq));
|
|
||||||
} else {
|
} else {
|
||||||
do_arglist(eap->arg, AL_DEL, 0);
|
do_arglist(eap->arg, AL_DEL, 0);
|
||||||
}
|
}
|
||||||
|
@ -4949,7 +4949,7 @@ check_more(
|
|||||||
int n = ARGCOUNT - curwin->w_arg_idx - 1;
|
int n = ARGCOUNT - curwin->w_arg_idx - 1;
|
||||||
|
|
||||||
if (!forceit && only_one_window()
|
if (!forceit && only_one_window()
|
||||||
&& ARGCOUNT > 1 && !arg_had_last && n >= 0 && quitmore == 0) {
|
&& ARGCOUNT > 1 && !arg_had_last && n > 0 && quitmore == 0) {
|
||||||
if (message) {
|
if (message) {
|
||||||
if ((p_confirm || cmdmod.confirm) && curbuf->b_fname != NULL) {
|
if ((p_confirm || cmdmod.confirm) && curbuf->b_fname != NULL) {
|
||||||
char_u buff[DIALOG_MSG_SIZE];
|
char_u buff[DIALOG_MSG_SIZE];
|
||||||
|
@ -138,16 +138,15 @@ int aborted_in_try(void)
|
|||||||
return force_abort;
|
return force_abort;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
// cause_errthrow(): Cause a throw of an error exception if appropriate.
|
||||||
* cause_errthrow(): Cause a throw of an error exception if appropriate.
|
// Return true if the error message should not be displayed by emsg().
|
||||||
* Return TRUE if the error message should not be displayed by emsg().
|
// Sets "ignore", if the emsg() call should be ignored completely.
|
||||||
* Sets "ignore", if the emsg() call should be ignored completely.
|
//
|
||||||
*
|
// When several messages appear in the same command, the first is usually the
|
||||||
* When several messages appear in the same command, the first is usually the
|
// most specific one and used as the exception value. The "severe" flag can be
|
||||||
* most specific one and used as the exception value. The "severe" flag can be
|
// set to true, if a later but severer message should be used instead.
|
||||||
* set to TRUE, if a later but severer message should be used instead.
|
bool cause_errthrow(const char_u *mesg, bool severe, bool *ignore)
|
||||||
*/
|
FUNC_ATTR_NONNULL_ALL
|
||||||
int cause_errthrow(char_u *mesg, int severe, int *ignore)
|
|
||||||
{
|
{
|
||||||
struct msglist *elem;
|
struct msglist *elem;
|
||||||
struct msglist **plist;
|
struct msglist **plist;
|
||||||
@ -158,8 +157,9 @@ int cause_errthrow(char_u *mesg, int severe, int *ignore)
|
|||||||
* level. Also when no exception can be thrown. The message will be
|
* level. Also when no exception can be thrown. The message will be
|
||||||
* displayed by emsg().
|
* displayed by emsg().
|
||||||
*/
|
*/
|
||||||
if (suppress_errthrow)
|
if (suppress_errthrow) {
|
||||||
return FALSE;
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* If emsg() has not been called previously, temporarily reset
|
* If emsg() has not been called previously, temporarily reset
|
||||||
@ -195,8 +195,8 @@ int cause_errthrow(char_u *mesg, int severe, int *ignore)
|
|||||||
* not replaced by an interrupt message error exception.
|
* not replaced by an interrupt message error exception.
|
||||||
*/
|
*/
|
||||||
if (mesg == (char_u *)_(e_interr)) {
|
if (mesg == (char_u *)_(e_interr)) {
|
||||||
*ignore = TRUE;
|
*ignore = true;
|
||||||
return TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -231,8 +231,8 @@ int cause_errthrow(char_u *mesg, int severe, int *ignore)
|
|||||||
* catch clause; just finally clauses are executed before the script
|
* catch clause; just finally clauses are executed before the script
|
||||||
* is terminated.
|
* is terminated.
|
||||||
*/
|
*/
|
||||||
return FALSE;
|
return false;
|
||||||
} else
|
} else // NOLINT(readability/braces)
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
@ -271,7 +271,7 @@ int cause_errthrow(char_u *mesg, int severe, int *ignore)
|
|||||||
(*msg_list)->throw_msg = tmsg;
|
(*msg_list)->throw_msg = tmsg;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5553,7 +5553,6 @@ static void au_del_cmd(AutoCmd *ac)
|
|||||||
static void au_cleanup(void)
|
static void au_cleanup(void)
|
||||||
{
|
{
|
||||||
AutoPat *ap, **prev_ap;
|
AutoPat *ap, **prev_ap;
|
||||||
AutoCmd *ac, **prev_ac;
|
|
||||||
event_T event;
|
event_T event;
|
||||||
|
|
||||||
if (autocmd_busy || !au_need_clean) {
|
if (autocmd_busy || !au_need_clean) {
|
||||||
@ -5566,11 +5565,11 @@ static void au_cleanup(void)
|
|||||||
// Loop over all autocommand patterns.
|
// Loop over all autocommand patterns.
|
||||||
prev_ap = &(first_autopat[(int)event]);
|
prev_ap = &(first_autopat[(int)event]);
|
||||||
for (ap = *prev_ap; ap != NULL; ap = *prev_ap) {
|
for (ap = *prev_ap; ap != NULL; ap = *prev_ap) {
|
||||||
// Loop over all commands for this pattern.
|
|
||||||
prev_ac = &(ap->cmds);
|
|
||||||
bool has_cmd = false;
|
bool has_cmd = false;
|
||||||
|
|
||||||
for (ac = *prev_ac; ac != NULL; ac = *prev_ac) {
|
// Loop over all commands for this pattern.
|
||||||
|
AutoCmd **prev_ac = &(ap->cmds);
|
||||||
|
for (AutoCmd *ac = *prev_ac; ac != NULL; ac = *prev_ac) {
|
||||||
// Remove the command if the pattern is to be deleted or when
|
// Remove the command if the pattern is to be deleted or when
|
||||||
// the command has been marked for deletion.
|
// the command has been marked for deletion.
|
||||||
if (ap->pat == NULL || ac->cmd == NULL) {
|
if (ap->pat == NULL || ac->cmd == NULL) {
|
||||||
|
@ -208,7 +208,7 @@ EXTERN int need_clr_eos INIT(= false); // need to clear text before
|
|||||||
// displaying a message.
|
// displaying a message.
|
||||||
EXTERN int emsg_skip INIT(= 0); // don't display errors for
|
EXTERN int emsg_skip INIT(= 0); // don't display errors for
|
||||||
// expression that is skipped
|
// expression that is skipped
|
||||||
EXTERN int emsg_severe INIT(= false); // use message of next of several
|
EXTERN bool emsg_severe INIT(= false); // use message of next of several
|
||||||
// emsg() calls for throw
|
// emsg() calls for throw
|
||||||
EXTERN int did_endif INIT(= false); // just had ":endif"
|
EXTERN int did_endif INIT(= false); // just had ":endif"
|
||||||
EXTERN dict_T vimvardict; // Dictionary with v: variables
|
EXTERN dict_T vimvardict; // Dictionary with v: variables
|
||||||
|
@ -607,8 +607,7 @@ int emsg_not_now(void)
|
|||||||
static bool emsg_multiline(const char *s, bool multiline)
|
static bool emsg_multiline(const char *s, bool multiline)
|
||||||
{
|
{
|
||||||
int attr;
|
int attr;
|
||||||
int ignore = false;
|
bool ignore = false;
|
||||||
int severe;
|
|
||||||
|
|
||||||
// Skip this if not giving error messages at the moment.
|
// Skip this if not giving error messages at the moment.
|
||||||
if (emsg_not_now()) {
|
if (emsg_not_now()) {
|
||||||
@ -617,9 +616,9 @@ static bool emsg_multiline(const char *s, bool multiline)
|
|||||||
|
|
||||||
called_emsg = true;
|
called_emsg = true;
|
||||||
|
|
||||||
// If "emsg_severe" is TRUE: When an error exception is to be thrown,
|
// If "emsg_severe" is true: When an error exception is to be thrown,
|
||||||
// prefer this message over previous messages for the same command.
|
// prefer this message over previous messages for the same command.
|
||||||
severe = emsg_severe;
|
bool severe = emsg_severe;
|
||||||
emsg_severe = false;
|
emsg_severe = false;
|
||||||
|
|
||||||
if (!emsg_off || vim_strchr(p_debug, 't') != NULL) {
|
if (!emsg_off || vim_strchr(p_debug, 't') != NULL) {
|
||||||
@ -630,7 +629,7 @@ static bool emsg_multiline(const char *s, bool multiline)
|
|||||||
* when the message should be ignored completely (used for the
|
* when the message should be ignored completely (used for the
|
||||||
* interrupt message).
|
* interrupt message).
|
||||||
*/
|
*/
|
||||||
if (cause_errthrow((char_u *)s, severe, &ignore) == true) {
|
if (cause_errthrow((char_u *)s, severe, &ignore)) {
|
||||||
if (!ignore) {
|
if (!ignore) {
|
||||||
did_emsg++;
|
did_emsg++;
|
||||||
}
|
}
|
||||||
|
@ -3238,21 +3238,43 @@ void do_put(int regname, yankreg_T *reg, int dir, long count, int flags)
|
|||||||
--lnum;
|
--lnum;
|
||||||
new_cursor = curwin->w_cursor;
|
new_cursor = curwin->w_cursor;
|
||||||
|
|
||||||
// simple case: insert into current line
|
// simple case: insert into one line at a time
|
||||||
if (y_type == kMTCharWise && y_size == 1) {
|
if (y_type == kMTCharWise && y_size == 1) {
|
||||||
linenr_T end_lnum = 0; // init for gcc
|
linenr_T end_lnum = 0; // init for gcc
|
||||||
|
linenr_T start_lnum = lnum;
|
||||||
|
|
||||||
if (VIsual_active) {
|
if (VIsual_active) {
|
||||||
end_lnum = curbuf->b_visual.vi_end.lnum;
|
end_lnum = curbuf->b_visual.vi_end.lnum;
|
||||||
if (end_lnum < curbuf->b_visual.vi_start.lnum) {
|
if (end_lnum < curbuf->b_visual.vi_start.lnum) {
|
||||||
end_lnum = curbuf->b_visual.vi_start.lnum;
|
end_lnum = curbuf->b_visual.vi_start.lnum;
|
||||||
}
|
}
|
||||||
|
if (end_lnum > start_lnum) {
|
||||||
|
// "col" is valid for the first line, in following lines
|
||||||
|
// the virtual column needs to be used. Matters for
|
||||||
|
// multi-byte characters.
|
||||||
|
pos_T pos = {
|
||||||
|
.lnum = lnum,
|
||||||
|
.col = col,
|
||||||
|
.coladd = 0,
|
||||||
|
};
|
||||||
|
getvcol(curwin, &pos, NULL, &vcol, NULL);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
do {
|
do {
|
||||||
totlen = (size_t)(count * yanklen);
|
totlen = (size_t)(count * yanklen);
|
||||||
if (totlen > 0) {
|
if (totlen > 0) {
|
||||||
oldp = ml_get(lnum);
|
oldp = ml_get(lnum);
|
||||||
|
if (lnum > start_lnum) {
|
||||||
|
pos_T pos = {
|
||||||
|
.lnum = lnum,
|
||||||
|
};
|
||||||
|
if (getvpos(&pos, vcol) == OK) {
|
||||||
|
col = pos.col;
|
||||||
|
} else {
|
||||||
|
col = MAXCOL;
|
||||||
|
}
|
||||||
|
}
|
||||||
if (VIsual_active && col > (int)STRLEN(oldp)) {
|
if (VIsual_active && col > (int)STRLEN(oldp)) {
|
||||||
lnum++;
|
lnum++;
|
||||||
continue;
|
continue;
|
||||||
|
@ -397,9 +397,15 @@ func Test_argdelete()
|
|||||||
last
|
last
|
||||||
argdelete %
|
argdelete %
|
||||||
call assert_equal(['b'], argv())
|
call assert_equal(['b'], argv())
|
||||||
call assert_fails('argdelete', 'E471:')
|
call assert_fails('argdelete', 'E610:')
|
||||||
call assert_fails('1,100argdelete', 'E16:')
|
call assert_fails('1,100argdelete', 'E16:')
|
||||||
%argd
|
|
||||||
|
call Reset_arglist()
|
||||||
|
args a b c d
|
||||||
|
next
|
||||||
|
argdel
|
||||||
|
call Assert_argc(['a', 'c', 'd'])
|
||||||
|
%argdel
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
func Test_argdelete_completion()
|
func Test_argdelete_completion()
|
||||||
|
@ -471,6 +471,7 @@ let s:filename_checks = {
|
|||||||
\ 'uc': ['file.uc'],
|
\ 'uc': ['file.uc'],
|
||||||
\ 'udevconf': ['/etc/udev/udev.conf'],
|
\ 'udevconf': ['/etc/udev/udev.conf'],
|
||||||
\ 'udevperm': ['/etc/udev/permissions.d/file.permissions'],
|
\ 'udevperm': ['/etc/udev/permissions.d/file.permissions'],
|
||||||
|
\ 'udevrules': ['/etc/udev/rules.d/file.rules', '/usr/lib/udev/rules.d/file.rules', '/lib/udev/rules.d/file.rules'],
|
||||||
\ 'uil': ['file.uit', 'file.uil'],
|
\ 'uil': ['file.uit', 'file.uil'],
|
||||||
\ 'updatedb': ['/etc/updatedb.conf'],
|
\ 'updatedb': ['/etc/updatedb.conf'],
|
||||||
\ 'upstart': ['/usr/share/upstart/file.conf', '/usr/share/upstart/file.override', '/etc/init/file.conf', '/etc/init/file.override', '/.init/file.conf', '/.init/file.override', '/.config/upstart/file.conf', '/.config/upstart/file.override'],
|
\ 'upstart': ['/usr/share/upstart/file.conf', '/usr/share/upstart/file.override', '/etc/init/file.conf', '/etc/init/file.override', '/.init/file.conf', '/.init/file.override', '/.config/upstart/file.conf', '/.config/upstart/file.override'],
|
||||||
|
@ -432,3 +432,14 @@ func Test_Visual_Block()
|
|||||||
|
|
||||||
close!
|
close!
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
|
func Test_visual_put_in_block()
|
||||||
|
new
|
||||||
|
call setline(1, ['xxxx', 'y∞yy', 'zzzz'])
|
||||||
|
normal 1G2yl
|
||||||
|
exe "normal 1G2l\<C-V>jjlp"
|
||||||
|
call assert_equal(['xxxx', 'y∞xx', 'zzxx'], getline(1, 3))
|
||||||
|
bwipe!
|
||||||
|
endfunc
|
||||||
|
|
||||||
|
" vim: shiftwidth=2 sts=2 expandtab
|
||||||
|
@ -42,9 +42,7 @@ describe('argument list commands', function()
|
|||||||
end)
|
end)
|
||||||
|
|
||||||
it('test that argadd() works', function()
|
it('test that argadd() works', function()
|
||||||
-- Fails with “E474: Invalid argument”. Not sure whether it is how it is
|
command('%argdelete')
|
||||||
-- supposed to behave.
|
|
||||||
-- command('%argdelete')
|
|
||||||
command('argadd a b c')
|
command('argadd a b c')
|
||||||
eq(0, eval('argidx()'))
|
eq(0, eval('argidx()'))
|
||||||
|
|
||||||
@ -176,9 +174,14 @@ describe('argument list commands', function()
|
|||||||
command('last')
|
command('last')
|
||||||
command('argdelete %')
|
command('argdelete %')
|
||||||
eq({'b'}, eval('argv()'))
|
eq({'b'}, eval('argv()'))
|
||||||
assert_fails('argdelete', 'E471:')
|
assert_fails('argdelete', 'E610:')
|
||||||
assert_fails('1,100argdelete', 'E16:')
|
assert_fails('1,100argdelete', 'E16:')
|
||||||
command('%argd')
|
reset_arglist()
|
||||||
|
command('args a b c d')
|
||||||
|
command('next')
|
||||||
|
command('argdel')
|
||||||
|
eq({'a', 'c', 'd'}, eval('argv()'))
|
||||||
|
command('%argdel')
|
||||||
end)
|
end)
|
||||||
|
|
||||||
it('test for the :next, :prev, :first, :last, :rewind commands', function()
|
it('test for the :next, :prev, :first, :last, :rewind commands', function()
|
||||||
|
Loading…
Reference in New Issue
Block a user