diff options
author | mitchell <70453897+orbitalquark@users.noreply.github.com> | 2020-11-10 11:06:53 -0500 |
---|---|---|
committer | mitchell <70453897+orbitalquark@users.noreply.github.com> | 2020-11-10 11:06:53 -0500 |
commit | 269f42273129fcfbaf67e157d8784666e0c65c9c (patch) | |
tree | 4e5e9c7568edd3834f0585f40bcf609a68ef561e /modules/ansi_c | |
parent | 87a11d65ee576d965bcf432e878f191512e46bdd (diff) |
Fill `keys` and `snippet` tables with language-specific tables on init.
This allows users and language modules to easily add bindings and snippets
without stepping on each other.
Diffstat (limited to 'modules/ansi_c')
-rw-r--r-- | modules/ansi_c/init.lua | 64 |
1 files changed, 26 insertions, 38 deletions
diff --git a/modules/ansi_c/init.lua b/modules/ansi_c/init.lua index 3f5288c4..af6955a6 100644 --- a/modules/ansi_c/init.lua +++ b/modules/ansi_c/init.lua @@ -85,45 +85,33 @@ for _, tags in ipairs(M.tags) do table.insert(textadept.editing.api_files.ansi_c, (tags:gsub('tags$', 'api'))) end --- Commands. - ---- --- Table of C-specific key bindings. --- @class table --- @name _G.keys.ansi_c -keys.ansi_c = {} - -- Snippets. ---- --- Table of C-specific snippets. --- @class table --- @name _G.snippets.ansi_c -snippets.ansi_c = { - func = '%1(int) %2(name)(%3(args)) {\n\t%0\n\treturn %4(0);\n}', - vfunc = 'void %1(name)(%2(args)) {\n\t%0\n}', - ['if'] = 'if (%1) {\n\t%0\n}', - eif = 'else if (%1) {\n\t%0\n}', - ['else'] = 'else {\n\t%0\n}', - ['for'] = 'for (%1; %2; %3) {\n\t%0\n}', - ['fori'] = 'for (%1(int) %2(i) = %3(0); %2 %4(<) %5(count); %2%6(++)) {\n'.. - '\t%0\n}', - ['while'] = 'while (%1) {\n\t%0\n}', - ['do'] = 'do {\n\t%0\n} while (%1);', - sw = 'switch (%1) {\n\tcase %2:\n\t\t%0\n\t\tbreak;\n}', - case = 'case %1:\n\t%0\n\tbreak;', - - st = 'struct %1(name) {\n\t%0\n};', - td = 'typedef %1(int) %2(name_t);', - tds = 'typedef struct %1(name) {\n\t%0\n} %1%2(_t);', - - def = '#define %1(name) %2(value)', - inc = '#include "%1"', - Inc = '#include <%1>', - pif = '#if %1\n%0\n#endif', - - main = 'int main(int argc, const char **argv) {\n\t%0\n\treturn 0;\n}', - printf = 'printf("%1(%s)\\n", %2);', -} +local snip = snippets.ansi_c + +snip.func = '%1(int) %2(name)(%3(args)) {\n\t%0\n\treturn %4(0);\n}' +snip.vfunc = 'void %1(name)(%2(args)) {\n\t%0\n}' +snip['if'] = 'if (%1) {\n\t%0\n}' +snip.eif = 'else if (%1) {\n\t%0\n}' +snip['else'] = 'else {\n\t%0\n}' +snip['for'] = 'for (%1; %2; %3) {\n\t%0\n}' +snip['fori'] = + 'for (%1(int) %2(i) = %3(0); %2 %4(<) %5(count); %2%6(++)) {\n\t%0\n}' +snip['while'] = 'while (%1) {\n\t%0\n}' +snip['do'] = 'do {\n\t%0\n} while (%1);' +snip.sw = 'switch (%1) {\n\tcase %2:\n\t\t%0\n\t\tbreak;\n}' +snip.case = 'case %1:\n\t%0\n\tbreak;' + +snip.st = 'struct %1(name) {\n\t%0\n};' +snip.td = 'typedef %1(int) %2(name_t);' +snip.tds = 'typedef struct %1(name) {\n\t%0\n} %1%2(_t);' + +snip.def = '#define %1(name) %2(value)' +snip.inc = '#include "%1"' +snip.Inc = '#include <%1>' +snip.pif = '#if %1\n%0\n#endif' + +snip.main = 'int main(int argc, const char **argv) {\n\t%0\n\treturn 0;\n}' +snip.printf = 'printf("%1(%s)\\n", %2);' return M |