mirror of
https://github.com/Ascyii/typstar.git
synced 2026-01-01 13:34:24 -05:00
feat(snip): series of numbered letters
This commit is contained in:
@@ -14,7 +14,7 @@ Available snippets can mostly be intuitively derived from [here](././lua/typstar
|
|||||||
|
|
||||||
Markup snippets:
|
Markup snippets:
|
||||||
- Begin inline math with `ll` and multiline math with `dm`
|
- Begin inline math with `ll` and multiline math with `dm`
|
||||||
- [Markup shorthands](./lua/typstar/snippets/markup.lua) (e.g. `HIG` → `#highlight[<cursor>]`, `IMP` → `$=>$ `)
|
- [Markup shorthands](./lua/typstar/snippets/markup.lua) (e.g. `HIG` → `#highlight[<cursor>]`, `IMP` → `$==>$ `)
|
||||||
- [ctheorems shorthands](./lua/typstar/snippets/markup.lua) (e.g. `tem` → empty theorem, `exa` → empty example)
|
- [ctheorems shorthands](./lua/typstar/snippets/markup.lua) (e.g. `tem` → empty theorem, `exa` → empty example)
|
||||||
- [Flashcards](#anki): `fla` and `flA`
|
- [Flashcards](#anki): `fla` and `flA`
|
||||||
- All above snippets support visual mode via the [selection key](#installation)
|
- All above snippets support visual mode via the [selection key](#installation)
|
||||||
@@ -24,6 +24,7 @@ Math snippets:
|
|||||||
- Alphanumeric characters: `:<char>` → `$<char>$ ` in markup (e.g. `:X` → `$X$ `, `:5` → `$5$ `)
|
- Alphanumeric characters: `:<char>` → `$<char>$ ` in markup (e.g. `:X` → `$X$ `, `:5` → `$5$ `)
|
||||||
- Greek letters: `;<latin>` → `<greek>` in math and `$<greek>$ ` in markup (e.g. `;a` → `alpha`/`$alpha$ `)
|
- Greek letters: `;<latin>` → `<greek>` in math and `$<greek>$ ` in markup (e.g. `;a` → `alpha`/`$alpha$ `)
|
||||||
- Common indices (numbers and letters `i-n`): `<letter><index> ` → `<letter>_<index> ` in math and `$<letter>$<index> ` → `$<letter>_<index>$ ` in markup (e.g `A314 ` → `A_314 `, `$alpha$n ` → `$alpha_n$ `)
|
- Common indices (numbers and letters `i-n`): `<letter><index> ` → `<letter>_<index> ` in math and `$<letter>$<index> ` → `$<letter>_<index>$ ` in markup (e.g `A314 ` → `A_314 `, `$alpha$n ` → `$alpha_n$ `)
|
||||||
|
- Series of numbered letters: `<letter> ot<optional last index> ` → `<letter>_1, <letter>_2, ... ` (e.g. `a ot ` → `a_1, a_2, ... `, `a ot4 ` → `a_1, a_2, a_3, a_4 `, `alpha ot k ` → `alpha_1, alpha_2, ..., alpha_k `)
|
||||||
- Wrapping of any mathematical expression (see [operations](./lua/typstar/snippets/visual.lua), works nested, multiline and in visual mode via the [selection key](#installation)): `<expression><operation>` → `<operation>(<expression>)` (e.g. `(a^2+b^2)rt` → `sqrt(a^2+b^2)`, `lambdatd` → `tilde(lambda)`, `(1+1)sQ` → `[1+1]`, `(1+1)sq` → `[(1+1)]`)
|
- Wrapping of any mathematical expression (see [operations](./lua/typstar/snippets/visual.lua), works nested, multiline and in visual mode via the [selection key](#installation)): `<expression><operation>` → `<operation>(<expression>)` (e.g. `(a^2+b^2)rt` → `sqrt(a^2+b^2)`, `lambdatd` → `tilde(lambda)`, `(1+1)sQ` → `[1+1]`, `(1+1)sq` → `[(1+1)]`)
|
||||||
- Matrices: `<size>ma` and `<size>lma` (e.g. `23ma` → 2x3 matrix)
|
- Matrices: `<size>ma` and `<size>lma` (e.g. `23ma` → 2x3 matrix)
|
||||||
|
|
||||||
|
|||||||
@@ -76,24 +76,41 @@ local get_index = function(_, snippet)
|
|||||||
return s(nil, t(letter .. '_' .. index))
|
return s(nil, t(letter .. '_' .. index))
|
||||||
end
|
end
|
||||||
|
|
||||||
table.insert(letter_snippets, snip(':([A-Za-z0-9])', '$<>$ ', { cap(1) }, markup))
|
local get_series = function(_, snippet)
|
||||||
table.insert(letter_snippets, snip(';(' .. trigger_greek .. ')', '$<>$ ', { d(1, get_greek) }, markup))
|
local letter, target = snippet.captures[1], snippet.captures[2]
|
||||||
table.insert(letter_snippets, snip(';(' .. trigger_greek .. ')', '<>', { d(1, get_greek) }, math))
|
local target_num = tonumber(target)
|
||||||
table.insert(
|
local result
|
||||||
letter_snippets,
|
if target_num then
|
||||||
|
local res = {}
|
||||||
|
for n = 1, target_num do
|
||||||
|
table.insert(res, string.format('%s_%d', letter, n))
|
||||||
|
if n ~= target_num then table.insert(res, ', ') end
|
||||||
|
end
|
||||||
|
result = table.concat(res, '')
|
||||||
|
else
|
||||||
|
result = string.format('%s_1, %s_2, ... %s_%s', letter, letter, letter, target)
|
||||||
|
end
|
||||||
|
return s(nil, t(result))
|
||||||
|
end
|
||||||
|
|
||||||
|
return {
|
||||||
|
-- latin/greek
|
||||||
|
snip(':([A-Za-z0-9])', '$<>$ ', { cap(1) }, markup),
|
||||||
|
snip(';(' .. trigger_greek .. ')', '$<>$ ', { d(1, get_greek) }, markup),
|
||||||
|
snip(';(' .. trigger_greek .. ')', '<>', { d(1, get_greek) }, math),
|
||||||
|
|
||||||
|
-- indices
|
||||||
snip(
|
snip(
|
||||||
'\\$(' .. trigger_index_pre .. ')\\$' .. '(' .. trigger_index_post .. ') ',
|
'\\$(' .. trigger_index_pre .. ')\\$' .. '(' .. trigger_index_post .. ') ',
|
||||||
'$<>$ ',
|
'$<>$ ',
|
||||||
{ d(1, get_index) },
|
{ d(1, get_index) },
|
||||||
markup,
|
markup,
|
||||||
500
|
500
|
||||||
)
|
),
|
||||||
)
|
snip('(' .. trigger_index_pre .. ')' .. '(' .. trigger_index_post .. ') ', '<> ', { d(1, get_index) }, math, 200),
|
||||||
table.insert(
|
|
||||||
letter_snippets,
|
|
||||||
snip('(' .. trigger_index_pre .. ')' .. '(' .. trigger_index_post .. ') ', '<> ', { d(1, get_index) }, math, 200)
|
|
||||||
)
|
|
||||||
|
|
||||||
return {
|
-- series of numbered letters
|
||||||
|
snip('(' .. trigger_index_pre .. ') ot ', '<>_1, <>_2, ... ', { cap(1), cap(1) }, math), -- a_1, a_2, ...
|
||||||
|
snip('(' .. trigger_index_pre .. ') ot(\\w+) ', '<> ', { d(1, get_series) }, math), -- a_1, a_2, ... a_j or a_1, a_2, a_2, a_3, a_4, a_5
|
||||||
unpack(letter_snippets),
|
unpack(letter_snippets),
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user