Skip to content

Commit 1868c4c

Browse files
committed
Merge remote-tracking branch 'vim/master'
2 parents 0c9f4fd + 0a08c63 commit 1868c4c

26 files changed

Lines changed: 193 additions & 46 deletions

src/eval.c

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9387,8 +9387,7 @@ typval_compare(
93879387
}
93889388

93899389
char_u *
9390-
typval_tostring(arg)
9391-
typval_T *arg;
9390+
typval_tostring(typval_T *arg)
93929391
{
93939392
char_u *tofree;
93949393
char_u numbuf[NUMBUFLEN];
@@ -9691,11 +9690,12 @@ shortpath_for_partial(
96919690
*/
96929691
int
96939692
modify_fname(
9694-
char_u *src, /* string with modifiers */
9695-
int *usedlen, /* characters after src that are used */
9696-
char_u **fnamep, /* file name so far */
9697-
char_u **bufp, /* buffer for allocated file name or NULL */
9698-
int *fnamelen) /* length of fnamep */
9693+
char_u *src, // string with modifiers
9694+
int tilde_file, // "~" is a file name, not $HOME
9695+
int *usedlen, // characters after src that are used
9696+
char_u **fnamep, // file name so far
9697+
char_u **bufp, // buffer for allocated file name or NULL
9698+
int *fnamelen) // length of fnamep
96999699
{
97009700
int valid = 0;
97019701
char_u *tail;
@@ -9725,8 +9725,8 @@ modify_fname(
97259725
|| (*fnamep)[1] == '\\'
97269726
# endif
97279727
|| (*fnamep)[1] == NUL)
9728-
97299728
#endif
9729+
&& !(tilde_file && (*fnamep)[1] == NUL)
97309730
)
97319731
{
97329732
*fnamep = expand_env_save(*fnamep);

src/evalfunc.c

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2857,9 +2857,7 @@ f_delete(typval_T *argvars, typval_T *rettv)
28572857
* "deletebufline()" function
28582858
*/
28592859
static void
2860-
f_deletebufline(argvars, rettv)
2861-
typval_T *argvars;
2862-
typval_T *rettv;
2860+
f_deletebufline(typval_T *argvars, typval_T *rettv)
28632861
{
28642862
buf_T *buf;
28652863
linenr_T first, last;
@@ -3803,7 +3801,7 @@ f_fnamemodify(typval_T *argvars, typval_T *rettv)
38033801
else
38043802
{
38053803
len = (int)STRLEN(fname);
3806-
(void)modify_fname(mods, &usedlen, &fname, &fbuf, &len);
3804+
(void)modify_fname(mods, FALSE, &usedlen, &fname, &fbuf, &len);
38073805
}
38083806

38093807
rettv->v_type = VAR_STRING;
@@ -10529,9 +10527,7 @@ f_serverlist(typval_T *argvars UNUSED, typval_T *rettv)
1052910527
* "setbufline()" function
1053010528
*/
1053110529
static void
10532-
f_setbufline(argvars, rettv)
10533-
typval_T *argvars;
10534-
typval_T *rettv;
10530+
f_setbufline(typval_T *argvars, typval_T *rettv)
1053510531
{
1053610532
linenr_T lnum;
1053710533
buf_T *buf;

src/ex_docmd.c

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10681,6 +10681,7 @@ eval_vars(
1068110681
int resultlen;
1068210682
buf_T *buf;
1068310683
int valid = VALID_HEAD + VALID_PATH; /* assume valid result */
10684+
int tilde_file = FALSE;
1068410685
int spec_idx;
1068510686
#ifdef FEAT_MODIFY_FNAME
1068610687
int skip_mod = FALSE;
@@ -10747,7 +10748,10 @@ eval_vars(
1074710748
valid = 0; /* Must have ":p:h" to be valid */
1074810749
}
1074910750
else
10751+
{
1075010752
result = curbuf->b_fname;
10753+
tilde_file = STRCMP(result, "~") == 0;
10754+
}
1075110755
break;
1075210756

1075310757
case SPEC_HASH: /* '#' or "#99": alternate file */
@@ -10811,7 +10815,10 @@ eval_vars(
1081110815
valid = 0; /* Must have ":p:h" to be valid */
1081210816
}
1081310817
else
10818+
{
1081410819
result = buf->b_fname;
10820+
tilde_file = STRCMP(result, "~") == 0;
10821+
}
1081510822
}
1081610823
break;
1081710824

@@ -10904,7 +10911,7 @@ eval_vars(
1090410911
#ifdef FEAT_MODIFY_FNAME
1090510912
else if (!skip_mod)
1090610913
{
10907-
valid |= modify_fname(src, usedlen, &result, &resultbuf,
10914+
valid |= modify_fname(src, tilde_file, usedlen, &result, &resultbuf,
1090810915
&resultlen);
1090910916
if (result == NULL)
1091010917
{

src/if_cscope.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -519,7 +519,7 @@ cs_add_common(
519519
#ifdef FEAT_MODIFY_FNAME
520520
len = (int)STRLEN(fname);
521521
fbuf = (char_u *)fname;
522-
(void)modify_fname((char_u *)":p", &usedlen,
522+
(void)modify_fname((char_u *)":p", FALSE, &usedlen,
523523
(char_u **)&fname, &fbuf, &len);
524524
if (fname == NULL)
525525
goto add_err;

src/if_lua.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1377,6 +1377,7 @@ luaV_window_newindex (lua_State *L)
13771377
luaV_checksandbox(L);
13781378
#endif
13791379
w->w_cursor.col = v - 1;
1380+
w->w_set_curswant = TRUE;
13801381
update_screen(VALID);
13811382
}
13821383
else if (strncmp(s, "width", 5) == 0)

src/if_mzsch.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2132,6 +2132,7 @@ set_cursor(void *data, int argc, Scheme_Object **argv)
21322132

21332133
win->win->w_cursor.lnum = lnum;
21342134
win->win->w_cursor.col = col;
2135+
win->win->w_set_curswant = TRUE;
21352136
update_screen(VALID);
21362137

21372138
raise_if_error();

src/if_perl.xs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1691,6 +1691,7 @@ Cursor(win, ...)
16911691
col = (int) SvIV(ST(2));
16921692
win->w_cursor.lnum = lnum;
16931693
win->w_cursor.col = col;
1694+
win->w_set_curswant = TRUE;
16941695
check_cursor(); /* put cursor on an existing line */
16951696
update_screen(NOT_VALID);
16961697
}

src/if_py_both.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3985,6 +3985,7 @@ WindowSetattr(WindowObject *self, char *name, PyObject *valObject)
39853985

39863986
self->win->w_cursor.lnum = lnum;
39873987
self->win->w_cursor.col = col;
3988+
self->win->w_set_curswant = TRUE;
39883989
#ifdef FEAT_VIRTUALEDIT
39893990
self->win->w_cursor.coladd = 0;
39903991
#endif

src/if_ruby.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1517,6 +1517,7 @@ static VALUE window_set_cursor(VALUE self, VALUE pos)
15171517
col = RARRAY_PTR(pos)[1];
15181518
win->w_cursor.lnum = NUM2LONG(lnum);
15191519
win->w_cursor.col = NUM2UINT(col);
1520+
win->w_set_curswant = TRUE;
15201521
check_cursor(); /* put cursor on an existing line */
15211522
update_screen(NOT_VALID);
15221523
return Qnil;

src/if_tcl.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1091,6 +1091,7 @@ winselfcmd(
10911091
/* TODO: should check column */
10921092
win->w_cursor.lnum = val1;
10931093
win->w_cursor.col = col2vim(val2);
1094+
win->w_set_curswant = TRUE;
10941095
flags |= FL_UPDATE_SCREEN;
10951096
break;
10961097

0 commit comments

Comments
 (0)