diff src/ex_cmds.h @ 16515:6e87a69b8e0c v8.1.1261

patch 8.1.1261: no error for quickfix commands with negative range commit https://github.com/vim/vim/commit/25190db225d63e185e77e043e694ef455b3cf304 Author: Bram Moolenaar <Bram@vim.org> Date: Sat May 4 15:05:28 2019 +0200 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.
author Bram Moolenaar <Bram@vim.org>
date Sat, 04 May 2019 15:15:05 +0200
parents 28e3ba82d8c8
children 1d2b3bb35414
line wrap: on
line diff
--- a/src/ex_cmds.h
+++ b/src/ex_cmds.h
@@ -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),