loupe icon indicating copy to clipboard operation
loupe copied to clipboard

Transient hlsearch

Open ivanbrennan opened this issue 7 years ago • 0 comments

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

asciicast

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.

ivanbrennan avatar Jul 09 '17 00:07 ivanbrennan