From 97efdf064e48e7f3ee224f3bce0baec01b00ea76 Mon Sep 17 00:00:00 2001 From: arne314 <73391160+arne314@users.noreply.github.com> Date: Tue, 26 Aug 2025 21:14:35 +0200 Subject: [PATCH] feat(snip): `otn` for generic number series --- README.md | 2 +- lua/typstar/engine.lua | 2 +- lua/typstar/snippets/letters.lua | 1 + 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 2c7bc24..903ef98 100644 --- a/README.md +++ b/README.md @@ -31,7 +31,7 @@ Markup snippets: Math snippets: - [Many shorthands](./lua/typstar/snippets/math.lua) for mathematical expressions -- Series of numbered letters: ` ot ` → `_1, _2, ... ` (e.g. `a ot ` → `a_1, a_2, ... `, `a ot4 ` → `a_1, a_2, a_3, a_4 `, `alpha otk ` → `alpha_1, alpha_2, ..., alpha_k `) +- Series of numbered letters: ` ot ` → `_1, _2, ... ` (e.g. `a ot ` → `a_1, a_2, ... `, `a ot4 ` → `a_1, a_2, a_3, a_4 `, `alpha otk ` → `alpha_1, alpha_2, ..., alpha_k `, `oti ` → `1, 2, ..., i `) - Wrapping of any mathematical expression (see [operations](./lua/typstar/snippets/visual.lua), works nested, multiline and in visual mode via the [selection key](#installation)): `` → `()` (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)]`) - Simple functions: `fo ` → `f() ` (e.g. `fox ` → `f(x) `, `ao5 ` → `a(5) `) - Matrices: `ma` and `lma` (e.g. `23ma` → 2x3 matrix) diff --git a/lua/typstar/engine.lua b/lua/typstar/engine.lua index 54d1dff..914f68e 100644 --- a/lua/typstar/engine.lua +++ b/lua/typstar/engine.lua @@ -124,7 +124,7 @@ function M.engine(trigger, opts) -- custom word trig local from = #line - #whole + 1 - if opts.wordTrig and from ~= 1 and string.match(string.sub(line, from - 1, from - 1), '[%w.]') ~= nil then + if opts.wordTrig and from ~= 1 and string.match(line:sub(from - 1, from - 1), '[%w._]') ~= nil then return nil end diff --git a/lua/typstar/snippets/letters.lua b/lua/typstar/snippets/letters.lua index 7eaed12..fba50d8 100644 --- a/lua/typstar/snippets/letters.lua +++ b/lua/typstar/snippets/letters.lua @@ -129,6 +129,7 @@ return { ), -- series of numbered letters + snip('ot(\\w) ', '1, 2, ..., <> ', { cap(1) }, math, 800), -- 1, 2, ..., n 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, 1000, { maxTrigLength = 13 }), -- a_1, a_2, ... a_j or a_1, a_2, a_2, a_3, a_4, a_5