aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormitchell <70453897+667e-11@users.noreply.github.com>2011-03-18 16:43:23 -0400
committermitchell <70453897+667e-11@users.noreply.github.com>2011-03-18 16:43:23 -0400
commit33a56d686ee06931ff18f1521f59780e7b8493b8 (patch)
treed5ba6c0491f866a00713584839c06458cf819cf3
parent32afa4357a5990f8bca19a514b1ebc03cb7c4848 (diff)
downloadtextadept-33a56d686ee06931ff18f1521f59780e7b8493b8.tar.gz
textadept-33a56d686ee06931ff18f1521f59780e7b8493b8.zip
Fixed snippet bugs; modules/textadept/snippets.lua
-rw-r--r--modules/textadept/snippets.lua11
1 files changed, 6 insertions, 5 deletions
diff --git a/modules/textadept/snippets.lua b/modules/textadept/snippets.lua
index 6f4c10a2..baac7782 100644
--- a/modules/textadept/snippets.lua
+++ b/modules/textadept/snippets.lua
@@ -172,7 +172,7 @@ end
-- @param code The Lua code to run.
-- @return string result from the code run.
local function run_lua_code(code)
- code = unhandle_escapes(code)
+ code = unescape(unhandle_escapes(code))
local env = setmetatable({ selected_text = buffer:get_sel_text() },
{ __index = _G })
local _, val = pcall(setfenv(loadstring('return '..code), env))
@@ -203,8 +203,10 @@ local function next_tab_stop()
local function transform_mirror(mirror)
local pattern, replacement = mirror:match('^%(([^|]+)|(.+)%)$')
if not pattern and not replacement then return ph_text end
- return ph_text:gsub(unhandle_escapes(pattern), function(...)
+ pattern = unescape(unhandle_escapes(pattern))
+ return ph_text:gsub(pattern, function(...)
local arg = {...}
+ replacement = unescape(unhandle_escapes(replacement))
local repl = replacement:gsub('%%(%d+)', function(i)
return arg[tonumber(i)] or ''
end)
@@ -357,9 +359,8 @@ function _insert(s_text)
snippet.start_pos = start or caret
snippet.prev_sel_text = buffer:get_sel_text()
snippet.index, snippet.max_index = 0, 0
- for i in s_text:gsub('(%%%d+)%b()', '%1'):gmatch('%%(%d+)') do
- -- placeholders may contain Lua code that has %n sequences that mess up
- -- this calculation; the above gsub accounts for this
+ _G.print(s_text)
+ for i in s_text:gmatch('%%(%d+)') do
i = tonumber(i)
if i > snippet.max_index then snippet.max_index = i end
end