loupe
loupe copied to clipboard
Transient hlsearch
Why
It would be nice to be able to make 'hlsearch'
automatically dissipate after a configured timeout period, leaving only the match under the cursor highlighted.
Demo
How
This feature is off by default and can be activated by setting g:LoupeHlSearchTimeout
to a positive number (of milliseconds) in a version of Vim (or Neovim) that supports timers.
The autocommand and mappings that currently call loupe#hlmatch
(highlighting the match under the cursor) will also call loupe#hlsearch
, which sets 'hlsearch'
and schedules a timer to deactivate it. The callback that handles deactivation only does so for the most recent timer, so multiple n
jumps, for example, extend the life of 'hlsearch'
.
Notes
I initially tried to implement this using :nohlsearch
rather than manipulating the 'hlsearch'
user option, but Vim saves and restores the highlight state when calling and returning from user functions, so :nohlsearch
was useless. Given the nature of this feature, manipulating 'hlsearch'
seems pretty reasonable.
I suppose it might be nice to make the highlight under the cursor transient as well, but I haven't implemented that yet.