forked from aniani/vim
		
	patch 8.0.0522: Win32: when 'clipboard' is "unnamed" yyp does not work
Problem:    MS-Windows: when 'clipboard' is "unnamed" yyp does not work in a
            :global command.
Solution:   When setting the clipboard was postponed, do not clear the
            register.
			
			
This commit is contained in:
		| @@ -2145,6 +2145,7 @@ test_arglist \ | ||||
| 	test_ga \ | ||||
| 	test_gf \ | ||||
| 	test_glob2regpat \ | ||||
| 	test_global \ | ||||
| 	test_gn \ | ||||
| 	test_goto \ | ||||
| 	test_gui \ | ||||
|   | ||||
| @@ -532,7 +532,6 @@ EXTERN int	clip_autoselect_plus INIT(= FALSE); | ||||
| EXTERN int	clip_autoselectml INIT(= FALSE); | ||||
| EXTERN int	clip_html INIT(= FALSE); | ||||
| EXTERN regprog_T *clip_exclude_prog INIT(= NULL); | ||||
| EXTERN int	clip_did_set_selection INIT(= TRUE); | ||||
| EXTERN int	clip_unnamed_saved INIT(= 0); | ||||
| #endif | ||||
|  | ||||
|   | ||||
| @@ -6466,7 +6466,7 @@ clip_get_selection(VimClipboard *cbd) | ||||
| 	VIsual = old_visual; | ||||
| 	VIsual_mode = old_visual_mode; | ||||
|     } | ||||
|     else | ||||
|     else if (!is_clipboard_needs_update()) | ||||
|     { | ||||
| 	clip_free_selection(cbd); | ||||
|  | ||||
|   | ||||
| @@ -16,6 +16,7 @@ void clip_update_selection(VimClipboard *clip); | ||||
| void clip_own_selection(VimClipboard *cbd); | ||||
| void clip_lose_selection(VimClipboard *cbd); | ||||
| void start_global_changes(void); | ||||
| int is_clipboard_needs_update(void); | ||||
| void end_global_changes(void); | ||||
| void clip_auto_select(void); | ||||
| int clip_isautosel_star(void); | ||||
|   | ||||
| @@ -21,8 +21,9 @@ source test_findfile.vim | ||||
| source test_float_func.vim | ||||
| source test_fnamemodify.vim | ||||
| source test_functions.vim | ||||
| source test_glob2regpat.vim | ||||
| source test_ga.vim | ||||
| source test_glob2regpat.vim | ||||
| source test_global.vim | ||||
| source test_goto.vim | ||||
| source test_help_tagjump.vim | ||||
| source test_join.vim | ||||
|   | ||||
							
								
								
									
										11
									
								
								src/testdir/test_global.vim
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								src/testdir/test_global.vim
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,11 @@ | ||||
|  | ||||
| func Test_yank_put_clipboard() | ||||
|   new | ||||
|   call setline(1, ['a', 'b', 'c']) | ||||
|   set clipboard=unnamed | ||||
|   g/^/normal yyp | ||||
|   call assert_equal(['a', 'a', 'b', 'b', 'c', 'c'], getline(1, 6)) | ||||
|  | ||||
|   set clipboard& | ||||
|   bwipe! | ||||
| endfunc | ||||
							
								
								
									
										16
									
								
								src/ui.c
									
									
									
									
									
								
							
							
						
						
									
										16
									
								
								src/ui.c
									
									
									
									
									
								
							| @@ -392,8 +392,6 @@ ui_breakcheck_force(int force) | ||||
|  | ||||
| #if defined(FEAT_CLIPBOARD) || defined(PROTO) | ||||
|  | ||||
| static void clip_copy_selection(VimClipboard *clip); | ||||
|  | ||||
| /* | ||||
|  * Selection stuff using Visual mode, for cutting and pasting text to other | ||||
|  * windows. | ||||
| @@ -569,7 +567,8 @@ clip_copy_selection(VimClipboard *clip) | ||||
|  * considerably. | ||||
|  */ | ||||
| static int global_change_count = 0; /* if set, inside a start_global_changes */ | ||||
| static int clipboard_needs_update; /* clipboard needs to be updated */ | ||||
| static int clipboard_needs_update = FALSE; /* clipboard needs to be updated */ | ||||
| static int clip_did_set_selection = TRUE; | ||||
|  | ||||
| /* | ||||
|  * Save clip_unnamed and reset it. | ||||
| @@ -589,6 +588,16 @@ start_global_changes(void) | ||||
|     } | ||||
| } | ||||
|  | ||||
| /* | ||||
|  * Return TRUE if setting the clipboard was postponed, it already contains the | ||||
|  * right text. | ||||
|  */ | ||||
|     int | ||||
| is_clipboard_needs_update() | ||||
| { | ||||
|     return clipboard_needs_update; | ||||
| } | ||||
|  | ||||
| /* | ||||
|  * Restore clip_unnamed and set the selection when needed. | ||||
|  */ | ||||
| @@ -619,6 +628,7 @@ end_global_changes(void) | ||||
| 	    } | ||||
| 	} | ||||
|     } | ||||
|     clipboard_needs_update = FALSE; | ||||
| } | ||||
|  | ||||
| /* | ||||
|   | ||||
| @@ -764,6 +764,8 @@ static char *(features[]) = | ||||
|  | ||||
| static int included_patches[] = | ||||
| {   /* Add new patch number below this line */ | ||||
| /**/ | ||||
|     522, | ||||
| /**/ | ||||
|     521, | ||||
| /**/ | ||||
|   | ||||
		Reference in New Issue
	
	Block a user