From cf2d6d34282afd90f0f5d2aba265a23b068494c2 Mon Sep 17 00:00:00 2001 From: ibhagwan <59988195+ibhagwan@users.noreply.github.com> Date: Sat, 26 Mar 2022 02:29:34 -0700 Subject: [PATCH] fix (tags|btags): escape all special characters (#1806) --- lua/telescope/builtin/files.lua | 10 ++++++---- 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"