summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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"