diff options
Diffstat (limited to 'data/vim/patches/8.1.0345')
-rw-r--r-- | data/vim/patches/8.1.0345 | 286 |
1 files changed, 286 insertions, 0 deletions
diff --git a/data/vim/patches/8.1.0345 b/data/vim/patches/8.1.0345 new file mode 100644 index 000000000..70cae5c1d --- /dev/null +++ b/data/vim/patches/8.1.0345 @@ -0,0 +1,286 @@ +To: vim_dev@googlegroups.com +Subject: Patch 8.1.0345 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 8.1.0345 +Problem: Cannot get the window id associated with the location list. +Solution: Add the "filewinid" argument to getloclist(). (Yegappan + Lakshmanan, closes #3202) +Files: runtime/doc/eval.txt, src/quickfix.c, + src/testdir/test_quickfix.vim + + +*** ../vim-8.1.0344/runtime/doc/eval.txt 2018-08-21 21:09:02.598739663 +0200 +--- runtime/doc/eval.txt 2018-09-02 15:13:00.638419373 +0200 +*************** +*** 4721,4726 **** +--- 4729,4738 ---- + If the optional {what} dictionary argument is supplied, then + returns the items listed in {what} as a dictionary. Refer to + |getqflist()| for the supported items in {what}. ++ If {what} contains 'filewinid', then returns the id of the ++ window used to display files from the location list. This ++ field is applicable only when called from a location list ++ window. + + getmatches() *getmatches()* + Returns a |List| with all matches previously defined by +*** ../vim-8.1.0344/src/quickfix.c 2018-08-28 22:07:38.574120540 +0200 +--- src/quickfix.c 2018-09-02 15:13:00.638419373 +0200 +*************** +*** 5670,5676 **** + QF_GETLIST_IDX = 0x40, + QF_GETLIST_SIZE = 0x80, + QF_GETLIST_TICK = 0x100, +! QF_GETLIST_ALL = 0x1FF, + }; + + /* +--- 5670,5677 ---- + QF_GETLIST_IDX = 0x40, + QF_GETLIST_SIZE = 0x80, + QF_GETLIST_TICK = 0x100, +! QF_GETLIST_FILEWINID = 0x200, +! QF_GETLIST_ALL = 0x3FF, + }; + + /* +*************** +*** 5744,5755 **** + * Convert the keys in 'what' to quickfix list property flags. + */ + static int +! qf_getprop_keys2flags(dict_T *what) + { + int flags = QF_GETLIST_NONE; + + if (dict_find(what, (char_u *)"all", -1) != NULL) + flags |= QF_GETLIST_ALL; + + if (dict_find(what, (char_u *)"title", -1) != NULL) + flags |= QF_GETLIST_TITLE; +--- 5745,5761 ---- + * Convert the keys in 'what' to quickfix list property flags. + */ + static int +! qf_getprop_keys2flags(dict_T *what, int loclist) + { + int flags = QF_GETLIST_NONE; + + if (dict_find(what, (char_u *)"all", -1) != NULL) ++ { + flags |= QF_GETLIST_ALL; ++ if (!loclist) ++ // File window ID is applicable only to location list windows ++ flags &= ~ QF_GETLIST_FILEWINID; ++ } + + if (dict_find(what, (char_u *)"title", -1) != NULL) + flags |= QF_GETLIST_TITLE; +*************** +*** 5778,5783 **** +--- 5784,5792 ---- + if (dict_find(what, (char_u *)"changedtick", -1) != NULL) + flags |= QF_GETLIST_TICK; + ++ if (loclist && dict_find(what, (char_u *)"filewinid", -1) != NULL) ++ flags |= QF_GETLIST_FILEWINID; ++ + return flags; + } + +*************** +*** 5870,5875 **** +--- 5879,5886 ---- + status = dict_add_number(retdict, "size", 0); + if ((status == OK) && (flags & QF_GETLIST_TICK)) + status = dict_add_number(retdict, "changedtick", 0); ++ if ((status == OK) && (qi != &ql_info) && (flags & QF_GETLIST_FILEWINID)) ++ status = dict_add_number(retdict, "filewinid", 0); + + return status; + } +*************** +*** 5884,5889 **** +--- 5895,5920 ---- + } + + /* ++ * Returns the identifier of the window used to display files from a location ++ * list. If there is no associated window, then returns 0. Useful only when ++ * called from a location list window. ++ */ ++ static int ++ qf_getprop_filewinid(win_T *wp, qf_info_T *qi, dict_T *retdict) ++ { ++ int winid = 0; ++ ++ if (wp != NULL && IS_LL_WINDOW(wp)) ++ { ++ win_T *ll_wp = qf_find_win_with_loclist(qi); ++ if (ll_wp != NULL) ++ winid = ll_wp->w_id; ++ } ++ ++ return dict_add_number(retdict, "filewinid", winid); ++ } ++ ++ /* + * Return the quickfix list items/entries as 'items' in retdict + */ + static int +*************** +*** 5963,5969 **** + if (wp != NULL) + qi = GET_LOC_LIST(wp); + +! flags = qf_getprop_keys2flags(what); + + if (qi != NULL && qi->qf_listcount != 0) + qf_idx = qf_getprop_qfidx(qi, what); +--- 5994,6000 ---- + if (wp != NULL) + qi = GET_LOC_LIST(wp); + +! flags = qf_getprop_keys2flags(what, (wp != NULL)); + + if (qi != NULL && qi->qf_listcount != 0) + qf_idx = qf_getprop_qfidx(qi, what); +*************** +*** 5992,5997 **** +--- 6023,6030 ---- + if ((status == OK) && (flags & QF_GETLIST_TICK)) + status = dict_add_number(retdict, "changedtick", + qi->qf_lists[qf_idx].qf_changedtick); ++ if ((status == OK) && (wp != NULL) && (flags & QF_GETLIST_FILEWINID)) ++ status = qf_getprop_filewinid(wp, qi, retdict); + + return status; + } +*** ../vim-8.1.0344/src/testdir/test_quickfix.vim 2018-08-30 15:58:23.244944556 +0200 +--- src/testdir/test_quickfix.vim 2018-09-02 15:13:00.638419373 +0200 +*************** +*** 1973,1978 **** +--- 1973,1990 ---- + call g:Xsetlist([], 'r', {'items' : [{'filename' : 'F1', 'lnum' : 10, 'text' : 'L10'}]}) + call assert_equal('TestTitle', g:Xgetlist({'title' : 1}).title) + ++ " Test for getting id of window associated with a location list window ++ if a:cchar == 'l' ++ only ++ call assert_equal(0, g:Xgetlist({'all' : 1}).filewinid) ++ let wid = win_getid() ++ Xopen ++ call assert_equal(wid, g:Xgetlist({'filewinid' : 1}).filewinid) ++ wincmd w ++ call assert_equal(0, g:Xgetlist({'filewinid' : 1}).filewinid) ++ only ++ endif ++ + " The following used to crash Vim with address sanitizer + call g:Xsetlist([], 'f') + call g:Xsetlist([], 'a', {'items' : [{'filename':'F1', 'lnum':10}]}) +*************** +*** 3000,3006 **** + call assert_equal('', g:Xgetlist({'title' : 0}).title) + call assert_equal(0, g:Xgetlist({'winid' : 0}).winid) + call assert_equal(0, g:Xgetlist({'changedtick' : 0}).changedtick) +! call assert_equal({'context' : '', 'id' : 0, 'idx' : 0, 'items' : [], 'nr' : 0, 'size' : 0, 'title' : '', 'winid' : 0, 'changedtick': 0}, g:Xgetlist({'all' : 0})) + + " Quickfix window with empty stack + silent! Xopen +--- 3012,3028 ---- + call assert_equal('', g:Xgetlist({'title' : 0}).title) + call assert_equal(0, g:Xgetlist({'winid' : 0}).winid) + call assert_equal(0, g:Xgetlist({'changedtick' : 0}).changedtick) +! if a:cchar == 'c' +! call assert_equal({'context' : '', 'id' : 0, 'idx' : 0, +! \ 'items' : [], 'nr' : 0, 'size' : 0, +! \ 'title' : '', 'winid' : 0, 'changedtick': 0}, +! \ g:Xgetlist({'all' : 0})) +! else +! call assert_equal({'context' : '', 'id' : 0, 'idx' : 0, +! \ 'items' : [], 'nr' : 0, 'size' : 0, 'title' : '', +! \ 'winid' : 0, 'changedtick': 0, 'filewinid' : 0}, +! \ g:Xgetlist({'all' : 0})) +! endif + + " Quickfix window with empty stack + silent! Xopen +*************** +*** 3033,3039 **** + call assert_equal('', g:Xgetlist({'id' : qfid, 'title' : 0}).title) + call assert_equal(0, g:Xgetlist({'id' : qfid, 'winid' : 0}).winid) + call assert_equal(0, g:Xgetlist({'id' : qfid, 'changedtick' : 0}).changedtick) +! call assert_equal({'context' : '', 'id' : 0, 'idx' : 0, 'items' : [], 'nr' : 0, 'size' : 0, 'title' : '', 'winid' : 0, 'changedtick' : 0}, g:Xgetlist({'id' : qfid, 'all' : 0})) + + " Non-existing quickfix list number + call assert_equal('', g:Xgetlist({'nr' : 5, 'context' : 0}).context) +--- 3055,3070 ---- + call assert_equal('', g:Xgetlist({'id' : qfid, 'title' : 0}).title) + call assert_equal(0, g:Xgetlist({'id' : qfid, 'winid' : 0}).winid) + call assert_equal(0, g:Xgetlist({'id' : qfid, 'changedtick' : 0}).changedtick) +! if a:cchar == 'c' +! call assert_equal({'context' : '', 'id' : 0, 'idx' : 0, 'items' : [], +! \ 'nr' : 0, 'size' : 0, 'title' : '', 'winid' : 0, +! \ 'changedtick' : 0}, g:Xgetlist({'id' : qfid, 'all' : 0})) +! else +! call assert_equal({'context' : '', 'id' : 0, 'idx' : 0, 'items' : [], +! \ 'nr' : 0, 'size' : 0, 'title' : '', 'winid' : 0, +! \ 'changedtick' : 0, 'filewinid' : 0}, +! \ g:Xgetlist({'id' : qfid, 'all' : 0})) +! endif + + " Non-existing quickfix list number + call assert_equal('', g:Xgetlist({'nr' : 5, 'context' : 0}).context) +*************** +*** 3045,3051 **** + call assert_equal('', g:Xgetlist({'nr' : 5, 'title' : 0}).title) + call assert_equal(0, g:Xgetlist({'nr' : 5, 'winid' : 0}).winid) + call assert_equal(0, g:Xgetlist({'nr' : 5, 'changedtick' : 0}).changedtick) +! call assert_equal({'context' : '', 'id' : 0, 'idx' : 0, 'items' : [], 'nr' : 0, 'size' : 0, 'title' : '', 'winid' : 0, 'changedtick' : 0}, g:Xgetlist({'nr' : 5, 'all' : 0})) + endfunc + + func Test_getqflist() +--- 3076,3091 ---- + call assert_equal('', g:Xgetlist({'nr' : 5, 'title' : 0}).title) + call assert_equal(0, g:Xgetlist({'nr' : 5, 'winid' : 0}).winid) + call assert_equal(0, g:Xgetlist({'nr' : 5, 'changedtick' : 0}).changedtick) +! if a:cchar == 'c' +! call assert_equal({'context' : '', 'id' : 0, 'idx' : 0, 'items' : [], +! \ 'nr' : 0, 'size' : 0, 'title' : '', 'winid' : 0, +! \ 'changedtick' : 0}, g:Xgetlist({'nr' : 5, 'all' : 0})) +! else +! call assert_equal({'context' : '', 'id' : 0, 'idx' : 0, 'items' : [], +! \ 'nr' : 0, 'size' : 0, 'title' : '', 'winid' : 0, +! \ 'changedtick' : 0, 'filewinid' : 0}, +! \ g:Xgetlist({'nr' : 5, 'all' : 0})) +! endif + endfunc + + func Test_getqflist() +*** ../vim-8.1.0344/src/version.c 2018-09-02 15:07:21.977655529 +0200 +--- src/version.c 2018-09-02 15:14:57.573305935 +0200 +*************** +*** 796,797 **** +--- 796,799 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 345, + /**/ + +-- +The Feynman problem solving Algorithm: + 1) Write down the problem + 2) Think real hard + 3) Write down the answer + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// |