| Server IP : 121.121.20.254 / Your IP : 216.73.216.202 Web Server : Microsoft-IIS/10.0 System : Windows NT WEB-SERVER 10.0 build 20348 (Windows Server 2022) AMD64 User : IUSR ( 0) PHP Version : 8.3.28 Disable Function : NONE MySQL : ON | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : C:/Program Files/Git/usr/share/vim/vim91/pack/dist/opt/hlyank/plugin/ |
Upload File : |
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: