diff --git a/lua/typstar/snippets/letters.lua b/lua/typstar/snippets/letters.lua index 6d07553..50b661c 100644 --- a/lua/typstar/snippets/letters.lua +++ b/lua/typstar/snippets/letters.lua @@ -1,7 +1,11 @@ local helper = require('typstar.autosnippets') local snip = helper.snip +local cap = helper.cap +local math = helper.in_math +local markup = helper.in_markup -local letters = { +local letter_snippets = {} +local greek_letters = { { 'a', 'alpha' }, { 'A', 'Alpha' }, { 'b', 'beta' }, { 'B', 'Beta' }, { 'c', 'chi' }, { 'C', 'Chi' }, @@ -24,13 +28,32 @@ local letters = { { 'x', 'xi' }, { 'X', 'xi' }, { 'z', 'zeta' }, { 'Z', 'Zeta' }, } +local latin_letters = { 'f', 'u', 'v', 'w', 'y' } -- remaining ones are added dynamically +local common_indices = { '%d+', 'i', 'j', 'k', 'n' } -local letter_snippets = {} +for _, letter in ipairs({ unpack(latin_letters) }) do + table.insert(latin_letters, letter:upper()) +end -for _, val in pairs(letters) do - table.insert(letter_snippets, snip(';' .. val[1], val[2], {}, helper.in_math)) - table.insert(letter_snippets, snip(';' .. val[1], '$' .. val[2] .. '$ ', {}, helper.in_markup)) - table.insert(letter_snippets, snip(':' .. val[1], '$' .. val[1] .. '$ ', {}, helper.in_markup)) +local generate_index_snippets = function(letter) + for _, index in pairs(common_indices) do + table.insert(letter_snippets, + snip(letter .. '(' .. index .. ') ', letter .. '_(<>) ', { cap(1) }, math, 200)) + table.insert(letter_snippets, + snip('$' .. letter .. '$(' .. index .. ') ', '$' .. letter .. '_(<>)$ ', { cap(1) }, markup, 200)) + end +end + +for _, val in pairs(greek_letters) do + table.insert(letter_snippets, snip(';' .. val[1], val[2], {}, math)) + table.insert(letter_snippets, snip(';' .. val[1], '$' .. val[2] .. '$ ', {}, markup)) + generate_index_snippets(val[2]) + table.insert(latin_letters, val[1]) +end + +for _, letter in pairs(latin_letters) do + generate_index_snippets(letter) + table.insert(letter_snippets, snip(':' .. letter, '$' .. letter .. '$ ', {}, markup)) end return { diff --git a/lua/typstar/snippets/math.lua b/lua/typstar/snippets/math.lua index 7c475db..691faf5 100644 --- a/lua/typstar/snippets/math.lua +++ b/lua/typstar/snippets/math.lua @@ -62,6 +62,7 @@ return { snip('iso', 'tilde.equiv ', {}, math), snip('rrn', 'RR^n ', {}, math), snip('cc', 'cases(\n\t<>\n)\\', { i(1, '1') }, math), + snip('pi', 'pi ', {}, math), snip('(.*)iv', '<>^(-1)', { cap(1) }, math), snip('(.*)sr', '<>^(2)', { cap(1) }, math), snip('(.*)rd', '<>^(<>)', { cap(1), i(1, 'n') }, math),