diff options
| author | Senghan Bright <senghan.bright@deltaprojects.com> | 2020-10-07 23:00:59 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-10-07 17:00:59 -0400 |
| commit | c337911b797485d112833f0e692aa6a2c3ce1f65 (patch) | |
| tree | 1696884f6b1d5d623e7604ee39ee3777dc220202 /lua | |
| parent | a7957b2bdc5c3ce86092544448b4eb6ebcbb645e (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.lua | 3 | ||||
| -rw-r--r-- | lua/telescope/previewers.lua | 22 |
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 } |
