diff options
Diffstat (limited to 'data/vim/patches/8.1.0720')
-rw-r--r-- | data/vim/patches/8.1.0720 | 499 |
1 files changed, 0 insertions, 499 deletions
diff --git a/data/vim/patches/8.1.0720 b/data/vim/patches/8.1.0720 deleted file mode 100644 index dae2d975d..000000000 --- a/data/vim/patches/8.1.0720 +++ /dev/null @@ -1,499 +0,0 @@ -To: vim_dev@googlegroups.com -Subject: Patch 8.1.0720 -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.0720 -Problem: Cannot easily change the current quickfx list index. -Solution: Add the "idx" argument to setqflist(). (Yegappan Lakshmanan, - closes #3701) -Files: runtime/doc/eval.txt, runtime/doc/quickfix.txt, src/quickfix.c, - src/testdir/test_quickfix.vim - - -*** ../vim-8.1.0719/runtime/doc/eval.txt 2019-01-11 13:42:31.676331183 +0100 ---- runtime/doc/eval.txt 2019-01-11 14:44:08.978341403 +0100 -*************** -*** 4862,4868 **** - id get information for the quickfix list with - |quickfix-ID|; zero means the id for the - current list or the list specified by "nr" -! idx index of the current entry in the list - items quickfix list entries - lines parse a list of lines using 'efm' and return - the resulting entries. Only a |List| type is ---- 4885,4893 ---- - id get information for the quickfix list with - |quickfix-ID|; zero means the id for the - current list or the list specified by "nr" -! idx index of the current entry in the quickfix -! list specified by 'id' or 'nr'. -! See |quickfix-index| - items quickfix list entries - lines parse a list of lines using 'efm' and return - the resulting entries. Only a |List| type is -*************** -*** 5032,5039 **** - Each List item is a Dictionary with the following entries: - bufnr number of buffer in the window - height window height (excluding winbar) -- winbar 1 if the window has a toolbar, 0 -- otherwise - loclist 1 if showing a location list - {only with the +quickfix feature} - quickfix 1 if quickfix or location list window ---- 5057,5062 ---- -*************** -*** 5044,5049 **** ---- 5067,5074 ---- - variables a reference to the dictionary with - window-local variables - width window width -+ winbar 1 if the window has a toolbar, 0 -+ otherwise - wincol leftmost screen column of the window, - col from |win_screenpos()| - winid |window-ID| -*************** -*** 7675,7690 **** - efm errorformat to use when parsing text from - "lines". If this is not present, then the - 'errorformat' option value is used. - id quickfix list identifier |quickfix-ID| - items list of quickfix entries. Same as the {list} - argument. - lines use 'errorformat' to parse a list of lines and - add the resulting entries to the quickfix list - {nr} or {id}. Only a |List| value is supported. - nr list number in the quickfix stack; zero - means the current quickfix list and "$" means -! the last quickfix list -! title quickfix list title text - Unsupported keys in {what} are ignored. - If the "nr" item is not present, then the current quickfix list - is modified. When creating a new quickfix list, "nr" can be ---- 7703,7724 ---- - efm errorformat to use when parsing text from - "lines". If this is not present, then the - 'errorformat' option value is used. -+ See |quickfix-parse| - id quickfix list identifier |quickfix-ID| -+ idx index of the current entry in the quickfix -+ list specified by 'id' or 'nr'. If set to '$', -+ then the last entry in the list is set as the -+ current entry. See |quickfix-index| - items list of quickfix entries. Same as the {list} - argument. - lines use 'errorformat' to parse a list of lines and - add the resulting entries to the quickfix list - {nr} or {id}. Only a |List| value is supported. -+ See |quickfix-parse| - nr list number in the quickfix stack; zero - means the current quickfix list and "$" means -! the last quickfix list. -! title quickfix list title text. See |quickfix-title| - Unsupported keys in {what} are ignored. - If the "nr" item is not present, then the current quickfix list - is modified. When creating a new quickfix list, "nr" can be -*** ../vim-8.1.0719/runtime/doc/quickfix.txt 2018-08-21 19:22:00.366591999 +0200 ---- runtime/doc/quickfix.txt 2019-01-11 14:44:08.978341403 +0100 -*************** -*** 46,52 **** - - *quickfix-ID* - Each quickfix list has a unique identifier called the quickfix ID and this -! number will not change within a Vim session. The getqflist() function can be - used to get the identifier assigned to a list. There is also a quickfix list - number which may change whenever more than ten lists are added to a quickfix - stack. ---- 46,52 ---- - - *quickfix-ID* - Each quickfix list has a unique identifier called the quickfix ID and this -! number will not change within a Vim session. The |getqflist()| function can be - used to get the identifier assigned to a list. There is also a quickfix list - number which may change whenever more than ten lists are added to a quickfix - stack. -*************** -*** 56,61 **** ---- 56,62 ---- - like `:lvimgrep`, `:lgrep`, `:lhelpgrep`, `:lmake`, etc., which create a - location list instead of a quickfix list as the corresponding `:vimgrep`, - `:grep`, `:helpgrep`, `:make` do. -+ *location-list-file-window* - A location list is associated with a window and each window can have a - separate location list. A location list can be associated with only one - window. The location list is independent of the quickfix list. -*************** -*** 68,74 **** - Every quickfix and location list has a read-only changedtick variable that - tracks the total number of changes made to the list. Every time the quickfix - list is modified, this count is incremented. This can be used to perform an -! action only when the list has changed. The getqflist() and getloclist() - functions can be used to query the current value of changedtick. You cannot - change the changedtick variable. - ---- 69,75 ---- - Every quickfix and location list has a read-only changedtick variable that - tracks the total number of changes made to the list. Every time the quickfix - list is modified, this count is incremented. This can be used to perform an -! action only when the list has changed. The |getqflist()| and |getloclist()| - functions can be used to query the current value of changedtick. You cannot - change the changedtick variable. - -*************** -*** 364,369 **** ---- 365,387 ---- - call setloclist(3, [], 'a', {'title' : 'Cmd output'}) - echo getloclist(3, {'title' : 1}) - < -+ *quickfix-index* -+ When you jump to a quickfix/location list entry using any of the quickfix -+ commands (e.g. |cc|, |cnext|, |cprev|, etc.), that entry becomes the currently -+ selected entry. The index of the currently selected entry in a -+ quickfix/location list can be obtained using the getqflist()/getloclist() -+ functions. Examples: > -+ echo getqflist({'idx' : 0}).idx -+ echo getqflist({'id' : qfid, 'idx' : 0}).idx -+ echo getloclist(2, {'idx' : 0}).idx -+ < -+ For a new quickfix list, the first entry is selected and the index is 1. Any -+ entry in any quickfix/location list can be set as the currently selected entry -+ using the setqflist() function. Examples: > -+ call setqflist([], 'a', {'idx' : 12}) -+ call setqflist([], 'a', {'id' : qfid, 'idx' : 7}) -+ call setloclist(1, [], 'a', {'idx' : 7}) -+ < - *quickfix-size* - You can get the number of entries (size) in a quickfix and a location list - using the |getqflist()| and |getloclist()| functions respectively. Examples: > -*************** -*** 602,608 **** - echo getloclist(2, {'winid' : 1}).winid - < - *getqflist-examples* -! The getqflist() and getloclist() functions can be used to get the various - attributes of a quickfix and location list respectively. Some examples for - using these functions are below: - > ---- 620,626 ---- - echo getloclist(2, {'winid' : 1}).winid - < - *getqflist-examples* -! The |getqflist()| and |getloclist()| functions can be used to get the various - attributes of a quickfix and location list respectively. Some examples for - using these functions are below: - > -*************** -*** 657,665 **** - - " get the location list window id of the third window - :echo getloclist(3, {'winid' : 0}).winid - < - *setqflist-examples* -! The setqflist() and setloclist() functions can be used to set the various - attributes of a quickfix and location list respectively. Some examples for - using these functions are below: - > ---- 675,686 ---- - - " get the location list window id of the third window - :echo getloclist(3, {'winid' : 0}).winid -+ -+ " get the file window id of a location list window (winnr: 4) -+ :echo getloclist(4, {'filewinid' : 0}).filewinid - < - *setqflist-examples* -! The |setqflist()| and |setloclist()| functions can be used to set the various - attributes of a quickfix and location list respectively. Some examples for - using these functions are below: - > -*************** -*** 671,676 **** ---- 692,700 ---- - " set the title of the current quickfix list - :call setqflist([], 'a', {'title' : 'Mytitle'}) - -+ " change the current entry in the list specified by an identifier -+ :call setqflist([], 'a', {'id' : qfid, 'idx' : 10}) -+ - " set the context of a quickfix list specified by an identifier - :call setqflist([], 'a', {'id' : qfid, 'context' : {'val' : 100}}) - -*************** -*** 898,904 **** - 'smartcase' is not used. - If {pattern} is empty (e.g. // is specified), the last - used search pattern is used. |last-pattern| -! - When a number is put before the command this is used - as the maximum number of matches to find. Use - ":1vimgrep pattern file" to find only the first. ---- 922,928 ---- - 'smartcase' is not used. - If {pattern} is empty (e.g. // is specified), the last - used search pattern is used. |last-pattern| -! :{count}vim[grep] ... - When a number is put before the command this is used - as the maximum number of matches to find. Use - ":1vimgrep pattern file" to find only the first. -*************** -*** 1551,1564 **** - recognized as a command separator. The backslash before each space is - required for the set command. - -! *cfilter-plugin* - If you have too many matching messages, you can use the cfilter plugin to - reduce the number of entries. Load the plugin with: > - packadd cfilter - - Then you can use these command: > -! :Cfilter[!] {pat} -! :Lfilter[!] {pat} - - :Cfilter creates a new quickfix list from entries matching {pat} in the - current quickfix list. Both the file name and the text of the entries are ---- 1575,1588 ---- - recognized as a command separator. The backslash before each space is - required for the set command. - -! *cfilter-plugin* *:Cfilter* *:Lfilter* - If you have too many matching messages, you can use the cfilter plugin to - reduce the number of entries. Load the plugin with: > - packadd cfilter - - Then you can use these command: > -! :Cfilter[!] /{pat}/ -! :Lfilter[!] /{pat}/ - - :Cfilter creates a new quickfix list from entries matching {pat} in the - current quickfix list. Both the file name and the text of the entries are -*** ../vim-8.1.0719/src/quickfix.c 2018-12-22 16:49:11.348536036 +0100 ---- src/quickfix.c 2019-01-11 14:44:08.978341403 +0100 -*************** -*** 3266,3278 **** - } - - /* -! * Jump to a quickfix line. -! * If dir == FORWARD go "errornr" valid entries forward. -! * If dir == BACKWARD go "errornr" valid entries backward. -! * If dir == FORWARD_FILE go "errornr" valid entries files backward. -! * If dir == BACKWARD_FILE go "errornr" valid entries files backward -! * else if "errornr" is zero, redisplay the same line -! * else go to entry "errornr". - */ - void - qf_jump(qf_info_T *qi, ---- 3266,3272 ---- - } - - /* -! * Jump to a quickfix line and try to use an existing window. - */ - void - qf_jump(qf_info_T *qi, -*************** -*** 3284,3290 **** - } - - /* -! * As qf_info(). - * If 'newwin' is TRUE, then open the file in a new window. - */ - void ---- 3278,3291 ---- - } - - /* -! * Jump to a quickfix line. -! * If dir == 0 go to entry "errornr". -! * If dir == FORWARD go "errornr" valid entries forward. -! * If dir == BACKWARD go "errornr" valid entries backward. -! * If dir == FORWARD_FILE go "errornr" valid entries files backward. -! * If dir == BACKWARD_FILE go "errornr" valid entries files backward -! * else if "errornr" is zero, redisplay the same line -! * If 'forceit' is TRUE, then can discard changes to the current buffer. - * If 'newwin' is TRUE, then open the file in a new window. - */ - void -*************** -*** 3687,3693 **** - - if (is_loclist_cmd(eap->cmdidx)) - qi = GET_LOC_LIST(curwin); -! if (qf_stack_empty(qi) || qf_list_empty(qi, qi->qf_curlist)) - MSG(_("No entries")); - else - for (i = 0; i < qi->qf_listcount; ++i) ---- 3688,3694 ---- - - if (is_loclist_cmd(eap->cmdidx)) - qi = GET_LOC_LIST(curwin); -! if (qf_stack_empty(qi)) - MSG(_("No entries")); - else - for (i = 0; i < qi->qf_listcount; ++i) -*************** -*** 6549,6554 **** ---- 6550,6599 ---- - } - - /* -+ * Set the current index in the specified quickfix list -+ */ -+ static int -+ qf_setprop_curidx(qf_info_T *qi, qf_list_T *qfl, dictitem_T *di) -+ { -+ int denote = FALSE; -+ int newidx; -+ int old_qfidx; -+ qfline_T *qf_ptr; -+ -+ // If the specified index is '$', then use the last entry -+ if (di->di_tv.v_type == VAR_STRING -+ && di->di_tv.vval.v_string != NULL -+ && STRCMP(di->di_tv.vval.v_string, "$") == 0) -+ newidx = qfl->qf_count; -+ else -+ { -+ // Otherwise use the specified index -+ newidx = tv_get_number_chk(&di->di_tv, &denote); -+ if (denote) -+ return FAIL; -+ } -+ -+ if (newidx < 1) // sanity check -+ return FAIL; -+ if (newidx > qfl->qf_count) -+ newidx = qfl->qf_count; -+ -+ old_qfidx = qfl->qf_index; -+ qf_ptr = get_nth_entry(qfl, newidx, &newidx); -+ if (qf_ptr == NULL) -+ return FAIL; -+ qfl->qf_ptr = qf_ptr; -+ qfl->qf_index = newidx; -+ -+ // If the current list is modified and it is displayed in the quickfix -+ // window, then Update it. -+ if (qi->qf_lists[qi->qf_curlist].qf_id == qfl->qf_id) -+ qf_win_pos_update(qi, old_qfidx); -+ -+ return OK; -+ } -+ -+ /* - * Set quickfix/location list properties (title, items, context). - * Also used to add items from parsing a list of lines. - * Used by the setqflist() and setloclist() Vim script functions. -*************** -*** 6585,6590 **** ---- 6630,6637 ---- - retval = qf_setprop_items_from_lines(qi, qf_idx, what, di, action); - if ((di = dict_find(what, (char_u *)"context", -1)) != NULL) - retval = qf_setprop_context(qfl, di); -+ if ((di = dict_find(what, (char_u *)"idx", -1)) != NULL) -+ retval = qf_setprop_curidx(qi, qfl, di); - - if (retval == OK) - qf_list_changed(qfl); -*** ../vim-8.1.0719/src/testdir/test_quickfix.vim 2018-12-22 16:49:11.348536036 +0100 ---- src/testdir/test_quickfix.vim 2019-01-11 14:44:08.978341403 +0100 -*************** -*** 1811,1816 **** ---- 1811,1823 ---- - call g:Xsetlist([], 'f') - let l = split(execute(a:cchar . 'hist'), "\n") - call assert_equal('No entries', l[0]) -+ -+ " An empty list should still show the stack history -+ call g:Xsetlist([]) -+ let res = split(execute(a:cchar . 'hist'), "\n") -+ call assert_equal('> error list 1 of 1; 0 ' . common, res[0]) -+ -+ call g:Xsetlist([], 'f') - endfunc - - func Test_history() -*************** -*** 2068,2073 **** ---- 2075,2130 ---- - call Xproperty_tests('l') - endfunc - -+ " Test for setting the current index in the location/quickfix list -+ func Xtest_setqfidx(cchar) -+ call s:setup_commands(a:cchar) -+ -+ Xgetexpr "F1:10:1:Line1\nF2:20:2:Line2\nF3:30:3:Line3" -+ Xgetexpr "F4:10:1:Line1\nF5:20:2:Line2\nF6:30:3:Line3" -+ Xgetexpr "F7:10:1:Line1\nF8:20:2:Line2\nF9:30:3:Line3" -+ -+ call g:Xsetlist([], 'a', {'nr' : 3, 'idx' : 2}) -+ call g:Xsetlist([], 'a', {'nr' : 2, 'idx' : 2}) -+ call g:Xsetlist([], 'a', {'nr' : 1, 'idx' : 3}) -+ Xolder 2 -+ Xopen -+ call assert_equal(3, line('.')) -+ Xnewer -+ call assert_equal(2, line('.')) -+ Xnewer -+ call assert_equal(2, line('.')) -+ " Update the current index with the quickfix window open -+ wincmd w -+ call g:Xsetlist([], 'a', {'nr' : 3, 'idx' : 3}) -+ Xopen -+ call assert_equal(3, line('.')) -+ Xclose -+ -+ " Set the current index to the last entry -+ call g:Xsetlist([], 'a', {'nr' : 1, 'idx' : '$'}) -+ call assert_equal(3, g:Xgetlist({'nr' : 1, 'idx' : 0}).idx) -+ " A large value should set the index to the last index -+ call g:Xsetlist([], 'a', {'nr' : 1, 'idx' : 1}) -+ call g:Xsetlist([], 'a', {'nr' : 1, 'idx' : 999}) -+ call assert_equal(3, g:Xgetlist({'nr' : 1, 'idx' : 0}).idx) -+ " Invalid index values -+ call g:Xsetlist([], 'a', {'nr' : 1, 'idx' : -1}) -+ call assert_equal(3, g:Xgetlist({'nr' : 1, 'idx' : 0}).idx) -+ call g:Xsetlist([], 'a', {'nr' : 1, 'idx' : 0}) -+ call assert_equal(3, g:Xgetlist({'nr' : 1, 'idx' : 0}).idx) -+ call g:Xsetlist([], 'a', {'nr' : 1, 'idx' : 'xx'}) -+ call assert_equal(3, g:Xgetlist({'nr' : 1, 'idx' : 0}).idx) -+ call assert_fails("call g:Xsetlist([], 'a', {'nr':1, 'idx':[]})", 'E745:') -+ -+ call g:Xsetlist([], 'f') -+ new | only -+ endfunc -+ -+ func Test_setqfidx() -+ call Xtest_setqfidx('c') -+ call Xtest_setqfidx('l') -+ endfunc -+ - " Tests for the QuickFixCmdPre/QuickFixCmdPost autocommands - func QfAutoCmdHandler(loc, cmd) - call add(g:acmds, a:loc . a:cmd) -*** ../vim-8.1.0719/src/version.c 2019-01-11 14:37:16.689248837 +0100 ---- src/version.c 2019-01-11 14:47:06.281089738 +0100 -*************** -*** 797,798 **** ---- 797,800 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 720, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -159. You get excited whenever discussing your hard drive. - - /// 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 /// |