# HG changeset patch # User Bram Moolenaar # Date 1592340304 -7200 # Node ID 0ab45b558621108ea1849e9ce2b0630492ef9c80 # Parent 393f830e4f167c6088af995e88dc2fb07e93af4f patch 8.2.0991: cannot get window type for autocmd and preview window Commit: https://github.com/vim/vim/commit/0fe937fd8616fcd24b1b1ef2ab9f1657615dd22c Author: Bram Moolenaar Date: Tue Jun 16 22:42:04 2020 +0200 patch 8.2.0991: cannot get window type for autocmd and preview window Problem: Cannot get window type for autocmd and preview window. Solution: Add types to win_gettype(). (Yegappan Lakshmanan, closes https://github.com/vim/vim/issues/6277) diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt --- a/runtime/doc/eval.txt +++ b/runtime/doc/eval.txt @@ -10864,7 +10864,10 @@ win_getid([{win} [, {tab}]]) *win_get 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 --- a/src/evalwindow.c +++ b/src/evalwindow.c @@ -858,13 +858,18 @@ f_win_gettype(typval_T *argvars, typval_ 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 --- 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(''), + \ win_gettype(bufwinnr(expand('')))]) + 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 --- 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 --- 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,