mirror of
https://github.com/vim/vim.git
synced 2025-07-26 11:04:33 -04:00
patch 7.4.1956
Problem: When using CTRL-W f and pressing "q" at the ATTENTION dialog the newly opened window is not closed. Solution: Close the window and go back to the original one. (Norio Takagi, Hirohito Higashi)
This commit is contained in:
parent
f4fba6dcd5
commit
5d2ca04029
@ -34,4 +34,37 @@ func Test_window_cmd_cmdwin_with_vsp()
|
|||||||
set ls&vim
|
set ls&vim
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
|
function Test_window_cmd_wincmd_gf()
|
||||||
|
let fname = 'test_gf.txt'
|
||||||
|
let swp_fname = '.' . fname . '.swp'
|
||||||
|
call writefile([], fname)
|
||||||
|
call writefile([], swp_fname)
|
||||||
|
function s:swap_exists()
|
||||||
|
let v:swapchoice = s:swap_choice
|
||||||
|
endfunc
|
||||||
|
augroup test_window_cmd_wincmd_gf
|
||||||
|
autocmd!
|
||||||
|
exec "autocmd SwapExists " . fname . " call s:swap_exists()"
|
||||||
|
augroup END
|
||||||
|
|
||||||
|
call setline(1, fname)
|
||||||
|
" (E)dit anyway
|
||||||
|
let s:swap_choice = 'e'
|
||||||
|
wincmd gf
|
||||||
|
call assert_equal(2, tabpagenr())
|
||||||
|
call assert_equal(fname, bufname("%"))
|
||||||
|
quit!
|
||||||
|
|
||||||
|
" (Q)uit
|
||||||
|
let s:swap_choice = 'q'
|
||||||
|
wincmd gf
|
||||||
|
call assert_equal(1, tabpagenr())
|
||||||
|
call assert_notequal(fname, bufname("%"))
|
||||||
|
new | only!
|
||||||
|
|
||||||
|
call delete(fname)
|
||||||
|
call delete(swp_fname)
|
||||||
|
augroup! test_window_cmd_wincmd_gf
|
||||||
|
endfunc
|
||||||
|
|
||||||
" vim: sw=2 et
|
" vim: sw=2 et
|
||||||
|
@ -753,6 +753,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 */
|
||||||
|
/**/
|
||||||
|
1956,
|
||||||
/**/
|
/**/
|
||||||
1955,
|
1955,
|
||||||
/**/
|
/**/
|
||||||
|
14
src/window.c
14
src/window.c
@ -475,6 +475,8 @@ wingotofile:
|
|||||||
ptr = grab_file_name(Prenum1, &lnum);
|
ptr = grab_file_name(Prenum1, &lnum);
|
||||||
if (ptr != NULL)
|
if (ptr != NULL)
|
||||||
{
|
{
|
||||||
|
tabpage_T *oldtab = curtab;
|
||||||
|
win_T *oldwin = curwin;
|
||||||
# ifdef FEAT_GUI
|
# ifdef FEAT_GUI
|
||||||
need_mouse_correct = TRUE;
|
need_mouse_correct = TRUE;
|
||||||
# endif
|
# endif
|
||||||
@ -482,9 +484,15 @@ wingotofile:
|
|||||||
if (win_split(0, 0) == OK)
|
if (win_split(0, 0) == OK)
|
||||||
{
|
{
|
||||||
RESET_BINDING(curwin);
|
RESET_BINDING(curwin);
|
||||||
(void)do_ecmd(0, ptr, NULL, NULL, ECMD_LASTL,
|
if (do_ecmd(0, ptr, NULL, NULL, ECMD_LASTL,
|
||||||
ECMD_HIDE, NULL);
|
ECMD_HIDE, NULL) == FAIL)
|
||||||
if (nchar == 'F' && lnum >= 0)
|
{
|
||||||
|
/* Failed to open the file, close the window
|
||||||
|
* opened for it. */
|
||||||
|
win_close(curwin, FALSE);
|
||||||
|
goto_tabpage_win(oldtab, oldwin);
|
||||||
|
}
|
||||||
|
else if (nchar == 'F' && lnum >= 0)
|
||||||
{
|
{
|
||||||
curwin->w_cursor.lnum = lnum;
|
curwin->w_cursor.lnum = lnum;
|
||||||
check_cursor_lnum();
|
check_cursor_lnum();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user