summaryrefslogtreecommitdiff
path: root/lua
diff options
context:
space:
mode:
authorSenghan Bright <senghan.bright@deltaprojects.com>2020-10-07 23:00:59 +0200
committerGitHub <noreply@github.com>2020-10-07 17:00:59 -0400
commitc337911b797485d112833f0e692aa6a2c3ce1f65 (patch)
tree1696884f6b1d5d623e7604ee39ee3777dc220202 /lua
parenta7957b2bdc5c3ce86092544448b4eb6ebcbb645e (diff)
Fix help preview and add highlighting to search result (#124)
* fix: make sure that `$VIMRUNTIME/doc/tags` is in `tags` path * feat: highlight matched topic in helptags preview * fixup: Use previewer setup and teardown Co-authored-by: TJ DeVries <devries.timothyj@gmail.com>
Diffstat (limited to 'lua')
-rw-r--r--lua/telescope/actions.lua3
-rw-r--r--lua/telescope/previewers.lua22
2 files changed, 22 insertions, 3 deletions
diff --git a/lua/telescope/actions.lua b/lua/telescope/actions.lua
index 026d5ad..c1e1d03 100644
--- a/lua/telescope/actions.lua
+++ b/lua/telescope/actions.lua
@@ -163,8 +163,7 @@ function actions.close(prompt_bufnr)
vim.api.nvim_win_close(prompt_win, true)
pcall(vim.cmd, string.format([[silent bdelete! %s]], prompt_bufnr))
-
- a.nvim_set_current_win(original_win_id)
+ pcall(a.nvim_set_current_win, original_win_id)
end
actions.set_command_line = function(prompt_bufnr)
diff --git a/lua/telescope/previewers.lua b/lua/telescope/previewers.lua
index 7187549..f57a0d6 100644
--- a/lua/telescope/previewers.lua
+++ b/lua/telescope/previewers.lua
@@ -368,13 +368,29 @@ end, {})
previewers.help = defaulter(function(_)
return previewers.new {
- preview_fn = function(_, entry, status)
+ setup = function()
+ return {}
+ end,
+
+ teardown = function(self)
+ if self.state and self.state.hl_id then
+ pcall(vim.fn.matchdelete, self.state.hl_id, self.state.hl_win)
+ self.state.hl_id = nil
+ end
+ end,
+
+ preview_fn = function(self, entry, status)
with_preview_window(status, nil, function()
local special_chars = ":~^.?/%[%]%*"
local escaped = vim.fn.escape(entry.value, special_chars)
local tagfile = vim.fn.expand("$VIMRUNTIME") .. '/doc/tags'
+ local old_tags = vim.o.tags
+
+ vim.o.tags = tagfile
local taglist = vim.fn.taglist('^' .. escaped .. '$', tagfile)
+ vim.o.tags = old_tags
+
if vim.tbl_isempty(taglist) then
taglist = vim.fn.taglist(escaped, tagfile)
end
@@ -385,6 +401,7 @@ previewers.help = defaulter(function(_)
local best_entry = taglist[1]
local new_bufnr = vim.fn.bufnr(best_entry.filename, true)
+
vim.api.nvim_buf_set_option(new_bufnr, 'filetype', 'help')
vim.api.nvim_win_set_buf(status.preview_win, new_bufnr)
@@ -402,6 +419,9 @@ previewers.help = defaulter(function(_)
vim.cmd "norm! gg"
vim.fn.search(search_query, "W")
vim.cmd "norm zt"
+
+ self.state.hl_win = status.preview_win
+ self.state.hl_id = vim.fn.matchadd('Search', search_query)
end)
end
}