On So, 01 Jun 2014, Christian Brabandt wrote:

> On Sa, 31 Mai 2014, Bram Moolenaar wrote:
> 
> > > > Perhaps :g and :v are the only commands that fill a register multiple
> > > > times?  Well, executing a script does, of course.  And executing from a
> > > > register multiple times.  But that's not done with one command.
> > > :folddoopen
> > > :folddoclosed
> > Oh, yes.  Then also :bufdo, :windo and friends.
> 
> Updated patch attached.

Best,
Christian
-- 
Fragt der Lehrer die Esther: "Was heißt Shalom?"
Darauf Esther: "Friede."
"Und was heißt Elshalom?"
"Elfriede."

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to vim_dev+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt
--- a/runtime/doc/options.txt
+++ b/runtime/doc/options.txt
@@ -1503,6 +1503,10 @@ A jump table for the options with a shor
 			explicitly accessed using the "* notation.  Also see
 			|gui-clipboard|.
 
+			(Note: will be reset for |:g|,|:v|,|:windo|,|:tabdo|,
+			|:bufdo|,|:folddoopen| and |:folddoclosed| commands
+			when there are many matches to prevent hanging system)
+
 						*clipboard-unnamedplus*
 	unnamedplus	A variant of the "unnamed" flag which uses the
 			clipboard register '+' (|quoteplus|) instead of
@@ -1516,6 +1520,10 @@ A jump table for the options with a shor
 			Availability can be checked with: >
 				if has('unnamedplus')
 <
+			(Note: will be reset for |:g|,|:v|,|:windo|,|:tabdo|,
+			|:bufdo|,|:folddoopen| and |:folddoclosed| commands
+			when there are many matches to prevent hanging system)
+
 						*clipboard-autoselect*
 	autoselect	Works like the 'a' flag in 'guioptions': If present,
 			then whenever Visual mode is started, or the Visual
diff --git a/src/ex_cmds.c b/src/ex_cmds.c
--- a/src/ex_cmds.c
+++ b/src/ex_cmds.c
@@ -5421,6 +5421,9 @@ ex_global(eap)
     regmmatch_T	regmatch;
     int		match;
     int		which_pat;
+#ifdef FEAT_CLIPBOARD
+    int		save_clip_unnamed = clip_unnamed;
+#endif
 
     if (global_busy)
     {
@@ -5511,10 +5514,20 @@ ex_global(eap)
 	    smsg((char_u *)_("Pattern not found: %s"), pat);
     }
     else
+    {
+#ifdef FEAT_CLIPBOARD
+	if (ndone > 100)
+	    /* reset clipboard for more then 100 matches (prevents hanging Windows) */
+	    clip_unnamed = 0;
+#endif
 	global_exe(cmd);
+    }
 
     ml_clearmarked();	   /* clear rest of the marks */
     vim_regfree(regmatch.regprog);
+#ifdef FEAT_CLIPBOARD
+    clip_unnamed = save_clip_unnamed;
+#endif
 }
 
 /*
diff --git a/src/ex_cmds2.c b/src/ex_cmds2.c
--- a/src/ex_cmds2.c
+++ b/src/ex_cmds2.c
@@ -2449,6 +2449,9 @@ ex_listdo(eap)
     char_u	*save_ei = NULL;
 #endif
     char_u	*p_shm_save;
+#ifdef FEAT_CLIPBOARD
+    int		save_clip_unnamed = clip_unnamed;
+#endif
 
 #ifndef FEAT_WINDOWS
     if (eap->cmdidx == CMD_windo)
@@ -2464,6 +2467,9 @@ ex_listdo(eap)
 	 * great speed improvement. */
 	save_ei = au_event_disable(",Syntax");
 #endif
+#ifdef FEAT_CLIPBOARD
+    clip_unnamed = 0; /* reset clipboard setting (prevents hanging Windows) */
+#endif
 
     if (eap->cmdidx == CMD_windo
 	    || eap->cmdidx == CMD_tabdo
@@ -2591,6 +2597,9 @@ ex_listdo(eap)
 					       curbuf->b_fname, TRUE, curbuf);
     }
 #endif
+#ifdef FEAT_CLIPBOARD
+    clip_unnamed = save_clip_unnamed;
+#endif
 }
 
 /*
diff --git a/src/ex_docmd.c b/src/ex_docmd.c
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -11533,6 +11533,11 @@ ex_folddo(eap)
     exarg_T	*eap;
 {
     linenr_T	lnum;
+#ifdef FEAT_CLIPBOARD
+    int		save_clip_unnamed = clip_unnamed;
+
+    clip_unnamed = 0; /* reset 'clipboard to prevent hangin windows */
+#endif
 
     /* First set the marks for all lines closed/open. */
     for (lnum = eap->line1; lnum <= eap->line2; ++lnum)
@@ -11542,5 +11547,8 @@ ex_folddo(eap)
     /* Execute the command on the marked lines. */
     global_exe(eap->arg);
     ml_clearmarked();	   /* clear rest of the marks */
-}
-#endif
+#ifdef FEAT_CLIPBOARD
+    clip_unnamed = save_clip_unnamed;
+#endif
+}
+#endif

Raspunde prin e-mail lui