patch 8.2.2231: when "--remote file" is used "file" is not reloaded
Problem: When "--remote file" is used "file" is not reloaded.
Solution: When a :drop command is used for a file that is already displayed
in a window and it has not been changed, check if it needs to be
reloaded. (closes #7560)
diff --git a/src/ex_cmds.c b/src/ex_cmds.c
index a2b60c9..734949c 100644
--- a/src/ex_cmds.c
+++ b/src/ex_cmds.c
@@ -5171,6 +5171,15 @@
{
goto_tabpage_win(tp, wp);
curwin->w_arg_idx = 0;
+ if (!bufIsChanged(curbuf))
+ {
+ int save_ar = curbuf->b_p_ar;
+
+ // reload the file if it is newer
+ curbuf->b_p_ar = TRUE;
+ buf_check_timestamp(curbuf, FALSE);
+ curbuf->b_p_ar = save_ar;
+ }
return;
}
}
diff --git a/src/testdir/test_clientserver.vim b/src/testdir/test_clientserver.vim
index 6043184..bfad1b2 100644
--- a/src/testdir/test_clientserver.vim
+++ b/src/testdir/test_clientserver.vim
@@ -73,6 +73,15 @@
call assert_fails('call remote_send("XXX", ":let testvar = ''yes''\<CR>")', 'E241:')
+ call writefile(['one'], 'Xclientfile')
+ let cmd = GetVimProg() .. ' --servername ' .. name .. ' --remote Xclientfile'
+ call system(cmd)
+ call WaitForAssert({-> assert_equal('Xclientfile', remote_expr(name, "bufname()", "", 2))})
+ call WaitForAssert({-> assert_equal('one', remote_expr(name, "getline(1)", "", 2))})
+ call writefile(['one', 'two'], 'Xclientfile')
+ call system(cmd)
+ call WaitForAssert({-> assert_equal('two', remote_expr(name, "getline(2)", "", 2))})
+
" Expression evaluated locally.
if v:servername == ''
eval 'MYSELF'->remote_startserver()
diff --git a/src/version.c b/src/version.c
index 51a9e42..02d03b7 100644
--- a/src/version.c
+++ b/src/version.c
@@ -751,6 +751,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 2231,
+/**/
2230,
/**/
2229,