# HG changeset patch # User Bram Moolenaar # Date 1627728305 -7200 # Node ID 6ad76124ddda1a28f0de9a029b9ce19bff674503 # Parent b76d67278a1464848103eb2aa4b74198b3ffa74a patch 8.2.3254: win_gettype() does not recognize a quickfix window Commit: https://github.com/vim/vim/commit/28d8421bfb3327d7a5e81369977e8fc108b0229e Author: Yegappan Lakshmanan Date: Sat Jul 31 12:43:23 2021 +0200 patch 8.2.3254: win_gettype() does not recognize a quickfix window Problem: win_gettype() does not recognize a quickfix window. Solution: Add "quickfix" and "loclist". (Yegappan Lakshmanan, closes https://github.com/vim/vim/issues/8676) diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt --- a/runtime/doc/eval.txt +++ b/runtime/doc/eval.txt @@ -11661,10 +11661,12 @@ win_gettype([{nr}]) *win_gettype()* Return the type of the window: "autocmd" autocommand window. Temporary window used to execute autocommands. + "command" command-line window |cmdwin| + (empty) normal window + "loclist" |location-list-window| "popup" popup window |popup| "preview" preview window |preview-window| - "command" command-line window |cmdwin| - (empty) normal window + "quickfix" |quickfix-window| "unknown" window {nr} not found When {nr} is omitted return the type of the current window. diff --git a/src/evalwindow.c b/src/evalwindow.c --- a/src/evalwindow.c +++ b/src/evalwindow.c @@ -953,6 +953,12 @@ f_win_gettype(typval_T *argvars, typval_ else if (wp == curwin && cmdwin_type != 0) rettv->vval.v_string = vim_strsave((char_u *)"command"); #endif +#ifdef FEAT_QUICKFIX + else if (bt_quickfix(wp->w_buffer)) + rettv->vval.v_string = vim_strsave((char_u *) + (wp->w_llist_ref != NULL ? "loclist" : "quickfix")); +#endif + } /* diff --git a/src/misc2.c b/src/misc2.c --- a/src/misc2.c +++ b/src/misc2.c @@ -1574,10 +1574,10 @@ ga_concat_len(garray_T *gap, char_u *s, { if (s == NULL || *s == NUL) return; - if (ga_grow(gap, len) == OK) + if (ga_grow(gap, (int)len) == OK) { - mch_memmove((char *)gap->ga_data + gap->ga_len, s, (size_t)len); - gap->ga_len += len; + mch_memmove((char *)gap->ga_data + gap->ga_len, s, len); + gap->ga_len += (int)len; } } diff --git a/src/testdir/test_quickfix.vim b/src/testdir/test_quickfix.vim --- a/src/testdir/test_quickfix.vim +++ b/src/testdir/test_quickfix.vim @@ -5587,4 +5587,21 @@ func Test_locationlist_open_in_newtab() %bwipe! endfunc +" Test for win_gettype() in quickfix and location list windows +func Test_win_gettype() + copen + call assert_equal("quickfix", win_gettype()) + let wid = win_getid() + wincmd p + call assert_equal("quickfix", win_gettype(wid)) + cclose + lexpr '' + lopen + call assert_equal("loclist", win_gettype()) + let wid = win_getid() + wincmd p + call assert_equal("loclist", win_gettype(wid)) + lclose +endfunc + " vim: shiftwidth=2 sts=2 expandtab diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -756,6 +756,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 3254, +/**/ 3253, /**/ 3252,