mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
ops: save and restore clipboard batch status when entering cmdline window
This commit is contained in:
parent
68f3da5f61
commit
4b3e51d4ee
@ -5718,6 +5718,7 @@ static int ex_window(void)
|
||||
|
||||
i = RedrawingDisabled;
|
||||
RedrawingDisabled = 0;
|
||||
int save_count = save_batch_count();
|
||||
|
||||
/*
|
||||
* Call the main loop until <CR> or CTRL-C is typed.
|
||||
@ -5726,6 +5727,7 @@ static int ex_window(void)
|
||||
normal_enter(true, false);
|
||||
|
||||
RedrawingDisabled = i;
|
||||
restore_batch_count(save_count);
|
||||
|
||||
int save_KeyTyped = KeyTyped;
|
||||
|
||||
|
@ -5755,7 +5755,6 @@ void start_batch_changes(void)
|
||||
return;
|
||||
}
|
||||
clipboard_delay_update = true;
|
||||
clipboard_needs_update = false;
|
||||
}
|
||||
|
||||
/// Counterpart to start_batch_changes().
|
||||
@ -5767,12 +5766,37 @@ void end_batch_changes(void)
|
||||
}
|
||||
clipboard_delay_update = false;
|
||||
if (clipboard_needs_update) {
|
||||
// must be before, as set_clipboard will invoke
|
||||
// start/end_batch_changes recursively
|
||||
clipboard_needs_update = false;
|
||||
// unnamed ("implicit" clipboard)
|
||||
set_clipboard(NUL, y_previous);
|
||||
clipboard_needs_update = false;
|
||||
}
|
||||
}
|
||||
|
||||
int save_batch_count(void)
|
||||
{
|
||||
int save_count = batch_change_count;
|
||||
batch_change_count = 0;
|
||||
clipboard_delay_update = false;
|
||||
if (clipboard_needs_update) {
|
||||
clipboard_needs_update = false;
|
||||
// unnamed ("implicit" clipboard)
|
||||
set_clipboard(NUL, y_previous);
|
||||
}
|
||||
return save_count;
|
||||
}
|
||||
|
||||
void restore_batch_count(int save_count)
|
||||
{
|
||||
assert(batch_change_count == 0);
|
||||
batch_change_count = save_count;
|
||||
if (batch_change_count > 0) {
|
||||
clipboard_delay_update = true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// Check whether register is empty
|
||||
static inline bool reg_empty(const yankreg_T *const reg)
|
||||
FUNC_ATTR_PURE
|
||||
|
@ -392,6 +392,13 @@ describe('clipboard', function()
|
||||
eq('---', eval('getreg("*")'))
|
||||
end)
|
||||
|
||||
it('works in the cmdline window', function()
|
||||
feed('q:itext<esc>yy')
|
||||
eq({{'text', ''}, 'V'}, eval("g:test_clip['*']"))
|
||||
command("let g:test_clip['*'] = [['star'], 'c']")
|
||||
feed('p')
|
||||
eq('textstar', meths.get_current_line())
|
||||
end)
|
||||
end)
|
||||
|
||||
describe('clipboard=unnamedplus', function()
|
||||
|
Loading…
Reference in New Issue
Block a user