Files
vim/runtime/pack/dist/opt/hlyank/plugin/hlyank.vim
Hirohito Higashi e14aa3c035 runtime(hlyank): update the hlyank package
closes: #16944

Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-03-22 15:58:59 +01:00

40 lines
1.2 KiB
VimL

vim9script
# Highlight Yank plugin
# Last Change: 2025 Mar 22
def HighlightedYank()
var hlgroup = get(g:, "hlyank_hlgroup", "IncSearch")
var duration = min([get(g:, "hlyank_duration", 300), 3000])
var in_visual = get(g:, "hlyank_invisual", true)
if v:event.operator ==? 'y'
if !in_visual && visualmode() != null_string
visualmode(1)
return
endif
# if clipboard has autoselect (default on linux) exiting from Visual with
# ESC generates bogus event and this highlights previous yank
if &clipboard =~ 'autoselect' && v:event.regname == "*" && v:event.visual
return
endif
var [beg, end] = [getpos("'["), getpos("']")]
var type = v:event.regtype ?? 'v'
var pos = getregionpos(beg, end, {type: type, exclusive: false})
var m = matchaddpos(hlgroup, pos->mapnew((_, v) => {
var col_beg = v[0][2] + v[0][3]
var col_end = v[1][2] + v[1][3] + 1
return [v[0][1], col_beg, col_end - col_beg]
}))
var winid = win_getid()
timer_start(duration, (_) => m->matchdelete(winid))
endif
enddef
augroup hlyank
autocmd!
autocmd TextYankPost * HighlightedYank()
augroup END
# vim:sts=2:sw=2:et: