@@ -135,7 +135,7 @@ static int getargopt __ARGS((exarg_T *eap));
135135#endif
136136
137137static int check_more __ARGS ((int , int ));
138- static linenr_T get_address __ARGS ((char_u * * , int addr_type , int skip , int to_other_file ));
138+ static linenr_T get_address __ARGS ((exarg_T * , char_u * * , int addr_type , int skip , int to_other_file ));
139139static void get_flags __ARGS ((exarg_T * eap ));
140140#if !defined(FEAT_PERL ) \
141141 || !defined(FEAT_PYTHON ) || !defined(FEAT_PYTHON3 ) \
@@ -2173,9 +2173,12 @@ do_one_cmd(cmdlinep, sourcing,
21732173 lnum = CURRENT_TAB_NR ;
21742174 ea .line2 = lnum ;
21752175 break ;
2176+ case ADDR_QUICKFIX :
2177+ ea .line2 = qf_get_cur_valid_idx (& ea );
2178+ break ;
21762179 }
21772180 ea .cmd = skipwhite (ea .cmd );
2178- lnum = get_address (& ea .cmd , ea .addr_type , ea .skip , ea .addr_count == 0 );
2181+ lnum = get_address (& ea , & ea .cmd , ea .addr_type , ea .skip , ea .addr_count == 0 );
21792182 if (ea .cmd == NULL ) /* error detected */
21802183 goto doend ;
21812184 if (lnum == MAXLNUM )
@@ -2233,6 +2236,12 @@ do_one_cmd(cmdlinep, sourcing,
22332236 ea .line2 = ARGCOUNT ;
22342237 }
22352238 break ;
2239+ case ADDR_QUICKFIX :
2240+ ea .line1 = 1 ;
2241+ ea .line2 = qf_get_size (& ea );
2242+ if (ea .line2 == 0 )
2243+ ea .line2 = 1 ;
2244+ break ;
22362245 }
22372246 ++ ea .addr_count ;
22382247 }
@@ -2693,6 +2702,11 @@ do_one_cmd(cmdlinep, sourcing,
26932702 else
26942703 ea .line2 = ARGCOUNT ;
26952704 break ;
2705+ case ADDR_QUICKFIX :
2706+ ea .line2 = qf_get_size (& ea );
2707+ if (ea .line2 == 0 )
2708+ ea .line2 = 1 ;
2709+ break ;
26962710 }
26972711 }
26982712
@@ -3839,6 +3853,8 @@ set_one_cmd_context(xp, buff)
38393853 case CMD_botright :
38403854 case CMD_browse :
38413855 case CMD_bufdo :
3856+ case CMD_cdo :
3857+ case CMD_cfdo :
38423858 case CMD_confirm :
38433859 case CMD_debug :
38443860 case CMD_folddoclosed :
@@ -3848,7 +3864,9 @@ set_one_cmd_context(xp, buff)
38483864 case CMD_keepjumps :
38493865 case CMD_keepmarks :
38503866 case CMD_keeppatterns :
3867+ case CMD_ldo :
38513868 case CMD_leftabove :
3869+ case CMD_lfdo :
38523870 case CMD_lockmarks :
38533871 case CMD_noautocmd :
38543872 case CMD_noswapfile :
@@ -4321,7 +4339,8 @@ skip_range(cmd, ctx)
43214339 * Return MAXLNUM when no Ex address was found.
43224340 */
43234341 static linenr_T
4324- get_address (ptr , addr_type , skip , to_other_file )
4342+ get_address (eap , ptr , addr_type , skip , to_other_file )
4343+ exarg_T * eap ;
43254344 char_u * * ptr ;
43264345 int addr_type ; /* flag: one of ADDR_LINES, ... */
43274346 int skip ; /* only skip the address, don't use it */
@@ -4362,6 +4381,9 @@ get_address(ptr, addr_type, skip, to_other_file)
43624381 case ADDR_TABS :
43634382 lnum = CURRENT_TAB_NR ;
43644383 break ;
4384+ case ADDR_QUICKFIX :
4385+ lnum = qf_get_cur_valid_idx (eap );
4386+ break ;
43654387 }
43664388 break ;
43674389
@@ -4394,6 +4416,11 @@ get_address(ptr, addr_type, skip, to_other_file)
43944416 case ADDR_TABS :
43954417 lnum = LAST_TAB_NR ;
43964418 break ;
4419+ case ADDR_QUICKFIX :
4420+ lnum = qf_get_size (eap );
4421+ if (lnum == 0 )
4422+ lnum = 1 ;
4423+ break ;
43974424 }
43984425 break ;
43994426
@@ -4569,6 +4596,9 @@ get_address(ptr, addr_type, skip, to_other_file)
45694596 case ADDR_TABS :
45704597 lnum = CURRENT_TAB_NR ;
45714598 break ;
4599+ case ADDR_QUICKFIX :
4600+ lnum = qf_get_cur_valid_idx (eap );
4601+ break ;
45724602 }
45734603 }
45744604
@@ -4707,6 +4737,10 @@ invalid_range(eap)
47074737 if (eap -> line2 > LAST_TAB_NR )
47084738 return (char_u * )_ (e_invrange );
47094739 break ;
4740+ case ADDR_QUICKFIX :
4741+ if (eap -> line2 != 1 && eap -> line2 > qf_get_size (eap ))
4742+ return (char_u * )_ (e_invrange );
4743+ break ;
47104744 }
47114745 }
47124746 return NULL ;
@@ -5817,6 +5851,7 @@ static struct
58175851 {ADDR_TABS , "tabs" },
58185852 {ADDR_BUFFERS , "buffers" },
58195853 {ADDR_WINDOWS , "windows" },
5854+ {ADDR_QUICKFIX , "quickfix" },
58205855 {-1 , NULL }
58215856};
58225857#endif
@@ -9224,7 +9259,7 @@ ex_copymove(eap)
92249259{
92259260 long n ;
92269261
9227- n = get_address (& eap -> arg , eap -> addr_type , FALSE, FALSE);
9262+ n = get_address (eap , & eap -> arg , eap -> addr_type , FALSE, FALSE);
92289263 if (eap -> arg == NULL ) /* error detected */
92299264 {
92309265 eap -> nextcmd = NULL ;
0 commit comments