mirror of
https://github.com/zoriya/vim.git
synced 2025-12-19 05:35:17 +00:00
patch 8.1.1588: in :let-heredoc line continuation is recognized
Problem: In :let-heredoc line continuation is recognized. Solution: Do not consume line continuation. (Ozaki Kiichi, closes #4580)
This commit is contained in:
@@ -2329,7 +2329,7 @@ auto_next_pat(
|
|||||||
* Returns allocated string, or NULL for end of autocommands.
|
* Returns allocated string, or NULL for end of autocommands.
|
||||||
*/
|
*/
|
||||||
char_u *
|
char_u *
|
||||||
getnextac(int c UNUSED, void *cookie, int indent UNUSED)
|
getnextac(int c UNUSED, void *cookie, int indent UNUSED, int do_concat UNUSED)
|
||||||
{
|
{
|
||||||
AutoPatCmd *acp = (AutoPatCmd *)cookie;
|
AutoPatCmd *acp = (AutoPatCmd *)cookie;
|
||||||
char_u *retval;
|
char_u *retval;
|
||||||
|
|||||||
@@ -2378,7 +2378,7 @@ ex_loadkeymap(exarg_T *eap)
|
|||||||
*/
|
*/
|
||||||
for (;;)
|
for (;;)
|
||||||
{
|
{
|
||||||
line = eap->getline(0, eap->cookie, 0);
|
line = eap->getline(0, eap->cookie, 0, TRUE);
|
||||||
if (line == NULL)
|
if (line == NULL)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|||||||
@@ -1307,7 +1307,7 @@ heredoc_get(exarg_T *eap, char_u *cmd)
|
|||||||
int mi = 0;
|
int mi = 0;
|
||||||
int ti = 0;
|
int ti = 0;
|
||||||
|
|
||||||
theline = eap->getline(NUL, eap->cookie, 0);
|
theline = eap->getline(NUL, eap->cookie, 0, FALSE);
|
||||||
if (theline == NULL)
|
if (theline == NULL)
|
||||||
{
|
{
|
||||||
semsg(_("E990: Missing end marker '%s'"), marker);
|
semsg(_("E990: Missing end marker '%s'"), marker);
|
||||||
|
|||||||
@@ -3234,7 +3234,8 @@ execute_redir_str(char_u *value, int value_len)
|
|||||||
get_list_line(
|
get_list_line(
|
||||||
int c UNUSED,
|
int c UNUSED,
|
||||||
void *cookie,
|
void *cookie,
|
||||||
int indent UNUSED)
|
int indent UNUSED,
|
||||||
|
int do_concat UNUSED)
|
||||||
{
|
{
|
||||||
listitem_T **p = (listitem_T **)cookie;
|
listitem_T **p = (listitem_T **)cookie;
|
||||||
listitem_T *item = *p;
|
listitem_T *item = *p;
|
||||||
|
|||||||
@@ -4540,7 +4540,7 @@ ex_append(exarg_T *eap)
|
|||||||
#ifdef FEAT_EVAL
|
#ifdef FEAT_EVAL
|
||||||
eap->cstack->cs_looplevel > 0 ? -1 :
|
eap->cstack->cs_looplevel > 0 ? -1 :
|
||||||
#endif
|
#endif
|
||||||
NUL, eap->cookie, indent);
|
NUL, eap->cookie, indent, TRUE);
|
||||||
State = save_State;
|
State = save_State;
|
||||||
}
|
}
|
||||||
lines_left = Rows - 1;
|
lines_left = Rows - 1;
|
||||||
@@ -5388,7 +5388,7 @@ do_sub(exarg_T *eap)
|
|||||||
for ( ; i <= (long)ec; ++i)
|
for ( ; i <= (long)ec; ++i)
|
||||||
msg_putchar('^');
|
msg_putchar('^');
|
||||||
|
|
||||||
resp = getexmodeline('?', NULL, 0);
|
resp = getexmodeline('?', NULL, 0, TRUE);
|
||||||
if (resp != NULL)
|
if (resp != NULL)
|
||||||
{
|
{
|
||||||
typed = *resp;
|
typed = *resp;
|
||||||
|
|||||||
@@ -1837,7 +1837,7 @@ struct exarg
|
|||||||
int bad_char; /* BAD_KEEP, BAD_DROP or replacement byte */
|
int bad_char; /* BAD_KEEP, BAD_DROP or replacement byte */
|
||||||
int useridx; /* user command index */
|
int useridx; /* user command index */
|
||||||
char *errmsg; /* returned error message */
|
char *errmsg; /* returned error message */
|
||||||
char_u *(*getline)(int, void *, int);
|
char_u *(*getline)(int, void *, int, int);
|
||||||
void *cookie; /* argument for getline() */
|
void *cookie; /* argument for getline() */
|
||||||
#ifdef FEAT_EVAL
|
#ifdef FEAT_EVAL
|
||||||
struct condstack *cstack; /* condition stack for ":if" etc. */
|
struct condstack *cstack; /* condition stack for ":if" etc. */
|
||||||
|
|||||||
@@ -371,6 +371,7 @@ check_due_timer(void)
|
|||||||
int save_trylevel = trylevel;
|
int save_trylevel = trylevel;
|
||||||
int save_did_throw = did_throw;
|
int save_did_throw = did_throw;
|
||||||
int save_ex_pressedreturn = get_pressedreturn();
|
int save_ex_pressedreturn = get_pressedreturn();
|
||||||
|
int save_may_garbage_collect = may_garbage_collect;
|
||||||
except_T *save_current_exception = current_exception;
|
except_T *save_current_exception = current_exception;
|
||||||
vimvars_save_T vvsave;
|
vimvars_save_T vvsave;
|
||||||
|
|
||||||
@@ -385,7 +386,9 @@ check_due_timer(void)
|
|||||||
trylevel = 0;
|
trylevel = 0;
|
||||||
did_throw = FALSE;
|
did_throw = FALSE;
|
||||||
current_exception = NULL;
|
current_exception = NULL;
|
||||||
|
may_garbage_collect = FALSE;
|
||||||
save_vimvars(&vvsave);
|
save_vimvars(&vvsave);
|
||||||
|
|
||||||
timer->tr_firing = TRUE;
|
timer->tr_firing = TRUE;
|
||||||
timer_callback(timer);
|
timer_callback(timer);
|
||||||
timer->tr_firing = FALSE;
|
timer->tr_firing = FALSE;
|
||||||
@@ -407,6 +410,7 @@ check_due_timer(void)
|
|||||||
must_redraw = must_redraw > save_must_redraw
|
must_redraw = must_redraw > save_must_redraw
|
||||||
? must_redraw : save_must_redraw;
|
? must_redraw : save_must_redraw;
|
||||||
set_pressedreturn(save_ex_pressedreturn);
|
set_pressedreturn(save_ex_pressedreturn);
|
||||||
|
may_garbage_collect = save_may_garbage_collect;
|
||||||
|
|
||||||
/* Only fire the timer again if it repeats and stop_timer() wasn't
|
/* Only fire the timer again if it repeats and stop_timer() wasn't
|
||||||
* called while inside the callback (tr_id == -1). */
|
* called while inside the callback (tr_id == -1). */
|
||||||
@@ -3611,7 +3615,7 @@ do_source(
|
|||||||
cookie.conv.vc_type = CONV_NONE; /* no conversion */
|
cookie.conv.vc_type = CONV_NONE; /* no conversion */
|
||||||
|
|
||||||
/* Read the first line so we can check for a UTF-8 BOM. */
|
/* Read the first line so we can check for a UTF-8 BOM. */
|
||||||
firstline = getsourceline(0, (void *)&cookie, 0);
|
firstline = getsourceline(0, (void *)&cookie, 0, TRUE);
|
||||||
if (firstline != NULL && STRLEN(firstline) >= 3 && firstline[0] == 0xef
|
if (firstline != NULL && STRLEN(firstline) >= 3 && firstline[0] == 0xef
|
||||||
&& firstline[1] == 0xbb && firstline[2] == 0xbf)
|
&& firstline[1] == 0xbb && firstline[2] == 0xbf)
|
||||||
{
|
{
|
||||||
@@ -3794,7 +3798,7 @@ free_scriptnames(void)
|
|||||||
* Return NULL for end-of-file or some error.
|
* Return NULL for end-of-file or some error.
|
||||||
*/
|
*/
|
||||||
char_u *
|
char_u *
|
||||||
getsourceline(int c UNUSED, void *cookie, int indent UNUSED)
|
getsourceline(int c UNUSED, void *cookie, int indent UNUSED, int do_concat)
|
||||||
{
|
{
|
||||||
struct source_cookie *sp = (struct source_cookie *)cookie;
|
struct source_cookie *sp = (struct source_cookie *)cookie;
|
||||||
char_u *line;
|
char_u *line;
|
||||||
@@ -3833,7 +3837,7 @@ getsourceline(int c UNUSED, void *cookie, int indent UNUSED)
|
|||||||
|
|
||||||
/* Only concatenate lines starting with a \ when 'cpoptions' doesn't
|
/* Only concatenate lines starting with a \ when 'cpoptions' doesn't
|
||||||
* contain the 'C' flag. */
|
* contain the 'C' flag. */
|
||||||
if (line != NULL && (vim_strchr(p_cpo, CPO_CONCAT) == NULL))
|
if (line != NULL && do_concat && vim_strchr(p_cpo, CPO_CONCAT) == NULL)
|
||||||
{
|
{
|
||||||
/* compensate for the one line read-ahead */
|
/* compensate for the one line read-ahead */
|
||||||
--sourcing_lnum;
|
--sourcing_lnum;
|
||||||
@@ -4212,7 +4216,7 @@ do_finish(exarg_T *eap, int reanimate)
|
|||||||
*/
|
*/
|
||||||
int
|
int
|
||||||
source_finished(
|
source_finished(
|
||||||
char_u *(*fgetline)(int, void *, int),
|
char_u *(*fgetline)(int, void *, int, int),
|
||||||
void *cookie)
|
void *cookie)
|
||||||
{
|
{
|
||||||
return (getline_equal(fgetline, cookie, getsourceline)
|
return (getline_equal(fgetline, cookie, getsourceline)
|
||||||
|
|||||||
@@ -20,9 +20,9 @@ static int ex_pressedreturn = FALSE;
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef FEAT_EVAL
|
#ifdef FEAT_EVAL
|
||||||
static char_u *do_one_cmd(char_u **, int, struct condstack *, char_u *(*fgetline)(int, void *, int), void *cookie);
|
static char_u *do_one_cmd(char_u **, int, struct condstack *, char_u *(*fgetline)(int, void *, int, int), void *cookie);
|
||||||
#else
|
#else
|
||||||
static char_u *do_one_cmd(char_u **, int, char_u *(*fgetline)(int, void *, int), void *cookie);
|
static char_u *do_one_cmd(char_u **, int, char_u *(*fgetline)(int, void *, int, int), void *cookie);
|
||||||
static int if_level = 0; /* depth in :if */
|
static int if_level = 0; /* depth in :if */
|
||||||
#endif
|
#endif
|
||||||
static void free_cmdmod(void);
|
static void free_cmdmod(void);
|
||||||
@@ -431,11 +431,11 @@ struct loop_cookie
|
|||||||
int current_line; /* last read line from growarray */
|
int current_line; /* last read line from growarray */
|
||||||
int repeating; /* TRUE when looping a second time */
|
int repeating; /* TRUE when looping a second time */
|
||||||
/* When "repeating" is FALSE use "getline" and "cookie" to get lines */
|
/* When "repeating" is FALSE use "getline" and "cookie" to get lines */
|
||||||
char_u *(*getline)(int, void *, int);
|
char_u *(*getline)(int, void *, int, int);
|
||||||
void *cookie;
|
void *cookie;
|
||||||
};
|
};
|
||||||
|
|
||||||
static char_u *get_loop_line(int c, void *cookie, int indent);
|
static char_u *get_loop_line(int c, void *cookie, int indent, int do_concat);
|
||||||
static int store_loop_line(garray_T *gap, char_u *line);
|
static int store_loop_line(garray_T *gap, char_u *line);
|
||||||
static void free_cmdlines(garray_T *gap);
|
static void free_cmdlines(garray_T *gap);
|
||||||
|
|
||||||
@@ -619,7 +619,7 @@ do_cmdline_cmd(char_u *cmd)
|
|||||||
int
|
int
|
||||||
do_cmdline(
|
do_cmdline(
|
||||||
char_u *cmdline,
|
char_u *cmdline,
|
||||||
char_u *(*fgetline)(int, void *, int),
|
char_u *(*fgetline)(int, void *, int, int),
|
||||||
void *cookie, /* argument for fgetline() */
|
void *cookie, /* argument for fgetline() */
|
||||||
int flags)
|
int flags)
|
||||||
{
|
{
|
||||||
@@ -644,7 +644,7 @@ do_cmdline(
|
|||||||
struct msglist *private_msg_list;
|
struct msglist *private_msg_list;
|
||||||
|
|
||||||
/* "fgetline" and "cookie" passed to do_one_cmd() */
|
/* "fgetline" and "cookie" passed to do_one_cmd() */
|
||||||
char_u *(*cmd_getline)(int, void *, int);
|
char_u *(*cmd_getline)(int, void *, int, int);
|
||||||
void *cmd_cookie;
|
void *cmd_cookie;
|
||||||
struct loop_cookie cmd_loop_cookie;
|
struct loop_cookie cmd_loop_cookie;
|
||||||
void *real_cookie;
|
void *real_cookie;
|
||||||
@@ -894,7 +894,7 @@ do_cmdline(
|
|||||||
#else
|
#else
|
||||||
0
|
0
|
||||||
#endif
|
#endif
|
||||||
)) == NULL)
|
, TRUE)) == NULL)
|
||||||
{
|
{
|
||||||
/* Don't call wait_return for aborted command line. The NULL
|
/* Don't call wait_return for aborted command line. The NULL
|
||||||
* returned for the end of a sourced file or executed function
|
* returned for the end of a sourced file or executed function
|
||||||
@@ -1424,7 +1424,7 @@ do_cmdline(
|
|||||||
* Obtain a line when inside a ":while" or ":for" loop.
|
* Obtain a line when inside a ":while" or ":for" loop.
|
||||||
*/
|
*/
|
||||||
static char_u *
|
static char_u *
|
||||||
get_loop_line(int c, void *cookie, int indent)
|
get_loop_line(int c, void *cookie, int indent, int do_concat)
|
||||||
{
|
{
|
||||||
struct loop_cookie *cp = (struct loop_cookie *)cookie;
|
struct loop_cookie *cp = (struct loop_cookie *)cookie;
|
||||||
wcmd_T *wp;
|
wcmd_T *wp;
|
||||||
@@ -1437,9 +1437,9 @@ get_loop_line(int c, void *cookie, int indent)
|
|||||||
|
|
||||||
/* First time inside the ":while"/":for": get line normally. */
|
/* First time inside the ":while"/":for": get line normally. */
|
||||||
if (cp->getline == NULL)
|
if (cp->getline == NULL)
|
||||||
line = getcmdline(c, 0L, indent);
|
line = getcmdline(c, 0L, indent, do_concat);
|
||||||
else
|
else
|
||||||
line = cp->getline(c, cp->cookie, indent);
|
line = cp->getline(c, cp->cookie, indent, do_concat);
|
||||||
if (line != NULL && store_loop_line(cp->lines_gap, line) == OK)
|
if (line != NULL && store_loop_line(cp->lines_gap, line) == OK)
|
||||||
++cp->current_line;
|
++cp->current_line;
|
||||||
|
|
||||||
@@ -1487,12 +1487,12 @@ free_cmdlines(garray_T *gap)
|
|||||||
*/
|
*/
|
||||||
int
|
int
|
||||||
getline_equal(
|
getline_equal(
|
||||||
char_u *(*fgetline)(int, void *, int),
|
char_u *(*fgetline)(int, void *, int, int),
|
||||||
void *cookie UNUSED, /* argument for fgetline() */
|
void *cookie UNUSED, /* argument for fgetline() */
|
||||||
char_u *(*func)(int, void *, int))
|
char_u *(*func)(int, void *, int, int))
|
||||||
{
|
{
|
||||||
#ifdef FEAT_EVAL
|
#ifdef FEAT_EVAL
|
||||||
char_u *(*gp)(int, void *, int);
|
char_u *(*gp)(int, void *, int, int);
|
||||||
struct loop_cookie *cp;
|
struct loop_cookie *cp;
|
||||||
|
|
||||||
/* When "fgetline" is "get_loop_line()" use the "cookie" to find the
|
/* When "fgetline" is "get_loop_line()" use the "cookie" to find the
|
||||||
@@ -1517,11 +1517,11 @@ getline_equal(
|
|||||||
*/
|
*/
|
||||||
void *
|
void *
|
||||||
getline_cookie(
|
getline_cookie(
|
||||||
char_u *(*fgetline)(int, void *, int) UNUSED,
|
char_u *(*fgetline)(int, void *, int, int) UNUSED,
|
||||||
void *cookie) /* argument for fgetline() */
|
void *cookie) /* argument for fgetline() */
|
||||||
{
|
{
|
||||||
#ifdef FEAT_EVAL
|
#ifdef FEAT_EVAL
|
||||||
char_u *(*gp)(int, void *, int);
|
char_u *(*gp)(int, void *, int, int);
|
||||||
struct loop_cookie *cp;
|
struct loop_cookie *cp;
|
||||||
|
|
||||||
/* When "fgetline" is "get_loop_line()" use the "cookie" to find the
|
/* When "fgetline" is "get_loop_line()" use the "cookie" to find the
|
||||||
@@ -1654,7 +1654,7 @@ do_one_cmd(
|
|||||||
#ifdef FEAT_EVAL
|
#ifdef FEAT_EVAL
|
||||||
struct condstack *cstack,
|
struct condstack *cstack,
|
||||||
#endif
|
#endif
|
||||||
char_u *(*fgetline)(int, void *, int),
|
char_u *(*fgetline)(int, void *, int, int),
|
||||||
void *cookie) /* argument for fgetline() */
|
void *cookie) /* argument for fgetline() */
|
||||||
{
|
{
|
||||||
char_u *p;
|
char_u *p;
|
||||||
|
|||||||
@@ -838,7 +838,8 @@ cmdline_init(void)
|
|||||||
getcmdline(
|
getcmdline(
|
||||||
int firstc,
|
int firstc,
|
||||||
long count, // only used for incremental search
|
long count, // only used for incremental search
|
||||||
int indent) // indent for inside conditionals
|
int indent, // indent for inside conditionals
|
||||||
|
int do_concat UNUSED)
|
||||||
{
|
{
|
||||||
return getcmdline_int(firstc, count, indent, TRUE);
|
return getcmdline_int(firstc, count, indent, TRUE);
|
||||||
}
|
}
|
||||||
@@ -2687,12 +2688,13 @@ correct_cmdspos(int idx, int cells)
|
|||||||
getexline(
|
getexline(
|
||||||
int c, /* normally ':', NUL for ":append" */
|
int c, /* normally ':', NUL for ":append" */
|
||||||
void *cookie UNUSED,
|
void *cookie UNUSED,
|
||||||
int indent) /* indent for inside conditionals */
|
int indent, /* indent for inside conditionals */
|
||||||
|
int do_concat)
|
||||||
{
|
{
|
||||||
/* When executing a register, remove ':' that's in front of each line. */
|
/* When executing a register, remove ':' that's in front of each line. */
|
||||||
if (exec_from_reg && vpeekc() == ':')
|
if (exec_from_reg && vpeekc() == ':')
|
||||||
(void)vgetc();
|
(void)vgetc();
|
||||||
return getcmdline(c, 1L, indent);
|
return getcmdline(c, 1L, indent, do_concat);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -2706,7 +2708,8 @@ getexmodeline(
|
|||||||
int promptc, /* normally ':', NUL for ":append" and '?' for
|
int promptc, /* normally ':', NUL for ":append" and '?' for
|
||||||
:s prompt */
|
:s prompt */
|
||||||
void *cookie UNUSED,
|
void *cookie UNUSED,
|
||||||
int indent) /* indent for inside conditionals */
|
int indent, /* indent for inside conditionals */
|
||||||
|
int do_concat UNUSED)
|
||||||
{
|
{
|
||||||
garray_T line_ga;
|
garray_T line_ga;
|
||||||
char_u *pend;
|
char_u *pend;
|
||||||
@@ -7409,7 +7412,7 @@ script_get(exarg_T *eap, char_u *cmd)
|
|||||||
#ifdef FEAT_EVAL
|
#ifdef FEAT_EVAL
|
||||||
eap->cstack->cs_looplevel > 0 ? -1 :
|
eap->cstack->cs_looplevel > 0 ? -1 :
|
||||||
#endif
|
#endif
|
||||||
NUL, eap->cookie, 0);
|
NUL, eap->cookie, 0, TRUE);
|
||||||
|
|
||||||
if (theline == NULL || STRCMP(end_pattern, theline) == 0)
|
if (theline == NULL || STRCMP(end_pattern, theline) == 0)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -6237,7 +6237,7 @@ nv_search(cmdarg_T *cap)
|
|||||||
|
|
||||||
/* When using 'incsearch' the cursor may be moved to set a different search
|
/* When using 'incsearch' the cursor may be moved to set a different search
|
||||||
* start position. */
|
* start position. */
|
||||||
cap->searchbuf = getcmdline(cap->cmdchar, cap->count1, 0);
|
cap->searchbuf = getcmdline(cap->cmdchar, cap->count1, 0, TRUE);
|
||||||
|
|
||||||
if (cap->searchbuf == NULL)
|
if (cap->searchbuf == NULL)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -788,7 +788,7 @@ get_expr_register(void)
|
|||||||
{
|
{
|
||||||
char_u *new_line;
|
char_u *new_line;
|
||||||
|
|
||||||
new_line = getcmdline('=', 0L, 0);
|
new_line = getcmdline('=', 0L, 0, TRUE);
|
||||||
if (new_line == NULL)
|
if (new_line == NULL)
|
||||||
return NUL;
|
return NUL;
|
||||||
if (*new_line == NUL) /* use previous line */
|
if (*new_line == NUL) /* use previous line */
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ int has_completechanged(void);
|
|||||||
void block_autocmds(void);
|
void block_autocmds(void);
|
||||||
void unblock_autocmds(void);
|
void unblock_autocmds(void);
|
||||||
int is_autocmd_blocked(void);
|
int is_autocmd_blocked(void);
|
||||||
char_u *getnextac(int c, void *cookie, int indent);
|
char_u *getnextac(int c, void *cookie, int indent, int do_concat);
|
||||||
int has_autocmd(event_T event, char_u *sfname, buf_T *buf);
|
int has_autocmd(event_T event, char_u *sfname, buf_T *buf);
|
||||||
char_u *get_augroup_name(expand_T *xp, int idx);
|
char_u *get_augroup_name(expand_T *xp, int idx);
|
||||||
char_u *set_context_in_autocmd(expand_T *xp, char_u *arg, int doautocmd);
|
char_u *set_context_in_autocmd(expand_T *xp, char_u *arg, int doautocmd);
|
||||||
|
|||||||
@@ -81,7 +81,7 @@ void ex_scriptnames(exarg_T *eap);
|
|||||||
void scriptnames_slash_adjust(void);
|
void scriptnames_slash_adjust(void);
|
||||||
char_u *get_scriptname(scid_T id);
|
char_u *get_scriptname(scid_T id);
|
||||||
void free_scriptnames(void);
|
void free_scriptnames(void);
|
||||||
char_u *getsourceline(int c, void *cookie, int indent);
|
char_u *getsourceline(int c, void *cookie, int indent, int do_concat);
|
||||||
void script_line_start(void);
|
void script_line_start(void);
|
||||||
void script_line_exec(void);
|
void script_line_exec(void);
|
||||||
void script_line_end(void);
|
void script_line_end(void);
|
||||||
@@ -89,7 +89,7 @@ void ex_scriptencoding(exarg_T *eap);
|
|||||||
void ex_scriptversion(exarg_T *eap);
|
void ex_scriptversion(exarg_T *eap);
|
||||||
void ex_finish(exarg_T *eap);
|
void ex_finish(exarg_T *eap);
|
||||||
void do_finish(exarg_T *eap, int reanimate);
|
void do_finish(exarg_T *eap, int reanimate);
|
||||||
int source_finished(char_u *(*fgetline)(int, void *, int), void *cookie);
|
int source_finished(char_u *(*fgetline)(int, void *, int, int), void *cookie);
|
||||||
void ex_checktime(exarg_T *eap);
|
void ex_checktime(exarg_T *eap);
|
||||||
char_u *get_mess_lang(void);
|
char_u *get_mess_lang(void);
|
||||||
void set_lang_var(void);
|
void set_lang_var(void);
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
/* ex_docmd.c */
|
/* ex_docmd.c */
|
||||||
void do_exmode(int improved);
|
void do_exmode(int improved);
|
||||||
int do_cmdline_cmd(char_u *cmd);
|
int do_cmdline_cmd(char_u *cmd);
|
||||||
int do_cmdline(char_u *cmdline, char_u *(*fgetline)(int, void *, int), void *cookie, int flags);
|
int do_cmdline(char_u *cmdline, char_u *(*fgetline)(int, void *, int, int), void *cookie, int flags);
|
||||||
int getline_equal(char_u *(*fgetline)(int, void *, int), void *cookie, char_u *(*func)(int, void *, int));
|
int getline_equal(char_u *(*fgetline)(int, void *, int, int), void *cookie, char_u *(*func)(int, void *, int, int));
|
||||||
void *getline_cookie(char_u *(*fgetline)(int, void *, int), void *cookie);
|
void *getline_cookie(char_u *(*fgetline)(int, void *, int, int), void *cookie);
|
||||||
int parse_command_modifiers(exarg_T *eap, char **errormsg, int skip_only);
|
int parse_command_modifiers(exarg_T *eap, char **errormsg, int skip_only);
|
||||||
int parse_cmd_address(exarg_T *eap, char **errormsg, int silent);
|
int parse_cmd_address(exarg_T *eap, char **errormsg, int silent);
|
||||||
int checkforcmd(char_u **pp, char *cmd, int len);
|
int checkforcmd(char_u **pp, char *cmd, int len);
|
||||||
|
|||||||
@@ -1,14 +1,14 @@
|
|||||||
/* ex_getln.c */
|
/* ex_getln.c */
|
||||||
void cmdline_init(void);
|
void cmdline_init(void);
|
||||||
char_u *getcmdline(int firstc, long count, int indent);
|
char_u *getcmdline(int firstc, long count, int indent, int do_concat);
|
||||||
char_u *getcmdline_prompt(int firstc, char_u *prompt, int attr, int xp_context, char_u *xp_arg);
|
char_u *getcmdline_prompt(int firstc, char_u *prompt, int attr, int xp_context, char_u *xp_arg);
|
||||||
int text_locked(void);
|
int text_locked(void);
|
||||||
void text_locked_msg(void);
|
void text_locked_msg(void);
|
||||||
char *get_text_locked_msg(void);
|
char *get_text_locked_msg(void);
|
||||||
int curbuf_locked(void);
|
int curbuf_locked(void);
|
||||||
int allbuf_locked(void);
|
int allbuf_locked(void);
|
||||||
char_u *getexline(int c, void *cookie, int indent);
|
char_u *getexline(int c, void *cookie, int indent, int do_concat);
|
||||||
char_u *getexmodeline(int promptc, void *cookie, int indent);
|
char_u *getexmodeline(int promptc, void *cookie, int indent, int do_concat);
|
||||||
int cmdline_overstrike(void);
|
int cmdline_overstrike(void);
|
||||||
int cmdline_at_end(void);
|
int cmdline_at_end(void);
|
||||||
colnr_T cmdline_getvcol_cursor(void);
|
colnr_T cmdline_getvcol_cursor(void);
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ void ex_call(exarg_T *eap);
|
|||||||
int do_return(exarg_T *eap, int reanimate, int is_cmd, void *rettv);
|
int do_return(exarg_T *eap, int reanimate, int is_cmd, void *rettv);
|
||||||
void discard_pending_return(void *rettv);
|
void discard_pending_return(void *rettv);
|
||||||
char_u *get_return_cmd(void *rettv);
|
char_u *get_return_cmd(void *rettv);
|
||||||
char_u *get_func_line(int c, void *cookie, int indent);
|
char_u *get_func_line(int c, void *cookie, int indent, int do_concat);
|
||||||
void func_line_start(void *cookie);
|
void func_line_start(void *cookie);
|
||||||
void func_line_exec(void *cookie);
|
void func_line_exec(void *cookie);
|
||||||
void func_line_end(void *cookie);
|
void func_line_end(void *cookie);
|
||||||
|
|||||||
@@ -237,6 +237,14 @@ END
|
|||||||
END
|
END
|
||||||
call assert_equal(['something', 'endfunc'], var1)
|
call assert_equal(['something', 'endfunc'], var1)
|
||||||
|
|
||||||
|
" not concatenate lines
|
||||||
|
let var1 =<< END
|
||||||
|
some
|
||||||
|
\thing
|
||||||
|
\ else
|
||||||
|
END
|
||||||
|
call assert_equal(['some', ' \thing', ' \ else'], var1)
|
||||||
|
|
||||||
" ignore "python << xx"
|
" ignore "python << xx"
|
||||||
let var1 =<<END
|
let var1 =<<END
|
||||||
something
|
something
|
||||||
|
|||||||
@@ -157,6 +157,7 @@ endfunc
|
|||||||
" horizontally or vertically.
|
" horizontally or vertically.
|
||||||
func Test_o_arg()
|
func Test_o_arg()
|
||||||
let after =<< trim [CODE]
|
let after =<< trim [CODE]
|
||||||
|
set cpo&vim
|
||||||
call writefile([winnr("$"),
|
call writefile([winnr("$"),
|
||||||
\ winheight(1), winheight(2), &lines,
|
\ winheight(1), winheight(2), &lines,
|
||||||
\ winwidth(1), winwidth(2), &columns,
|
\ winwidth(1), winwidth(2), &columns,
|
||||||
|
|||||||
@@ -2007,6 +2007,7 @@ ex_function(exarg_T *eap)
|
|||||||
hashtab_T *ht;
|
hashtab_T *ht;
|
||||||
int todo;
|
int todo;
|
||||||
hashitem_T *hi;
|
hashitem_T *hi;
|
||||||
|
int do_concat = TRUE;
|
||||||
int sourcing_lnum_off;
|
int sourcing_lnum_off;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -2303,9 +2304,9 @@ ex_function(exarg_T *eap)
|
|||||||
{
|
{
|
||||||
vim_free(line_to_free);
|
vim_free(line_to_free);
|
||||||
if (eap->getline == NULL)
|
if (eap->getline == NULL)
|
||||||
theline = getcmdline(':', 0L, indent);
|
theline = getcmdline(':', 0L, indent, do_concat);
|
||||||
else
|
else
|
||||||
theline = eap->getline(':', eap->cookie, indent);
|
theline = eap->getline(':', eap->cookie, indent, do_concat);
|
||||||
line_to_free = theline;
|
line_to_free = theline;
|
||||||
}
|
}
|
||||||
if (KeyTyped)
|
if (KeyTyped)
|
||||||
@@ -2334,6 +2335,7 @@ ex_function(exarg_T *eap)
|
|||||||
{
|
{
|
||||||
VIM_CLEAR(skip_until);
|
VIM_CLEAR(skip_until);
|
||||||
VIM_CLEAR(trimmed);
|
VIM_CLEAR(trimmed);
|
||||||
|
do_concat = TRUE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2458,6 +2460,7 @@ ex_function(exarg_T *eap)
|
|||||||
skip_until = vim_strsave((char_u *)".");
|
skip_until = vim_strsave((char_u *)".");
|
||||||
else
|
else
|
||||||
skip_until = vim_strnsave(p, (int)(skiptowhite(p) - p));
|
skip_until = vim_strnsave(p, (int)(skiptowhite(p) - p));
|
||||||
|
do_concat = FALSE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3511,7 +3514,8 @@ get_return_cmd(void *rettv)
|
|||||||
get_func_line(
|
get_func_line(
|
||||||
int c UNUSED,
|
int c UNUSED,
|
||||||
void *cookie,
|
void *cookie,
|
||||||
int indent UNUSED)
|
int indent UNUSED,
|
||||||
|
int do_concat UNUSED)
|
||||||
{
|
{
|
||||||
funccall_T *fcp = (funccall_T *)cookie;
|
funccall_T *fcp = (funccall_T *)cookie;
|
||||||
ufunc_T *fp = fcp->func;
|
ufunc_T *fp = fcp->func;
|
||||||
|
|||||||
@@ -777,6 +777,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
1588,
|
||||||
/**/
|
/**/
|
||||||
1587,
|
1587,
|
||||||
/**/
|
/**/
|
||||||
|
|||||||
Reference in New Issue
Block a user