mirror of
https://github.com/vim/vim.git
synced 2025-09-25 03:54:15 -04:00
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