patch 9.1.0787: cursor position changed when using hidden terminal
Commit:
https://github.com/vim/vim/commit/991657e87db9a6212e14b10594ca0a008d1ccd1c
Author: Christian Brabandt <[email protected]>
Date: Tue Oct 15 20:31:14 2024 +0200
patch 9.1.0787: cursor position changed when using hidden terminal
Problem: cursor position changed when using hidden terminal
and BufFilePost autocommand (Mizuno Jan Yuta)
Solution: Save and restore cursor position
fixes: #15854
closes: #15876
Signed-off-by: Christian Brabandt <[email protected]>
diff --git a/src/terminal.c b/src/terminal.c
index 073f8dd48..f61a54f7f 100644
--- a/src/terminal.c
+++ b/src/terminal.c
@@ -446,6 +446,7 @@ term_start(
buf_T *newbuf;
int vertical = opt->jo_vertical || (cmdmod.cmod_split &
WSP_VERT);
jobopt_T orig_opt; // only partly filled
+ pos_T save_cursor;
if (check_restricted() || check_secure())
return NULL;
@@ -518,6 +519,7 @@ term_start(
old_curbuf = curbuf;
--curbuf->b_nwindows;
curbuf = buf;
+ save_cursor = curwin->w_cursor;
curwin->w_buffer = buf;
++curbuf->b_nwindows;
}
@@ -763,6 +765,7 @@ term_start(
--curbuf->b_nwindows;
curbuf = old_curbuf;
curwin->w_buffer = curbuf;
+ curwin->w_cursor = save_cursor;
++curbuf->b_nwindows;
}
else if (vgetc_busy
diff --git a/src/testdir/test_terminal3.vim b/src/testdir/test_terminal3.vim
index 3cca1b05c..5865d18f4 100644
--- a/src/testdir/test_terminal3.vim
+++ b/src/testdir/test_terminal3.vim
@@ -975,4 +975,29 @@ func Test_terminal_vertical()
call v9.CheckLegacyAndVim9Success(lines)
endfunc
+" Needs to come before Test_hidden_terminal(), why?
+func Test_autocmd_buffilepost_with_hidden_term()
+ CheckExecutable true
+ new XTestFile
+ defer delete('XTestFile')
+ call setline(1, ['one', 'two', 'three'])
+ call cursor(3, 10)
+ augroup TestCursor
+ au!
+ autocmd BufFilePost * call setbufvar(3, '&tabstop', 4)
+ augroup END
+
+ let buf = term_start(['true'], #{hidden: 1, term_finish: 'close'})
+ call term_wait(buf)
+ redraw!
+ call assert_equal('XTestFile', bufname('%'))
+ call assert_equal([0, 3, 5, 0], getpos('.'))
+
+ augroup TestCursor
+ au!
+ augroup END
+ augroup! TestCursor
+ bw! XTestFile
+endfunc
+
" vim: shiftwidth=2 sts=2 expandtab
diff --git a/src/version.c b/src/version.c
index 06a52a001..b8852e39b 100644
--- a/src/version.c
+++ b/src/version.c
@@ -704,6 +704,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
+/**/
+ 787,
/**/
786,
/**/
--
--
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php
---
You received this message because you are subscribed to the Google Groups
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/vim_dev/E1t0mXW-001fvB-In%40256bit.org.