1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
mnv9script
# 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
# mnv:sts=2:sw=2:et:
|