summaryrefslogtreecommitdiff
path: root/data/vim/patches/8.1.1261
diff options
context:
space:
mode:
Diffstat (limited to 'data/vim/patches/8.1.1261')
-rw-r--r--data/vim/patches/8.1.12611036
1 files changed, 0 insertions, 1036 deletions
diff --git a/data/vim/patches/8.1.1261 b/data/vim/patches/8.1.1261
deleted file mode 100644
index 5d7cca85c..000000000
--- a/data/vim/patches/8.1.1261
+++ /dev/null
@@ -1,1036 +0,0 @@
-To: vim_dev@googlegroups.com
-Subject: Patch 8.1.1261
-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.1261
-Problem: No error for quickfix commands with negative range.
-Solution: Add ADDR_UNSIGNED and use it for quickfix commands. Make
- assert_fails() show the command if the error doesn't match.
-Files: src/ex_cmds.h, src/ex_docmd.c, src/testdir/test_quickfix.vim,
- runtime/doc/quickfix.txt, src/eval.c, src/quickfix.c,
- src/proto/quickfix.pro, src/ex_cmds2.c
-
-
-*** ../vim-8.1.1260/src/ex_cmds.h 2019-05-03 21:56:31.363540578 +0200
---- src/ex_cmds.h 2019-05-04 14:45:32.177702667 +0200
-***************
-*** 73,80 ****
- ADDR_BUFFERS, // buffer number
- ADDR_TABS, // tab page number
- ADDR_TABS_RELATIVE, // Tab page that only relative
- ADDR_QUICKFIX, // quickfix list entry number
-! ADDR_OTHER, // something else
- ADDR_NONE // no range used
- } cmd_addr_T;
- #endif
---- 73,82 ----
- ADDR_BUFFERS, // buffer number
- ADDR_TABS, // tab page number
- ADDR_TABS_RELATIVE, // Tab page that only relative
-+ ADDR_QUICKFIX_VALID, // quickfix list valid entry number
- ADDR_QUICKFIX, // quickfix list entry number
-! ADDR_UNSIGNED, // positive count or zero, defaults to 1
-! ADDR_OTHER, // something else, use line number for '$', '%', etc.
- ADDR_NONE // no range used
- } cmd_addr_T;
- #endif
-***************
-*** 92,98 ****
- * Not supported commands are included to avoid ambiguities.
- */
- #ifdef EX
-! # undef EX /* just in case */
- #endif
- #ifdef DO_DECLARE_EXCMD
- # define EX(a, b, c, d, e) {(char_u *)b, c, (long_u)(d), e}
---- 94,100 ----
- * Not supported commands are included to avoid ambiguities.
- */
- #ifdef EX
-! # undef EX // just in case
- #endif
- #ifdef DO_DECLARE_EXCMD
- # define EX(a, b, c, d, e) {(char_u *)b, c, (long_u)(d), e}
-***************
-*** 242,251 ****
- ADDR_LINES),
- EX(CMD_cNext, "cNext", ex_cnext,
- RANGE|COUNT|TRLBAR|BANG,
-! ADDR_OTHER),
- EX(CMD_cNfile, "cNfile", ex_cnext,
- RANGE|COUNT|TRLBAR|BANG,
-! ADDR_OTHER),
- EX(CMD_cabbrev, "cabbrev", ex_abbreviate,
- EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
- ADDR_NONE),
---- 244,253 ----
- ADDR_LINES),
- EX(CMD_cNext, "cNext", ex_cnext,
- RANGE|COUNT|TRLBAR|BANG,
-! ADDR_UNSIGNED),
- EX(CMD_cNfile, "cNfile", ex_cnext,
- RANGE|COUNT|TRLBAR|BANG,
-! ADDR_UNSIGNED),
- EX(CMD_cabbrev, "cabbrev", ex_abbreviate,
- EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
- ADDR_NONE),
-***************
-*** 253,260 ****
- EXTRA|TRLBAR|CMDWIN,
- ADDR_NONE),
- EX(CMD_cabove, "cabove", ex_cbelow,
-! RANGE|TRLBAR,
-! ADDR_OTHER),
- EX(CMD_caddbuffer, "caddbuffer", ex_cbuffer,
- RANGE|WORD1|TRLBAR,
- ADDR_OTHER),
---- 255,262 ----
- EXTRA|TRLBAR|CMDWIN,
- ADDR_NONE),
- EX(CMD_cabove, "cabove", ex_cbelow,
-! RANGE|COUNT|TRLBAR,
-! ADDR_UNSIGNED),
- EX(CMD_caddbuffer, "caddbuffer", ex_cbuffer,
- RANGE|WORD1|TRLBAR,
- ADDR_OTHER),
-***************
-*** 274,287 ****
- BANG|RANGE|WORD1|TRLBAR,
- ADDR_OTHER),
- EX(CMD_cbelow, "cbelow", ex_cbelow,
-! RANGE|TRLBAR,
-! ADDR_OTHER),
- EX(CMD_cbottom, "cbottom", ex_cbottom,
- TRLBAR,
- ADDR_NONE),
- EX(CMD_cc, "cc", ex_cc,
- RANGE|COUNT|TRLBAR|BANG,
-! ADDR_OTHER),
- EX(CMD_cclose, "cclose", ex_cclose,
- TRLBAR,
- ADDR_NONE),
---- 276,289 ----
- BANG|RANGE|WORD1|TRLBAR,
- ADDR_OTHER),
- EX(CMD_cbelow, "cbelow", ex_cbelow,
-! RANGE|COUNT|TRLBAR,
-! ADDR_UNSIGNED),
- EX(CMD_cbottom, "cbottom", ex_cbottom,
- TRLBAR,
- ADDR_NONE),
- EX(CMD_cc, "cc", ex_cc,
- RANGE|COUNT|TRLBAR|BANG,
-! ADDR_QUICKFIX),
- EX(CMD_cclose, "cclose", ex_cclose,
- TRLBAR,
- ADDR_NONE),
-***************
-*** 290,296 ****
- ADDR_NONE),
- EX(CMD_cdo, "cdo", ex_listdo,
- BANG|NEEDARG|EXTRA|NOTRLCOM|RANGE|DFLALL,
-! ADDR_QUICKFIX),
- EX(CMD_center, "center", ex_align,
- TRLBAR|RANGE|WHOLEFOLD|EXTRA|CMDWIN|MODIFY,
- ADDR_LINES),
---- 292,298 ----
- ADDR_NONE),
- EX(CMD_cdo, "cdo", ex_listdo,
- BANG|NEEDARG|EXTRA|NOTRLCOM|RANGE|DFLALL,
-! ADDR_QUICKFIX_VALID),
- EX(CMD_center, "center", ex_align,
- TRLBAR|RANGE|WHOLEFOLD|EXTRA|CMDWIN|MODIFY,
- ADDR_LINES),
-***************
-*** 302,311 ****
- ADDR_NONE),
- EX(CMD_cfdo, "cfdo", ex_listdo,
- BANG|NEEDARG|EXTRA|NOTRLCOM|RANGE|DFLALL,
-! ADDR_QUICKFIX),
- EX(CMD_cfirst, "cfirst", ex_cc,
- RANGE|COUNT|TRLBAR|BANG,
-! ADDR_OTHER),
- EX(CMD_cgetfile, "cgetfile", ex_cfile,
- TRLBAR|FILE1,
- ADDR_NONE),
---- 304,313 ----
- ADDR_NONE),
- EX(CMD_cfdo, "cfdo", ex_listdo,
- BANG|NEEDARG|EXTRA|NOTRLCOM|RANGE|DFLALL,
-! ADDR_QUICKFIX_VALID),
- EX(CMD_cfirst, "cfirst", ex_cc,
- RANGE|COUNT|TRLBAR|BANG,
-! ADDR_UNSIGNED),
- EX(CMD_cgetfile, "cgetfile", ex_cfile,
- TRLBAR|FILE1,
- ADDR_NONE),
-***************
-*** 335,341 ****
- ADDR_NONE),
- EX(CMD_clast, "clast", ex_cc,
- RANGE|COUNT|TRLBAR|BANG,
-! ADDR_OTHER),
- EX(CMD_close, "close", ex_close,
- BANG|RANGE|COUNT|TRLBAR|CMDWIN,
- ADDR_WINDOWS),
---- 337,343 ----
- ADDR_NONE),
- EX(CMD_clast, "clast", ex_cc,
- RANGE|COUNT|TRLBAR|BANG,
-! ADDR_UNSIGNED),
- EX(CMD_close, "close", ex_close,
- BANG|RANGE|COUNT|TRLBAR|CMDWIN,
- ADDR_WINDOWS),
-***************
-*** 353,365 ****
- ADDR_OTHER),
- EX(CMD_cnext, "cnext", ex_cnext,
- RANGE|COUNT|TRLBAR|BANG,
-! ADDR_OTHER),
- EX(CMD_cnewer, "cnewer", qf_age,
- RANGE|COUNT|TRLBAR,
-! ADDR_OTHER),
- EX(CMD_cnfile, "cnfile", ex_cnext,
- RANGE|COUNT|TRLBAR|BANG,
-! ADDR_OTHER),
- EX(CMD_cnoremap, "cnoremap", ex_map,
- EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
- ADDR_NONE),
---- 355,367 ----
- ADDR_OTHER),
- EX(CMD_cnext, "cnext", ex_cnext,
- RANGE|COUNT|TRLBAR|BANG,
-! ADDR_UNSIGNED),
- EX(CMD_cnewer, "cnewer", qf_age,
- RANGE|COUNT|TRLBAR,
-! ADDR_UNSIGNED),
- EX(CMD_cnfile, "cnfile", ex_cnext,
- RANGE|COUNT|TRLBAR|BANG,
-! ADDR_UNSIGNED),
- EX(CMD_cnoremap, "cnoremap", ex_map,
- EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
- ADDR_NONE),
-***************
-*** 374,380 ****
- ADDR_LINES),
- EX(CMD_colder, "colder", qf_age,
- RANGE|COUNT|TRLBAR,
-! ADDR_OTHER),
- EX(CMD_colorscheme, "colorscheme", ex_colorscheme,
- WORD1|TRLBAR|CMDWIN,
- ADDR_NONE),
---- 376,382 ----
- ADDR_LINES),
- EX(CMD_colder, "colder", qf_age,
- RANGE|COUNT|TRLBAR,
-! ADDR_UNSIGNED),
- EX(CMD_colorscheme, "colorscheme", ex_colorscheme,
- WORD1|TRLBAR|CMDWIN,
- ADDR_NONE),
-***************
-*** 398,404 ****
- ADDR_OTHER),
- EX(CMD_cprevious, "cprevious", ex_cnext,
- RANGE|COUNT|TRLBAR|BANG,
-! ADDR_OTHER),
- EX(CMD_cpfile, "cpfile", ex_cnext,
- RANGE|COUNT|TRLBAR|BANG,
- ADDR_OTHER),
---- 400,406 ----
- ADDR_OTHER),
- EX(CMD_cprevious, "cprevious", ex_cnext,
- RANGE|COUNT|TRLBAR|BANG,
-! ADDR_UNSIGNED),
- EX(CMD_cpfile, "cpfile", ex_cnext,
- RANGE|COUNT|TRLBAR|BANG,
- ADDR_OTHER),
-***************
-*** 407,413 ****
- ADDR_NONE),
- EX(CMD_crewind, "crewind", ex_cc,
- RANGE|COUNT|TRLBAR|BANG,
-! ADDR_OTHER),
- EX(CMD_cscope, "cscope", ex_cscope,
- EXTRA|NOTRLCOM|XFILE,
- ADDR_NONE),
---- 409,415 ----
- ADDR_NONE),
- EX(CMD_crewind, "crewind", ex_cc,
- RANGE|COUNT|TRLBAR|BANG,
-! ADDR_UNSIGNED),
- EX(CMD_cscope, "cscope", ex_cscope,
- EXTRA|NOTRLCOM|XFILE,
- ADDR_NONE),
-***************
-*** 725,740 ****
- ADDR_LINES),
- EX(CMD_lNext, "lNext", ex_cnext,
- RANGE|COUNT|TRLBAR|BANG,
-! ADDR_OTHER),
- EX(CMD_lNfile, "lNfile", ex_cnext,
- RANGE|COUNT|TRLBAR|BANG,
-! ADDR_OTHER),
- EX(CMD_last, "last", ex_last,
- EXTRA|BANG|EDITCMD|ARGOPT|TRLBAR,
- ADDR_NONE),
- EX(CMD_labove, "labove", ex_cbelow,
-! RANGE|TRLBAR,
-! ADDR_OTHER),
- EX(CMD_language, "language", ex_language,
- EXTRA|TRLBAR|CMDWIN,
- ADDR_NONE),
---- 727,742 ----
- ADDR_LINES),
- EX(CMD_lNext, "lNext", ex_cnext,
- RANGE|COUNT|TRLBAR|BANG,
-! ADDR_UNSIGNED),
- EX(CMD_lNfile, "lNfile", ex_cnext,
- RANGE|COUNT|TRLBAR|BANG,
-! ADDR_UNSIGNED),
- EX(CMD_last, "last", ex_last,
- EXTRA|BANG|EDITCMD|ARGOPT|TRLBAR,
- ADDR_NONE),
- EX(CMD_labove, "labove", ex_cbelow,
-! RANGE|COUNT|TRLBAR,
-! ADDR_UNSIGNED),
- EX(CMD_language, "language", ex_language,
- EXTRA|TRLBAR|CMDWIN,
- ADDR_NONE),
-***************
-*** 754,761 ****
- BANG|RANGE|WORD1|TRLBAR,
- ADDR_OTHER),
- EX(CMD_lbelow, "lbelow", ex_cbelow,
-! RANGE|TRLBAR,
-! ADDR_OTHER),
- EX(CMD_lbottom, "lbottom", ex_cbottom,
- TRLBAR,
- ADDR_NONE),
---- 756,763 ----
- BANG|RANGE|WORD1|TRLBAR,
- ADDR_OTHER),
- EX(CMD_lbelow, "lbelow", ex_cbelow,
-! RANGE|COUNT|TRLBAR,
-! ADDR_UNSIGNED),
- EX(CMD_lbottom, "lbottom", ex_cbottom,
- TRLBAR,
- ADDR_NONE),
-***************
-*** 773,779 ****
- ADDR_NONE),
- EX(CMD_ldo, "ldo", ex_listdo,
- BANG|NEEDARG|EXTRA|NOTRLCOM|RANGE|DFLALL,
-! ADDR_QUICKFIX),
- EX(CMD_left, "left", ex_align,
- TRLBAR|RANGE|WHOLEFOLD|EXTRA|CMDWIN|MODIFY,
- ADDR_LINES),
---- 775,781 ----
- ADDR_NONE),
- EX(CMD_ldo, "ldo", ex_listdo,
- BANG|NEEDARG|EXTRA|NOTRLCOM|RANGE|DFLALL,
-! ADDR_QUICKFIX_VALID),
- EX(CMD_left, "left", ex_align,
- TRLBAR|RANGE|WHOLEFOLD|EXTRA|CMDWIN|MODIFY,
- ADDR_LINES),
-***************
-*** 791,800 ****
- ADDR_NONE),
- EX(CMD_lfdo, "lfdo", ex_listdo,
- BANG|NEEDARG|EXTRA|NOTRLCOM|RANGE|DFLALL,
-! ADDR_QUICKFIX),
- EX(CMD_lfirst, "lfirst", ex_cc,
- RANGE|COUNT|TRLBAR|BANG,
-! ADDR_OTHER),
- EX(CMD_lgetfile, "lgetfile", ex_cfile,
- TRLBAR|FILE1,
- ADDR_NONE),
---- 793,802 ----
- ADDR_NONE),
- EX(CMD_lfdo, "lfdo", ex_listdo,
- BANG|NEEDARG|EXTRA|NOTRLCOM|RANGE|DFLALL,
-! ADDR_QUICKFIX_VALID),
- EX(CMD_lfirst, "lfirst", ex_cc,
- RANGE|COUNT|TRLBAR|BANG,
-! ADDR_UNSIGNED),
- EX(CMD_lgetfile, "lgetfile", ex_cfile,
- TRLBAR|FILE1,
- ADDR_NONE),
-***************
-*** 818,827 ****
- ADDR_NONE),
- EX(CMD_ll, "ll", ex_cc,
- RANGE|COUNT|TRLBAR|BANG,
-! ADDR_OTHER),
- EX(CMD_llast, "llast", ex_cc,
- RANGE|COUNT|TRLBAR|BANG,
-! ADDR_OTHER),
- EX(CMD_llist, "llist", qf_list,
- BANG|EXTRA|TRLBAR|CMDWIN,
- ADDR_NONE),
---- 820,829 ----
- ADDR_NONE),
- EX(CMD_ll, "ll", ex_cc,
- RANGE|COUNT|TRLBAR|BANG,
-! ADDR_QUICKFIX),
- EX(CMD_llast, "llast", ex_cc,
- RANGE|COUNT|TRLBAR|BANG,
-! ADDR_UNSIGNED),
- EX(CMD_llist, "llist", qf_list,
- BANG|EXTRA|TRLBAR|CMDWIN,
- ADDR_NONE),
-***************
-*** 839,851 ****
- ADDR_NONE),
- EX(CMD_lnext, "lnext", ex_cnext,
- RANGE|COUNT|TRLBAR|BANG,
-! ADDR_OTHER),
- EX(CMD_lnewer, "lnewer", qf_age,
- RANGE|COUNT|TRLBAR,
-! ADDR_OTHER),
- EX(CMD_lnfile, "lnfile", ex_cnext,
- RANGE|COUNT|TRLBAR|BANG,
-! ADDR_OTHER),
- EX(CMD_loadview, "loadview", ex_loadview,
- FILE1|TRLBAR,
- ADDR_NONE),
---- 841,853 ----
- ADDR_NONE),
- EX(CMD_lnext, "lnext", ex_cnext,
- RANGE|COUNT|TRLBAR|BANG,
-! ADDR_UNSIGNED),
- EX(CMD_lnewer, "lnewer", qf_age,
- RANGE|COUNT|TRLBAR,
-! ADDR_UNSIGNED),
- EX(CMD_lnfile, "lnfile", ex_cnext,
- RANGE|COUNT|TRLBAR|BANG,
-! ADDR_UNSIGNED),
- EX(CMD_loadview, "loadview", ex_loadview,
- FILE1|TRLBAR,
- ADDR_NONE),
-***************
-*** 860,878 ****
- ADDR_NONE),
- EX(CMD_lolder, "lolder", qf_age,
- RANGE|COUNT|TRLBAR,
-! ADDR_OTHER),
- EX(CMD_lopen, "lopen", ex_copen,
- RANGE|COUNT|TRLBAR,
- ADDR_OTHER),
- EX(CMD_lprevious, "lprevious", ex_cnext,
- RANGE|COUNT|TRLBAR|BANG,
-! ADDR_OTHER),
- EX(CMD_lpfile, "lpfile", ex_cnext,
- RANGE|COUNT|TRLBAR|BANG,
- ADDR_OTHER),
- EX(CMD_lrewind, "lrewind", ex_cc,
- RANGE|COUNT|TRLBAR|BANG,
-! ADDR_OTHER),
- EX(CMD_ltag, "ltag", ex_tag,
- TRLBAR|BANG|WORD1,
- ADDR_NONE),
---- 862,880 ----
- ADDR_NONE),
- EX(CMD_lolder, "lolder", qf_age,
- RANGE|COUNT|TRLBAR,
-! ADDR_UNSIGNED),
- EX(CMD_lopen, "lopen", ex_copen,
- RANGE|COUNT|TRLBAR,
- ADDR_OTHER),
- EX(CMD_lprevious, "lprevious", ex_cnext,
- RANGE|COUNT|TRLBAR|BANG,
-! ADDR_UNSIGNED),
- EX(CMD_lpfile, "lpfile", ex_cnext,
- RANGE|COUNT|TRLBAR|BANG,
- ADDR_OTHER),
- EX(CMD_lrewind, "lrewind", ex_cc,
- RANGE|COUNT|TRLBAR|BANG,
-! ADDR_UNSIGNED),
- EX(CMD_ltag, "ltag", ex_tag,
- TRLBAR|BANG|WORD1,
- ADDR_NONE),
-*** ../vim-8.1.1260/src/ex_docmd.c 2019-05-03 21:56:31.363540578 +0200
---- src/ex_docmd.c 2019-05-04 14:56:42.118125419 +0200
-***************
-*** 1786,1792 ****
- * is equal to the lower.
- */
-
-! /* ea.addr_type for user commands is set by find_ucmd */
- if (!IS_USER_CMDIDX(ea.cmdidx))
- {
- if (ea.cmdidx != CMD_SIZE)
---- 1786,1792 ----
- * is equal to the lower.
- */
-
-! // ea.addr_type for user commands is set by find_ucmd
- if (!IS_USER_CMDIDX(ea.cmdidx))
- {
- if (ea.cmdidx != CMD_SIZE)
-***************
-*** 1794,1802 ****
- else
- ea.addr_type = ADDR_LINES;
-
-! /* :wincmd range depends on the argument. */
- if (ea.cmdidx == CMD_wincmd && p != NULL)
- get_wincmd_addr_type(skipwhite(p), &ea);
- }
-
- ea.cmd = cmd;
---- 1794,1807 ----
- else
- ea.addr_type = ADDR_LINES;
-
-! // :wincmd range depends on the argument.
- if (ea.cmdidx == CMD_wincmd && p != NULL)
- get_wincmd_addr_type(skipwhite(p), &ea);
-+ #ifdef FEAT_QUICKFIX
-+ // :.cc in quickfix window uses line number
-+ if ((ea.cmdidx == CMD_cc || ea.cmdidx == CMD_ll) && bt_quickfix(curbuf))
-+ ea.addr_type = ADDR_OTHER;
-+ #endif
- }
-
- ea.cmd = cmd;
-***************
-*** 2229,2243 ****
- else
- ea.line2 = ARGCOUNT;
- break;
-! case ADDR_QUICKFIX:
- #ifdef FEAT_QUICKFIX
-! ea.line2 = qf_get_size(&ea);
- if (ea.line2 == 0)
- ea.line2 = 1;
- #endif
- break;
- case ADDR_NONE:
-! iemsg(_("INTERNAL: Cannot use DFLALL with ADDR_NONE"));
- break;
- }
- }
---- 2234,2250 ----
- else
- ea.line2 = ARGCOUNT;
- break;
-! case ADDR_QUICKFIX_VALID:
- #ifdef FEAT_QUICKFIX
-! ea.line2 = qf_get_valid_size(&ea);
- if (ea.line2 == 0)
- ea.line2 = 1;
- #endif
- break;
- case ADDR_NONE:
-! case ADDR_UNSIGNED:
-! case ADDR_QUICKFIX:
-! iemsg(_("INTERNAL: Cannot use DFLALL with ADDR_NONE, ADDR_UNSIGNED or ADDR_QUICKFIX"));
- break;
- }
- }
-***************
-*** 2905,2914 ****
---- 2912,2927 ----
- eap->line2 = CURRENT_TAB_NR;
- break;
- case ADDR_TABS_RELATIVE:
-+ case ADDR_UNSIGNED:
- eap->line2 = 1;
- break;
- case ADDR_QUICKFIX:
- #ifdef FEAT_QUICKFIX
-+ eap->line2 = qf_get_cur_idx(eap);
-+ #endif
-+ break;
-+ case ADDR_QUICKFIX_VALID:
-+ #ifdef FEAT_QUICKFIX
- eap->line2 = qf_get_cur_valid_idx(eap);
- #endif
- break;
-***************
-*** 2969,2974 ****
---- 2982,2989 ----
- }
- break;
- case ADDR_TABS_RELATIVE:
-+ case ADDR_UNSIGNED:
-+ case ADDR_QUICKFIX:
- *errormsg = _(e_invrange);
- return FAIL;
- case ADDR_ARGUMENTS:
-***************
-*** 2980,2989 ****
- eap->line2 = ARGCOUNT;
- }
- break;
-! case ADDR_QUICKFIX:
- #ifdef FEAT_QUICKFIX
- eap->line1 = 1;
-! eap->line2 = qf_get_size(eap);
- if (eap->line2 == 0)
- eap->line2 = 1;
- #endif
---- 2995,3004 ----
- eap->line2 = ARGCOUNT;
- }
- break;
-! case ADDR_QUICKFIX_VALID:
- #ifdef FEAT_QUICKFIX
- eap->line1 = 1;
-! eap->line2 = qf_get_valid_size(eap);
- if (eap->line2 == 0)
- eap->line2 = 1;
- #endif
-***************
-*** 3102,3108 ****
- /*
- * Find an Ex command by its name, either built-in or user.
- * Start of the name can be found at eap->cmd.
-! * Returns pointer to char after the command name.
- * "full" is set to TRUE if the whole command name matched.
- * Returns NULL for an ambiguous user command.
- */
---- 3117,3123 ----
- /*
- * Find an Ex command by its name, either built-in or user.
- * Start of the name can be found at eap->cmd.
-! * Sets eap->cmdidx and returns a pointer to char after the command name.
- * "full" is set to TRUE if the whole command name matched.
- * Returns NULL for an ambiguous user command.
- */
-***************
-*** 4268,4279 ****
---- 4283,4300 ----
- break;
- case ADDR_TABS_RELATIVE:
- case ADDR_NONE:
-+ case ADDR_UNSIGNED:
- emsg(_(e_invrange));
- cmd = NULL;
- goto error;
- break;
- case ADDR_QUICKFIX:
- #ifdef FEAT_QUICKFIX
-+ lnum = qf_get_cur_idx(eap);
-+ #endif
-+ break;
-+ case ADDR_QUICKFIX_VALID:
-+ #ifdef FEAT_QUICKFIX
- lnum = qf_get_cur_valid_idx(eap);
- #endif
- break;
-***************
-*** 4312,4317 ****
---- 4333,4339 ----
- break;
- case ADDR_TABS_RELATIVE:
- case ADDR_NONE:
-+ case ADDR_UNSIGNED:
- emsg(_(e_invrange));
- cmd = NULL;
- goto error;
-***************
-*** 4323,4328 ****
---- 4345,4357 ----
- lnum = 1;
- #endif
- break;
-+ case ADDR_QUICKFIX_VALID:
-+ #ifdef FEAT_QUICKFIX
-+ lnum = qf_get_valid_size(eap);
-+ if (lnum == 0)
-+ lnum = 1;
-+ #endif
-+ break;
- }
- break;
-
-***************
-*** 4503,4512 ****
---- 4532,4548 ----
- break;
- case ADDR_QUICKFIX:
- #ifdef FEAT_QUICKFIX
-+ lnum = qf_get_cur_idx(eap);
-+ #endif
-+ break;
-+ case ADDR_QUICKFIX_VALID:
-+ #ifdef FEAT_QUICKFIX
- lnum = qf_get_cur_valid_idx(eap);
- #endif
- break;
- case ADDR_NONE:
-+ case ADDR_UNSIGNED:
-+ lnum = 0;
- break;
- }
- }
-***************
-*** 4603,4608 ****
---- 4639,4645 ----
- invalid_range(exarg_T *eap)
- {
- buf_T *buf;
-+
- if ( eap->line1 < 0
- || eap->line2 < 0
- || eap->line1 > eap->line2)
-***************
-*** 4664,4673 ****
- break;
- case ADDR_QUICKFIX:
- #ifdef FEAT_QUICKFIX
-! if (eap->line2 != 1 && eap->line2 > qf_get_size(eap))
- return _(e_invrange);
- #endif
- break;
- case ADDR_NONE:
- // Will give an error elsewhere.
- break;
---- 4701,4722 ----
- break;
- case ADDR_QUICKFIX:
- #ifdef FEAT_QUICKFIX
-! // No error for value that is too big, will use the last entry.
-! if (eap->line2 <= 0)
- return _(e_invrange);
- #endif
- break;
-+ case ADDR_QUICKFIX_VALID:
-+ #ifdef FEAT_QUICKFIX
-+ if ((eap->line2 != 1 && eap->line2 > qf_get_valid_size(eap))
-+ || eap->line2 < 0)
-+ return _(e_invrange);
-+ #endif
-+ break;
-+ case ADDR_UNSIGNED:
-+ if (eap->line2 < 0)
-+ return _(e_invrange);
-+ break;
- case ADDR_NONE:
- // Will give an error elsewhere.
- break;
-*** ../vim-8.1.1260/src/testdir/test_quickfix.vim 2019-05-03 21:56:31.367540560 +0200
---- src/testdir/test_quickfix.vim 2019-05-04 14:33:20.713745971 +0200
-***************
-*** 28,34 ****
- command! -count -nargs=* -bang Xprev <mods><count>cprev<bang> <args>
- command! -nargs=* -bang Xfirst <mods>cfirst<bang> <args>
- command! -nargs=* -bang Xlast <mods>clast<bang> <args>
-! command! -nargs=* -bang -range Xnfile <mods><count>cnfile<bang> <args>
- command! -nargs=* -bang Xpfile <mods>cpfile<bang> <args>
- command! -nargs=* Xexpr <mods>cexpr <args>
- command! -range -nargs=* Xvimgrep <mods><count>vimgrep <args>
---- 28,34 ----
- command! -count -nargs=* -bang Xprev <mods><count>cprev<bang> <args>
- command! -nargs=* -bang Xfirst <mods>cfirst<bang> <args>
- command! -nargs=* -bang Xlast <mods>clast<bang> <args>
-! command! -count -nargs=* -bang Xnfile <mods><count>cnfile<bang> <args>
- command! -nargs=* -bang Xpfile <mods>cpfile<bang> <args>
- command! -nargs=* Xexpr <mods>cexpr <args>
- command! -range -nargs=* Xvimgrep <mods><count>vimgrep <args>
-***************
-*** 63,69 ****
- command! -count -nargs=* -bang Xprev <mods><count>lprev<bang> <args>
- command! -nargs=* -bang Xfirst <mods>lfirst<bang> <args>
- command! -nargs=* -bang Xlast <mods>llast<bang> <args>
-! command! -nargs=* -bang -range Xnfile <mods><count>lnfile<bang> <args>
- command! -nargs=* -bang Xpfile <mods>lpfile<bang> <args>
- command! -nargs=* Xexpr <mods>lexpr <args>
- command! -range -nargs=* Xvimgrep <mods><count>lvimgrep <args>
---- 63,69 ----
- command! -count -nargs=* -bang Xprev <mods><count>lprev<bang> <args>
- command! -nargs=* -bang Xfirst <mods>lfirst<bang> <args>
- command! -nargs=* -bang Xlast <mods>llast<bang> <args>
-! command! -count -nargs=* -bang Xnfile <mods><count>lnfile<bang> <args>
- command! -nargs=* -bang Xpfile <mods>lpfile<bang> <args>
- command! -nargs=* Xexpr <mods>lexpr <args>
- command! -range -nargs=* Xvimgrep <mods><count>lvimgrep <args>
-***************
-*** 4126,4138 ****
-
- " Invalid range
- if a:cchar == 'c'
-! call assert_fails('-2cbelow', 'E553:')
-! " TODO: should go to first error in the current line?
-! 0cabove
- else
-! call assert_fails('-2lbelow', 'E553:')
-! " TODO: should go to first error in the current line?
-! 0labove
- endif
-
- call delete('X1')
---- 4126,4134 ----
-
- " Invalid range
- if a:cchar == 'c'
-! call assert_fails('-2cbelow', 'E16:')
- else
-! call assert_fails('-2lbelow', 'E16:')
- endif
-
- call delete('X1')
-***************
-*** 4145,4147 ****
---- 4141,4179 ----
- call Xtest_below('c')
- call Xtest_below('l')
- endfunc
-+
-+ func Test_quickfix_count()
-+ let commands = [
-+ \ 'cNext',
-+ \ 'cNfile',
-+ \ 'cabove',
-+ \ 'cbelow',
-+ \ 'cfirst',
-+ \ 'clast',
-+ \ 'cnewer',
-+ \ 'cnext',
-+ \ 'cnfile',
-+ \ 'colder',
-+ \ 'cprevious',
-+ \ 'crewind',
-+ \
-+ \ 'lNext',
-+ \ 'lNfile',
-+ \ 'labove',
-+ \ 'lbelow',
-+ \ 'lfirst',
-+ \ 'llast',
-+ \ 'lnewer',
-+ \ 'lnext',
-+ \ 'lnfile',
-+ \ 'lolder',
-+ \ 'lprevious',
-+ \ 'lrewind',
-+ \ ]
-+ for cmd in commands
-+ call assert_fails('-1' .. cmd, 'E16:')
-+ call assert_fails('.' .. cmd, 'E16:')
-+ call assert_fails('%' .. cmd, 'E16:')
-+ call assert_fails('$' .. cmd, 'E16:')
-+ endfor
-+ endfunc
-*** ../vim-8.1.1260/runtime/doc/quickfix.txt 2019-05-03 21:56:31.363540578 +0200
---- runtime/doc/quickfix.txt 2019-05-04 14:13:00.932098180 +0200
-***************
-*** 87,93 ****
-
- *:cc*
- :cc[!] [nr] Display error [nr]. If [nr] is omitted, the same
-! error is displayed again. Without [!] this doesn't
- work when jumping to another buffer, the current buffer
- has been changed, there is the only window for the
- buffer and both 'hidden' and 'autowrite' are off.
---- 87,93 ----
-
- *:cc*
- :cc[!] [nr] Display error [nr]. If [nr] is omitted, the same
-! :[nr]cc[!] error is displayed again. Without [!] this doesn't
- work when jumping to another buffer, the current buffer
- has been changed, there is the only window for the
- buffer and both 'hidden' and 'autowrite' are off.
-***************
-*** 96,105 ****
- there is another window for this buffer.
- The 'switchbuf' settings are respected when jumping
- to a buffer.
-
- *:ll*
- :ll[!] [nr] Same as ":cc", except the location list for the
-! current window is used instead of the quickfix list.
-
- *:cn* *:cnext* *E553*
- :[count]cn[ext][!] Display the [count] next error in the list that
---- 96,108 ----
- there is another window for this buffer.
- The 'switchbuf' settings are respected when jumping
- to a buffer.
-+ When used in the quickfix window the line number can
-+ be used, including "." for the current line and "$"
-+ for the last line.
-
- *:ll*
- :ll[!] [nr] Same as ":cc", except the location list for the
-! :[nr]ll[!] current window is used instead of the quickfix list.
-
- *:cn* *:cnext* *E553*
- :[count]cn[ext][!] Display the [count] next error in the list that
-*** ../vim-8.1.1260/src/eval.c 2019-04-27 20:36:52.530303581 +0200
---- src/eval.c 2019-05-04 14:31:49.086276905 +0200
-***************
-*** 9595,9608 ****
- return ret;
- }
-
- int
- assert_fails(typval_T *argvars)
- {
- char_u *cmd = tv_get_string_chk(&argvars[0]);
- garray_T ga;
- int ret = 0;
-- char_u numbuf[NUMBUFLEN];
-- char_u *tofree;
-
- called_emsg = FALSE;
- suppress_errthrow = TRUE;
---- 9595,9621 ----
- return ret;
- }
-
-+ static void
-+ assert_append_cmd_or_arg(garray_T *gap, typval_T *argvars, char_u *cmd)
-+ {
-+ char_u *tofree;
-+ char_u numbuf[NUMBUFLEN];
-+
-+ if (argvars[1].v_type != VAR_UNKNOWN && argvars[2].v_type != VAR_UNKNOWN)
-+ {
-+ ga_concat(gap, echo_string(&argvars[2], &tofree, numbuf, 0));
-+ vim_free(tofree);
-+ }
-+ else
-+ ga_concat(gap, cmd);
-+ }
-+
- int
- assert_fails(typval_T *argvars)
- {
- char_u *cmd = tv_get_string_chk(&argvars[0]);
- garray_T ga;
- int ret = 0;
-
- called_emsg = FALSE;
- suppress_errthrow = TRUE;
-***************
-*** 9612,9625 ****
- {
- prepare_assert_error(&ga);
- ga_concat(&ga, (char_u *)"command did not fail: ");
-! if (argvars[1].v_type != VAR_UNKNOWN
-! && argvars[2].v_type != VAR_UNKNOWN)
-! {
-! ga_concat(&ga, echo_string(&argvars[2], &tofree, numbuf, 0));
-! vim_free(tofree);
-! }
-! else
-! ga_concat(&ga, cmd);
- assert_error(&ga);
- ga_clear(&ga);
- ret = 1;
---- 9625,9631 ----
- {
- prepare_assert_error(&ga);
- ga_concat(&ga, (char_u *)"command did not fail: ");
-! assert_append_cmd_or_arg(&ga, argvars, cmd);
- assert_error(&ga);
- ga_clear(&ga);
- ret = 1;
-***************
-*** 9635,9640 ****
---- 9641,9648 ----
- prepare_assert_error(&ga);
- fill_assert_error(&ga, &argvars[2], NULL, &argvars[1],
- &vimvars[VV_ERRMSG].vv_tv, ASSERT_OTHER);
-+ ga_concat(&ga, (char_u *)": ");
-+ assert_append_cmd_or_arg(&ga, argvars, cmd);
- assert_error(&ga);
- ga_clear(&ga);
- ret = 1;
-*** ../vim-8.1.1260/src/quickfix.c 2019-05-03 21:56:31.367540560 +0200
---- src/quickfix.c 2019-05-04 14:50:58.215954924 +0200
-***************
-*** 4828,4839 ****
- }
-
- /*
-! * Returns the number of valid entries in the current quickfix/location list.
- */
- int
- qf_get_size(exarg_T *eap)
- {
- qf_info_T *qi;
- qf_list_T *qfl;
- qfline_T *qfp;
- int i, sz = 0;
---- 4828,4852 ----
- }
-
- /*
-! * Returns the number of entries in the current quickfix/location list.
- */
- int
- qf_get_size(exarg_T *eap)
- {
- qf_info_T *qi;
-+
-+ if ((qi = qf_cmd_get_stack(eap, FALSE)) == NULL)
-+ return 0;
-+ return qf_get_curlist(qi)->qf_count;
-+ }
-+
-+ /*
-+ * Returns the number of valid entries in the current quickfix/location list.
-+ */
-+ int
-+ qf_get_valid_size(exarg_T *eap)
-+ {
-+ qf_info_T *qi;
- qf_list_T *qfl;
- qfline_T *qfp;
- int i, sz = 0;
-*** ../vim-8.1.1260/src/proto/quickfix.pro 2019-05-03 21:56:31.363540578 +0200
---- src/proto/quickfix.pro 2019-05-04 14:48:27.644759952 +0200
-***************
-*** 19,24 ****
---- 19,25 ----
- int grep_internal(cmdidx_T cmdidx);
- void ex_make(exarg_T *eap);
- int qf_get_size(exarg_T *eap);
-+ int qf_get_valid_size(exarg_T *eap);
- int qf_get_cur_idx(exarg_T *eap);
- int qf_get_cur_valid_idx(exarg_T *eap);
- void ex_cc(exarg_T *eap);
-*** ../vim-8.1.1260/src/ex_cmds2.c 2019-04-21 11:34:36.335256531 +0200
---- src/ex_cmds2.c 2019-05-04 14:46:24.961418476 +0200
-***************
-*** 2132,2138 ****
- else if (eap->cmdidx == CMD_cdo || eap->cmdidx == CMD_ldo
- || eap->cmdidx == CMD_cfdo || eap->cmdidx == CMD_lfdo)
- {
-! qf_size = qf_get_size(eap);
- if (qf_size <= 0 || eap->line1 > qf_size)
- buf = NULL;
- else
---- 2132,2138 ----
- else if (eap->cmdidx == CMD_cdo || eap->cmdidx == CMD_ldo
- || eap->cmdidx == CMD_cfdo || eap->cmdidx == CMD_lfdo)
- {
-! qf_size = qf_get_valid_size(eap);
- if (qf_size <= 0 || eap->line1 > qf_size)
- buf = NULL;
- else
-*** ../vim-8.1.1260/src/version.c 2019-05-04 14:05:05.210240329 +0200
---- src/version.c 2019-05-04 14:05:40.050094734 +0200
-***************
-*** 769,770 ****
---- 769,772 ----
- { /* Add new patch number below this line */
-+ /**/
-+ 1261,
- /**/
-
---
-I just planted an Algebra tree. It has square roots.
-
- /// 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 ///