diff options
| author | ibhagwan <59988195+ibhagwan@users.noreply.github.com> | 2022-03-26 02:29:34 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-03-26 10:29:34 +0100 |
| commit | cf2d6d34282afd90f0f5d2aba265a23b068494c2 (patch) | |
| tree | bba4f4d0a4c44337b5d7fbdcab1352235ec8aa4a /lua/telescope | |
| parent | 40c1e88904d8674d597634ec2db90d51b46795ec (diff) | |
fix (tags|btags): escape all special characters (#1806)
Diffstat (limited to 'lua/telescope')
| -rw-r--r-- | lua/telescope/builtin/files.lua | 10 | ||||
| -rw-r--r-- | lua/telescope/previewers/buffer_previewer.lua | 10 |
2 files changed, 12 insertions, 8 deletions
diff --git a/lua/telescope/builtin/files.lua b/lua/telescope/builtin/files.lua index 893588f..99c6447 100644 --- a/lua/telescope/builtin/files.lua +++ b/lua/telescope/builtin/files.lua @@ -431,10 +431,12 @@ files.tags = function(opts) local selection = action_state.get_selected_entry() if selection.scode then - local scode = string.gsub(selection.scode, "[$]$", "") - scode = string.gsub(scode, [[\\]], [[\]]) - scode = string.gsub(scode, [[\/]], [[/]]) - scode = string.gsub(scode, "[*]", [[\*]]) + -- un-escape / then escape required + -- special chars for vim.fn.search() + -- ] ~ * + local scode = selection.scode:gsub([[\/]], "/"):gsub("[%]~*]", function(x) + return "\\" .. x + end) vim.cmd "norm! gg" vim.fn.search(scode) diff --git a/lua/telescope/previewers/buffer_previewer.lua b/lua/telescope/previewers/buffer_previewer.lua index 70e08d0..0ba9322 100644 --- a/lua/telescope/previewers/buffer_previewer.lua +++ b/lua/telescope/previewers/buffer_previewer.lua @@ -484,10 +484,12 @@ previewers.ctags = defaulter(function(_) local determine_jump = function(entry) if entry.scode then return function(self) - local scode = string.gsub(entry.scode, "[$]$", "") - scode = string.gsub(scode, [[\\]], [[\]]) - scode = string.gsub(scode, [[\/]], [[/]]) - scode = string.gsub(scode, "[*]", [[\*]]) + -- un-escape / then escape required + -- special chars for vim.fn.search() + -- ] ~ * + local scode = entry.scode:gsub([[\/]], "/"):gsub("[%]~*]", function(x) + return "\\" .. x + end) pcall(vim.fn.matchdelete, self.state.hl_id, self.state.winid) vim.cmd "norm! gg" |
