summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2020-06-16 22:42:04 +0200
committerBram Moolenaar <Bram@vim.org>2020-06-16 22:42:04 +0200
commit0fe937fd8616fcd24b1b1ef2ab9f1657615dd22c (patch)
treeea589a16e7a487517083f269b4500d6e4cb5d153
parenta1bc6f12936a9f621238b940d5c6e97837809447 (diff)
downloadvim-git-0fe937fd8616fcd24b1b1ef2ab9f1657615dd22c.tar.gz
patch 8.2.0991: cannot get window type for autocmd and preview windowv8.2.0991
Problem: Cannot get window type for autocmd and preview window. Solution: Add types to win_gettype(). (Yegappan Lakshmanan, closes #6277)
-rw-r--r--runtime/doc/eval.txt3
-rw-r--r--src/evalwindow.c11
-rw-r--r--src/testdir/test_autocmd.vim22
-rw-r--r--src/testdir/test_preview.vim1
-rw-r--r--src/version.c2
5 files changed, 36 insertions, 3 deletions
diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt
index 4ab8bbd1e..fe2e94e25 100644
--- a/runtime/doc/eval.txt
+++ b/runtime/doc/eval.txt
@@ -10864,7 +10864,10 @@ win_getid([{win} [, {tab}]]) *win_getid()*
win_gettype([{nr}]) *win_gettype()*
Return the type of the window:
+ "aucmdwin" autocommand window. Temporary window
+ used to execute autocommands.
"popup" popup window |popup|
+ "preview" preview window |preview-window|
"command" command-line window |cmdwin|
(empty) normal window
"unknown" window {nr} not found
diff --git a/src/evalwindow.c b/src/evalwindow.c
index 0db45bc9c..585ff729f 100644
--- a/src/evalwindow.c
+++ b/src/evalwindow.c
@@ -858,13 +858,18 @@ f_win_gettype(typval_T *argvars, typval_T *rettv)
return;
}
}
+ if (wp == aucmd_win)
+ rettv->vval.v_string = vim_strsave((char_u *)"aucmdwin");
+#if defined(FEAT_QUICKFIX)
+ else if (wp->w_p_pvw)
+ rettv->vval.v_string = vim_strsave((char_u *)"preview");
+#endif
#ifdef FEAT_PROP_POPUP
- if (WIN_IS_POPUP(wp))
+ else if (WIN_IS_POPUP(wp))
rettv->vval.v_string = vim_strsave((char_u *)"popup");
- else
#endif
#ifdef FEAT_CMDWIN
- if (wp == curwin && cmdwin_type != 0)
+ else if (wp == curwin && cmdwin_type != 0)
rettv->vval.v_string = vim_strsave((char_u *)"command");
#endif
}
diff --git a/src/testdir/test_autocmd.vim b/src/testdir/test_autocmd.vim
index ffeaecac0..285d99436 100644
--- a/src/testdir/test_autocmd.vim
+++ b/src/testdir/test_autocmd.vim
@@ -2579,4 +2579,26 @@ func Test_BufDelete_changebuf()
close!
endfunc
+" Test for the temporary internal window used to execute autocmds
+func Test_autocmd_window()
+ %bw!
+ edit one.txt
+ tabnew two.txt
+ let g:blist = []
+ augroup aucmd_win_test
+ au!
+ au BufEnter * call add(g:blist, [expand('<afile>'),
+ \ win_gettype(bufwinnr(expand('<afile>')))])
+ augroup END
+
+ doautoall BufEnter
+ call assert_equal([['one.txt', 'aucmdwin'], ['two.txt', '']], g:blist)
+
+ augroup aucmd_win_test
+ au!
+ augroup END
+ augroup! aucmd_win_test
+ %bw!
+endfunc
+
" vim: shiftwidth=2 sts=2 expandtab
diff --git a/src/testdir/test_preview.vim b/src/testdir/test_preview.vim
index 628ad2bfb..1bf1d3f8b 100644
--- a/src/testdir/test_preview.vim
+++ b/src/testdir/test_preview.vim
@@ -25,6 +25,7 @@ func Test_window_preview()
" Go to the preview window
wincmd P
call assert_equal(1, &previewwindow)
+ call assert_equal('preview', win_gettype())
" Close preview window
wincmd z
diff --git a/src/version.c b/src/version.c
index 57b092a37..9df09d1f9 100644
--- a/src/version.c
+++ b/src/version.c
@@ -755,6 +755,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 991,
+/**/
990,
/**/
989,