aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/eval/funcs.c
diff options
context:
space:
mode:
authorJosh Rahm <joshuarahm@gmail.com>2024-11-25 19:15:05 +0000
committerJosh Rahm <joshuarahm@gmail.com>2024-11-25 19:27:38 +0000
commitc5d770d311841ea5230426cc4c868e8db27300a8 (patch)
treedd21f70127b4b8b5f109baefc8ecc5016f507c91 /src/nvim/eval/funcs.c
parent9be89f131f87608f224f0ee06d199fcd09d32176 (diff)
parent081beb3659bd6d8efc3e977a160b1e72becbd8a2 (diff)
downloadrneovim-c5d770d311841ea5230426cc4c868e8db27300a8.tar.gz
rneovim-c5d770d311841ea5230426cc4c868e8db27300a8.tar.bz2
rneovim-c5d770d311841ea5230426cc4c868e8db27300a8.zip
Merge remote-tracking branch 'upstream/master' into mix_20240309
Diffstat (limited to 'src/nvim/eval/funcs.c')
-rw-r--r--src/nvim/eval/funcs.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/src/nvim/eval/funcs.c b/src/nvim/eval/funcs.c
index 6d1cb4b2c3..9e9e36d3c5 100644
--- a/src/nvim/eval/funcs.c
+++ b/src/nvim/eval/funcs.c
@@ -1342,7 +1342,7 @@ static void f_diff_hlID(typval_T *argvars, typval_T *rettv, EvalFuncData fptr)
hlID = HLF_CHD; // Changed line.
}
}
- rettv->vval.v_number = hlID == (hlf_T)0 ? 0 : (hlID + 1);
+ rettv->vval.v_number = hlID;
}
/// "empty({expr})" function
@@ -4352,9 +4352,17 @@ static void f_line(typval_T *argvars, typval_T *rettv, EvalFuncData fptr)
if (wp != NULL && tp != NULL) {
switchwin_T switchwin;
if (switch_win_noblock(&switchwin, wp, tp, true) == OK) {
+ // in diff mode, prevent that the window scrolls
+ // and keep the topline
+ if (curwin->w_p_diff && switchwin.sw_curwin->w_p_diff) {
+ skip_update_topline = true;
+ }
check_cursor(curwin);
fp = var2fpos(&argvars[0], true, &fnum, false);
}
+ if (curwin->w_p_diff && switchwin.sw_curwin->w_p_diff) {
+ skip_update_topline = false;
+ }
restore_win_noblock(&switchwin, true);
}
} else {
@@ -7841,8 +7849,8 @@ static void f_substitute(typval_T *argvars, typval_T *rettv, EvalFuncData fptr)
|| flg == NULL) {
rettv->vval.v_string = NULL;
} else {
- rettv->vval.v_string = do_string_sub((char *)str, (char *)pat,
- (char *)sub, expr, (char *)flg);
+ rettv->vval.v_string = do_string_sub((char *)str, strlen(str), (char *)pat,
+ (char *)sub, expr, (char *)flg, NULL);
}
}