mirror of
https://github.com/vim/vim.git
synced 2025-09-26 04:04:07 -04:00
patch 8.2.2057: getting the selection may trigger TextYankPost autocmd
Problem: Getting the selection may trigger TextYankPost autocmd. Solution: Only trigger the autocommand when yanking in Vim, not for getting the selection. (closes #7367)
This commit is contained in:
32
src/normal.c
32
src/normal.c
@@ -1325,6 +1325,26 @@ check_visual_highlight(void)
|
||||
}
|
||||
}
|
||||
|
||||
#if defined(FEAT_CLIPBOARD) && defined(FEAT_EVAL)
|
||||
/*
|
||||
* Call yank_do_autocmd() for "regname".
|
||||
*/
|
||||
static void
|
||||
call_yank_do_autocmd(int regname)
|
||||
{
|
||||
oparg_T oa;
|
||||
yankreg_T *reg;
|
||||
|
||||
clear_oparg(&oa);
|
||||
oa.regname = regname;
|
||||
oa.op_type = OP_YANK;
|
||||
oa.is_VIsual = TRUE;
|
||||
reg = get_register(regname, TRUE);
|
||||
yank_do_autocmd(&oa, reg);
|
||||
free_register(reg);
|
||||
}
|
||||
#endif
|
||||
|
||||
/*
|
||||
* End Visual mode.
|
||||
* This function should ALWAYS be called to end Visual mode, except from
|
||||
@@ -1342,6 +1362,18 @@ end_visual_mode(void)
|
||||
*/
|
||||
if (clip_star.available && clip_star.owned)
|
||||
clip_auto_select();
|
||||
|
||||
# if defined(FEAT_EVAL)
|
||||
// Emit a TextYankPost for the automatic copy of the selection into the
|
||||
// star and/or plus register.
|
||||
if (has_textyankpost())
|
||||
{
|
||||
if (clip_isautosel_star())
|
||||
call_yank_do_autocmd('*');
|
||||
if (clip_isautosel_plus())
|
||||
call_yank_do_autocmd('+');
|
||||
}
|
||||
# endif
|
||||
#endif
|
||||
|
||||
VIsual_active = FALSE;
|
||||
|
Reference in New Issue
Block a user