summaryrefslogtreecommitdiff
path: root/lua/telescope/builtin
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/telescope/builtin
parent40c1e88904d8674d597634ec2db90d51b46795ec (diff)
fix (tags|btags): escape all special characters (#1806)
Diffstat (limited to 'lua/telescope/builtin')
-rw-r--r--lua/telescope/builtin/files.lua10
1 files changed, 6 insertions, 4 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)