1
0
forked from aniani/vim

patch 8.1.1261: no error for quickfix commands with negative range

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.
This commit is contained in:
Bram Moolenaar
2019-05-04 15:05:28 +02:00
parent e4f5f3aa3d
commit 25190db225
9 changed files with 177 additions and 67 deletions

View File

@@ -73,8 +73,10 @@ typedef enum {
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_OTHER, // something else
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,7 +94,7 @@ typedef struct exarg exarg_T;
* Not supported commands are included to avoid ambiguities.
*/
#ifdef EX
# undef EX /* just in case */
# 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,10 +244,10 @@ EX(CMD_change, "change", ex_change,
ADDR_LINES),
EX(CMD_cNext, "cNext", ex_cnext,
RANGE|COUNT|TRLBAR|BANG,
ADDR_OTHER),
ADDR_UNSIGNED),
EX(CMD_cNfile, "cNfile", ex_cnext,
RANGE|COUNT|TRLBAR|BANG,
ADDR_OTHER),
ADDR_UNSIGNED),
EX(CMD_cabbrev, "cabbrev", ex_abbreviate,
EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
ADDR_NONE),
@@ -253,8 +255,8 @@ EX(CMD_cabclear, "cabclear", ex_abclear,
EXTRA|TRLBAR|CMDWIN,
ADDR_NONE),
EX(CMD_cabove, "cabove", ex_cbelow,
RANGE|TRLBAR,
ADDR_OTHER),
RANGE|COUNT|TRLBAR,
ADDR_UNSIGNED),
EX(CMD_caddbuffer, "caddbuffer", ex_cbuffer,
RANGE|WORD1|TRLBAR,
ADDR_OTHER),
@@ -274,14 +276,14 @@ EX(CMD_cbuffer, "cbuffer", ex_cbuffer,
BANG|RANGE|WORD1|TRLBAR,
ADDR_OTHER),
EX(CMD_cbelow, "cbelow", ex_cbelow,
RANGE|TRLBAR,
ADDR_OTHER),
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_OTHER),
ADDR_QUICKFIX),
EX(CMD_cclose, "cclose", ex_cclose,
TRLBAR,
ADDR_NONE),
@@ -290,7 +292,7 @@ EX(CMD_cd, "cd", ex_cd,
ADDR_NONE),
EX(CMD_cdo, "cdo", ex_listdo,
BANG|NEEDARG|EXTRA|NOTRLCOM|RANGE|DFLALL,
ADDR_QUICKFIX),
ADDR_QUICKFIX_VALID),
EX(CMD_center, "center", ex_align,
TRLBAR|RANGE|WHOLEFOLD|EXTRA|CMDWIN|MODIFY,
ADDR_LINES),
@@ -302,10 +304,10 @@ EX(CMD_cfile, "cfile", ex_cfile,
ADDR_NONE),
EX(CMD_cfdo, "cfdo", ex_listdo,
BANG|NEEDARG|EXTRA|NOTRLCOM|RANGE|DFLALL,
ADDR_QUICKFIX),
ADDR_QUICKFIX_VALID),
EX(CMD_cfirst, "cfirst", ex_cc,
RANGE|COUNT|TRLBAR|BANG,
ADDR_OTHER),
ADDR_UNSIGNED),
EX(CMD_cgetfile, "cgetfile", ex_cfile,
TRLBAR|FILE1,
ADDR_NONE),
@@ -335,7 +337,7 @@ EX(CMD_clist, "clist", qf_list,
ADDR_NONE),
EX(CMD_clast, "clast", ex_cc,
RANGE|COUNT|TRLBAR|BANG,
ADDR_OTHER),
ADDR_UNSIGNED),
EX(CMD_close, "close", ex_close,
BANG|RANGE|COUNT|TRLBAR|CMDWIN,
ADDR_WINDOWS),
@@ -353,13 +355,13 @@ EX(CMD_cmenu, "cmenu", ex_menu,
ADDR_OTHER),
EX(CMD_cnext, "cnext", ex_cnext,
RANGE|COUNT|TRLBAR|BANG,
ADDR_OTHER),
ADDR_UNSIGNED),
EX(CMD_cnewer, "cnewer", qf_age,
RANGE|COUNT|TRLBAR,
ADDR_OTHER),
ADDR_UNSIGNED),
EX(CMD_cnfile, "cnfile", ex_cnext,
RANGE|COUNT|TRLBAR|BANG,
ADDR_OTHER),
ADDR_UNSIGNED),
EX(CMD_cnoremap, "cnoremap", ex_map,
EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
ADDR_NONE),
@@ -374,7 +376,7 @@ EX(CMD_copy, "copy", ex_copymove,
ADDR_LINES),
EX(CMD_colder, "colder", qf_age,
RANGE|COUNT|TRLBAR,
ADDR_OTHER),
ADDR_UNSIGNED),
EX(CMD_colorscheme, "colorscheme", ex_colorscheme,
WORD1|TRLBAR|CMDWIN,
ADDR_NONE),
@@ -398,7 +400,7 @@ EX(CMD_copen, "copen", ex_copen,
ADDR_OTHER),
EX(CMD_cprevious, "cprevious", ex_cnext,
RANGE|COUNT|TRLBAR|BANG,
ADDR_OTHER),
ADDR_UNSIGNED),
EX(CMD_cpfile, "cpfile", ex_cnext,
RANGE|COUNT|TRLBAR|BANG,
ADDR_OTHER),
@@ -407,7 +409,7 @@ EX(CMD_cquit, "cquit", ex_cquit,
ADDR_NONE),
EX(CMD_crewind, "crewind", ex_cc,
RANGE|COUNT|TRLBAR|BANG,
ADDR_OTHER),
ADDR_UNSIGNED),
EX(CMD_cscope, "cscope", ex_cscope,
EXTRA|NOTRLCOM|XFILE,
ADDR_NONE),
@@ -725,16 +727,16 @@ EX(CMD_list, "list", ex_print,
ADDR_LINES),
EX(CMD_lNext, "lNext", ex_cnext,
RANGE|COUNT|TRLBAR|BANG,
ADDR_OTHER),
ADDR_UNSIGNED),
EX(CMD_lNfile, "lNfile", ex_cnext,
RANGE|COUNT|TRLBAR|BANG,
ADDR_OTHER),
ADDR_UNSIGNED),
EX(CMD_last, "last", ex_last,
EXTRA|BANG|EDITCMD|ARGOPT|TRLBAR,
ADDR_NONE),
EX(CMD_labove, "labove", ex_cbelow,
RANGE|TRLBAR,
ADDR_OTHER),
RANGE|COUNT|TRLBAR,
ADDR_UNSIGNED),
EX(CMD_language, "language", ex_language,
EXTRA|TRLBAR|CMDWIN,
ADDR_NONE),
@@ -754,8 +756,8 @@ EX(CMD_lbuffer, "lbuffer", ex_cbuffer,
BANG|RANGE|WORD1|TRLBAR,
ADDR_OTHER),
EX(CMD_lbelow, "lbelow", ex_cbelow,
RANGE|TRLBAR,
ADDR_OTHER),
RANGE|COUNT|TRLBAR,
ADDR_UNSIGNED),
EX(CMD_lbottom, "lbottom", ex_cbottom,
TRLBAR,
ADDR_NONE),
@@ -773,7 +775,7 @@ EX(CMD_lcscope, "lcscope", ex_cscope,
ADDR_NONE),
EX(CMD_ldo, "ldo", ex_listdo,
BANG|NEEDARG|EXTRA|NOTRLCOM|RANGE|DFLALL,
ADDR_QUICKFIX),
ADDR_QUICKFIX_VALID),
EX(CMD_left, "left", ex_align,
TRLBAR|RANGE|WHOLEFOLD|EXTRA|CMDWIN|MODIFY,
ADDR_LINES),
@@ -791,10 +793,10 @@ EX(CMD_lfile, "lfile", ex_cfile,
ADDR_NONE),
EX(CMD_lfdo, "lfdo", ex_listdo,
BANG|NEEDARG|EXTRA|NOTRLCOM|RANGE|DFLALL,
ADDR_QUICKFIX),
ADDR_QUICKFIX_VALID),
EX(CMD_lfirst, "lfirst", ex_cc,
RANGE|COUNT|TRLBAR|BANG,
ADDR_OTHER),
ADDR_UNSIGNED),
EX(CMD_lgetfile, "lgetfile", ex_cfile,
TRLBAR|FILE1,
ADDR_NONE),
@@ -818,10 +820,10 @@ EX(CMD_lhistory, "lhistory", qf_history,
ADDR_NONE),
EX(CMD_ll, "ll", ex_cc,
RANGE|COUNT|TRLBAR|BANG,
ADDR_OTHER),
ADDR_QUICKFIX),
EX(CMD_llast, "llast", ex_cc,
RANGE|COUNT|TRLBAR|BANG,
ADDR_OTHER),
ADDR_UNSIGNED),
EX(CMD_llist, "llist", qf_list,
BANG|EXTRA|TRLBAR|CMDWIN,
ADDR_NONE),
@@ -839,13 +841,13 @@ EX(CMD_lnoremap, "lnoremap", ex_map,
ADDR_NONE),
EX(CMD_lnext, "lnext", ex_cnext,
RANGE|COUNT|TRLBAR|BANG,
ADDR_OTHER),
ADDR_UNSIGNED),
EX(CMD_lnewer, "lnewer", qf_age,
RANGE|COUNT|TRLBAR,
ADDR_OTHER),
ADDR_UNSIGNED),
EX(CMD_lnfile, "lnfile", ex_cnext,
RANGE|COUNT|TRLBAR|BANG,
ADDR_OTHER),
ADDR_UNSIGNED),
EX(CMD_loadview, "loadview", ex_loadview,
FILE1|TRLBAR,
ADDR_NONE),
@@ -860,19 +862,19 @@ EX(CMD_lockvar, "lockvar", ex_lockvar,
ADDR_NONE),
EX(CMD_lolder, "lolder", qf_age,
RANGE|COUNT|TRLBAR,
ADDR_OTHER),
ADDR_UNSIGNED),
EX(CMD_lopen, "lopen", ex_copen,
RANGE|COUNT|TRLBAR,
ADDR_OTHER),
EX(CMD_lprevious, "lprevious", ex_cnext,
RANGE|COUNT|TRLBAR|BANG,
ADDR_OTHER),
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_OTHER),
ADDR_UNSIGNED),
EX(CMD_ltag, "ltag", ex_tag,
TRLBAR|BANG|WORD1,
ADDR_NONE),