summaryrefslogtreecommitdiff
path: root/lua
diff options
context:
space:
mode:
authoribhagwan <59988195+ibhagwan@users.noreply.github.com>2022-03-26 02:29:34 -0700
committerGitHub <noreply@github.com>2022-03-26 10:29:34 +0100
commitcf2d6d34282afd90f0f5d2aba265a23b068494c2 (patch)
treebba4f4d0a4c44337b5d7fbdcab1352235ec8aa4a /lua
parent40c1e88904d8674d597634ec2db90d51b46795ec (diff)
fix (tags|btags): escape all special characters (#1806)
Diffstat (limited to 'lua')
-rw-r--r--lua/telescope/builtin/files.lua10
-rw-r--r--lua/telescope/previewers/buffer_previewer.lua10
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"