dotfiles

personal dotfiles
git clone anongit@rnpnr.xyz:dotfiles.git
Log | Files | Refs | Feed | Submodules

Commit: 740408d5f1ab3d203b569e7eb229ba30109fa567
Parent: 646acdf59616a13546950e92725bcbc232fff58e
Author: Randy Palamar
Date:   Thu, 13 Apr 2023 09:06:16 -0600

vis: macros.lua: use helper function to chain functions

Diffstat:
M.config/vis/macros.lua | 56++++++++++++++++++++++++++++++++++++--------------------
1 file changed, 36 insertions(+), 20 deletions(-)

diff --git a/.config/vis/macros.lua b/.config/vis/macros.lua @@ -1,32 +1,48 @@ require('util') -local function macros(win) - local function fi(str, fkeys) - return function () - local win = vis.win - local pos = win.selection.pos - win.file:insert(pos, str) - win.selection.pos = pos + #str - vis:feedkeys(fkeys) - return true - end +-- function chain +local function fc(argv) + return function () + for _, f in ipairs(argv) do f() end + return true end +end + +-- insert +local function ins(str) + return function () + local win = vis.win + local pos = win.selection.pos + win.file:insert(pos, str) + win.selection.pos = pos + #str + return true + end +end +-- feedkeys +local function fk(fkeys) + return function () + vis:feedkeys(fkeys) + return true + end +end + +local function macros(win) local m = vis.modes local lang = {} lang['.tex'] = { - { m.NORMAL, "\\al", fi("\\begin{align*}\n\\end{align*}", "O") }, - { m.NORMAL, "\\bf", fi("\\textbf{}", "hi") }, - { m.NORMAL, "\\ca", fi("\\begin{cases}\n\\end{cases}", "O") }, - { m.NORMAL, "\\cb", fi("\\begin{center}\n\\colorboxed{blue}{\n}\n\\end{center}", "kO") }, - { m.NORMAL, "\\en", fi("\\begin{enumerate}\n\n\\item \n\n\\end{enumerate}", "kkA") }, - { m.NORMAL, "\\eq", fi("\\begin{equation}\n\\end{equation}", "O") }, - { m.NORMAL, "\\it", fi("\\begin{itemize}\n\n\\item \n\n\\end{itemize}", "kkA") }, - { m.NORMAL, "\\se", fi("\\section{}", "hi") }, - { m.NORMAL, "\\su", fi("\\subsection{}", "hi") }, + { m.NORMAL, "\\al", fc({ ins("\\begin{align*}\n\\end{align*}"), fk("O") }) }, + { m.NORMAL, "\\bf", fc({ ins("\\textbf{}"), fk("hi") }) }, + { m.NORMAL, "\\ca", fc({ ins("\\begin{cases}\n\\end{cases}"), fk("O") }) }, + { m.NORMAL, "\\cb", fc({ ins("\\begin{center}\n\\colorboxed{blue}{\n}\n\\end{center}"), fk("kO") }) }, + { m.NORMAL, "\\en", fc({ ins("\\begin{enumerate}\n\n\\item \n\n\\end{enumerate}"), fk("kkA") }) }, + { m.NORMAL, "\\eq", fc({ ins("\\begin{equation*}\n\\end{equation*}"), fk("O") }) }, + { m.NORMAL, "\\it", fc({ ins("\\begin{itemize}\n\n\\item \n\n\\end{itemize}"), fk("kkA") }) }, + { m.NORMAL, "\\se", fc({ ins("\\section{}"), fk("hi") }) }, + { m.NORMAL, "\\su", fc({ ins("\\subsection{}"), fk("hi") }) }, } lang['.hs'] = { - { m.NORMAL, "gq", fi("", "vip:|hindent<Enter><Escape>") }, + { m.NORMAL, "gq", fk("vip:|hindent<Enter><Escape>") }, } local _, e = util:splitext(win.file.name)