## kak-search-highlight: interactive highlighting of search terms ## Author: Daniel Fichtinger sr.ht/~ficd ## License: ISC provide-module search-highlight %— ## begin public options declare-option -docstring %{ Face definition for search highlighting. See :doc faces. } str search_highlight_face rgb:D87C4A+i ## end # track current highlighting status declare-option -hidden str search_highlight_status 'search-highlight-off' def -hidden -override search-highlight-on nop def -hidden -override search-highlight-off fail declare-option -hidden bool search_highlight_quit false define-command -hidden search-highlight-clear %{ try %{ # for safety; only run if highlighting is on %opt{search_highlight_status} # remove highlighter remove-highlighter window/search-highlight # update status set-option window search_highlight_status 'search-highlight-off' } } # enable the plugin define-command -hidden search-highlight-enable-impl %{ # register hook to show highlighting during search hook -group search-highlight window RegisterModified '/' %{ # check whether already enabled try %{ %opt{search_highlight_status} } catch %{ map window prompt ': set-option window search_highlight_quit true' # if not, add the highlighter add-highlighter window/search-highlight dynregex '%reg{/}' %exp{0:%opt{search_highlight_face}} # update status tracker set-option window search_highlight_status 'search-highlight-on' # register hook to clear highlighter after leaving search hook -once -group search-highlight window NormalIdle .* %{ try %{ %opt{search_highlight_quit} search-highlight-clear } catch %{ map window normal ': search-highlight-clear' } unmap window prompt } } } } # remove the plugin's hooks define-command -hidden search-highlight-disable-impl %{ remove-hooks window search-highlight } ## begin public commands define-command -docstring %{ Enable search highlighting. Press in normal mode to clear highlighting of the current search. Respects the search_highlight_face option. } search-highlight-enable %{ search-highlight-enable-impl } define-command -docstring %{ Disable search highlighting. Respects the search_highlight_face option. } search-highlight-disable %{ search-highlight-disable-impl } ## end —