From 556a0fa7dd9fe28898d2922b304fa86e8318aad3 Mon Sep 17 00:00:00 2001 From: mitchell <70453897+667e-11@users.noreply.github.com> Date: Mon, 27 Jun 2016 22:06:46 -0400 Subject: Show file-based snippets in the selection dialog; modules/textadept/snippets.lua --- modules/textadept/snippets.lua | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) (limited to 'modules') diff --git a/modules/textadept/snippets.lua b/modules/textadept/snippets.lua index 0a44c2b2..f519f07e 100644 --- a/modules/textadept/snippets.lua +++ b/modules/textadept/snippets.lua @@ -379,11 +379,22 @@ function M._select() for trigger, text in pairs(snippets) do if type(text) == 'string' then list[#list + 1] = trigger..'|'..text end end - if snippets[buffer:get_lexer(true)] then - for trigger, text in pairs(snippets[buffer:get_lexer(true)]) do + local lexer = buffer:get_lexer(true) + if snippets[lexer] then + for trigger, text in pairs(snippets[lexer]) do if type(text) == 'string' then list[#list + 1] = trigger..'|'..text end end end + for i = 1, #M._paths do + for basename in lfs.dir(M._paths[i]) do + local first, second = basename:match('^([^.]+)%.?([^.]*)') + if second == '' or first == lexer then + local f = io.open(M._paths[i]..'/'..basename) + list[#list + 1] = (second ~= '' and second or first)..'|'..f:read('*a') + f:close() + end + end + end table.sort(list) for i = 1, #list do items[#items + 1], items[#items + 2] = list[i]:match('^([^|]+)|(.+)$') -- cgit v1.2.3