aboutsummaryrefslogtreecommitdiff
path: root/modules/textadept/snippets.lua
diff options
context:
space:
mode:
authormitchell <70453897+667e-11@users.noreply.github.com>2020-03-03 19:39:02 -0500
committermitchell <70453897+667e-11@users.noreply.github.com>2020-03-03 19:39:02 -0500
commitfceb1a37df623649d191c3c1a881e5b0538b1391 (patch)
tree87a34dfc2397dc4afdaa0c8ec189f037300f458e /modules/textadept/snippets.lua
parent1618f5017abb3c9bacc9ba346bf22a936ef5dd06 (diff)
downloadtextadept-fceb1a37df623649d191c3c1a881e5b0538b1391.tar.gz
textadept-fceb1a37df623649d191c3c1a881e5b0538b1391.zip
Added test suite and API type checking for more helpful error messages.
Diffstat (limited to 'modules/textadept/snippets.lua')
-rw-r--r--modules/textadept/snippets.lua16
1 files changed, 6 insertions, 10 deletions
diff --git a/modules/textadept/snippets.lua b/modules/textadept/snippets.lua
index 7bdfab7e..e59bc223 100644
--- a/modules/textadept/snippets.lua
+++ b/modules/textadept/snippets.lua
@@ -309,12 +309,6 @@ local function new_snippet(text, trigger)
end
placeholder.position = #snapshot.text
if placeholder.default then
- -- Execute any embedded code first.
- placeholder.default = placeholder.default:gsub('%%%b<>', function(s)
- return snippet:execute_code{lua_code = s:sub(3, -2)}
- end):gsub('%%%b[]', function(s)
- return snippet:execute_code{sh_code = s:sub(3, -2)}
- end)
if placeholder.default:find('%%%d+') then
-- Parses out embedded placeholders, adding them to this snippet's
-- snapshot.
@@ -595,8 +589,11 @@ snippet_mt = {
-- @name insert
function M.insert(text)
local trigger
- if not text then trigger, text = find_snippet(trigger) end
- if type(text) == 'function' and not trigger:find('^_') then text = text() end
+ if not assert_type(text, 'string/nil', 1) then
+ trigger, text = find_snippet(trigger)
+ if type(text) == 'function' and not trigger:find('^_') then text = text() end
+ assert_type(text, 'string/nil', trigger or '?')
+ end
local snippet = type(text) == 'string' and new_snippet(text, trigger) or
snippet_stack[#snippet_stack]
if snippet then snippet:next() else return false end
@@ -633,8 +630,7 @@ function M.select()
all_snippets[#all_snippets + 1], all_snippets[trigger] = trigger, snippet
end
table.sort(all_snippets)
- for i = 1, #all_snippets do
- local trigger = all_snippets[i]
+ for _, trigger in ipairs(all_snippets) do
items[#items + 1], items[#items + 2] = trigger, all_snippets[trigger]
end
local button, i = ui.dialogs.filteredlist{