65 lines
2.4 KiB
Text
65 lines
2.4 KiB
Text
## kak-search-highlight: interactive highlighting of search terms
|
|
## Author: Daniel Fichtinger <daniel@ficd.ca> 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
|
|
|
|
# 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 %{
|
|
# 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 %{
|
|
# 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'
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
# 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 <esc> 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
|
|
—
|