From 3ec82a9a80f79e2468e8b415ac8d835ffff5d210 Mon Sep 17 00:00:00 2001 From: mitchell <70453897+667e-11@users.noreply.github.com> Date: Fri, 18 May 2018 09:16:28 -0400 Subject: Only interpret \uXXXX in regex replacements and ignore \xYY. \xYY may not yield UTF-8 characters. --- modules/textadept/find.lua | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'modules/textadept/find.lua') diff --git a/modules/textadept/find.lua b/modules/textadept/find.lua index 0757a013..c1a664c8 100644 --- a/modules/textadept/find.lua +++ b/modules/textadept/find.lua @@ -316,9 +316,12 @@ end local function replace(rtext) if buffer.selection_empty then return end if M.in_files then M.in_files = false end - rtext = rtext:gsub('\\u(%x%x%x%x)', function(code) - return utf8.char(tonumber(code, 16)) - end):gsub('\\x(%x%x)', function(c) return string.char(tonumber(c, 16)) end) + if M.regex then + -- Interpret \uXXXX sequences, just like with \n, \t, etc. + rtext = rtext:gsub('%f[\\]\\u(%x%x%x%x)', function(code) + return utf8.char(tonumber(code, 16)) + end) + end buffer:target_from_selection() buffer[not M.regex and 'replace_target' or 'replace_target_re'](buffer, rtext) buffer:set_sel(buffer.target_start, buffer.target_end) -- cgit v1.2.3