2023-01-10 02:38:06 +01:00
|
|
|
local A = require("my.abbreviations")
|
|
|
|
local scrap = require("scrap")
|
|
|
|
|
|
|
|
require("my.helpers.wrapMovement").setup()
|
|
|
|
|
|
|
|
vim.opt.conceallevel = 0
|
|
|
|
|
|
|
|
-- vim.opt.foldcolumn = "1"
|
|
|
|
vim.opt.foldexpr = "nvim_treesitter#foldexpr()"
|
|
|
|
vim.opt.foldmethod = "expr"
|
|
|
|
|
2023-07-06 21:34:24 +02:00
|
|
|
-- {{{ Older functions for calculating things inside vim
|
2023-01-10 02:38:06 +01:00
|
|
|
-- vim.keymap.set("n", "<leader>lg", function()
|
|
|
|
-- if not pcall(function()
|
|
|
|
-- local a = tonumber(vim.fn.input("A: "))
|
|
|
|
-- local b = tonumber(vim.fn.input("B: "))
|
|
|
|
--
|
|
|
|
-- local g, x, y = require("my.helpers.math.mod").gcd(a, b)
|
|
|
|
--
|
|
|
|
-- vim.fn.input("Result: " .. g .. " " .. x .. " " .. y)
|
|
|
|
-- end) then vim.fn.input("No results exist") end
|
|
|
|
-- end, { buffer = true, desc = "Gcd calculator" })
|
|
|
|
--
|
|
|
|
-- vim.keymap.set("n", "<leader>li", function()
|
|
|
|
-- if not pcall(function()
|
|
|
|
-- local class = tonumber(vim.fn.input("Mod class: "))
|
|
|
|
-- local num = tonumber(vim.fn.input("Number: "))
|
|
|
|
--
|
|
|
|
-- vim.fn.input("Result: " .. require("my.helpers.math.mod").modinverse(num, class))
|
|
|
|
-- end) then vim.fn.input("No results exist") end
|
|
|
|
-- end, { buffer = true, desc = "Mod inverse calculator" })
|
2023-07-06 21:34:24 +02:00
|
|
|
-- }}}
|
2023-01-10 02:38:06 +01:00
|
|
|
|
|
|
|
local abbreviations = {
|
|
|
|
-- Greek chars
|
|
|
|
{ "eps", "\\epsilon" },
|
|
|
|
{ "delta", "\\delta" },
|
|
|
|
{ "Delta", "\\Delta" },
|
|
|
|
{ "pi", "\\pi" },
|
|
|
|
{ "psi", "\\psi" },
|
|
|
|
{ "alpha", "\\alpha" },
|
|
|
|
{ "beta", "\\beta" },
|
|
|
|
{ "theta", "\\theta" },
|
|
|
|
{ "gamma", "\\gamma" },
|
|
|
|
{ "lam", "\\lambda" },
|
2023-07-06 21:34:24 +02:00
|
|
|
{ "lambda", "\\lambda" },
|
|
|
|
{ "omega", "\\omega" },
|
|
|
|
{ "Omega", "\\Omega" },
|
2023-01-10 02:38:06 +01:00
|
|
|
{ "nuls", "\\varnothing" }, -- Other fancy symvols
|
|
|
|
|
|
|
|
{ "tmat", "^T" }, -- Tranpose of a matrix
|
|
|
|
{ "cmat", "^*" }, -- Conjugate of a matrix
|
2023-07-06 21:34:24 +02:00
|
|
|
{ "sneg", "^C" }, -- Set complement
|
2023-01-10 02:38:06 +01:00
|
|
|
{ "ortco", "^{\\bot}" }, -- Orthogonal complement
|
|
|
|
{ "sinter", "^{\\circ}" }, -- Interior of a set
|
|
|
|
|
|
|
|
-- Basic commands
|
|
|
|
{ "mangle", "\\measuredangle" },
|
|
|
|
{ "aangle", "\\angle" },
|
|
|
|
|
|
|
|
{ "sdiff", "\\setminus" },
|
|
|
|
{ "sst", "\\subset" },
|
|
|
|
{ "sseq", "\\subseteq" },
|
|
|
|
{ "nin", "\\not\\in" },
|
|
|
|
{ "iin", "\\in" },
|
|
|
|
{ "tto", "\\to" },
|
|
|
|
{ "iip", "\\implies" },
|
2023-02-19 02:41:22 +01:00
|
|
|
{ "iib", "\\impliedby" },
|
2023-01-10 02:38:06 +01:00
|
|
|
{ "land", "\\land" },
|
|
|
|
{ "lor", "\\lor" },
|
|
|
|
{ "ssin", "\\sin" },
|
|
|
|
{ "ccos", "\\cos" },
|
|
|
|
{ "ttan", "\\ttan" },
|
|
|
|
{ "ssec", "\\sec" },
|
|
|
|
{ "lln", "\\ln" },
|
|
|
|
{ "frl", "\\forall" },
|
|
|
|
{ "exs", "\\exists" },
|
|
|
|
{ "iinf", "\\infty" },
|
|
|
|
{ "ninf", "-\\infty" },
|
|
|
|
{ "nlnl", "\\pm" }, -- had this as npnp first but it was hard-ish to type
|
|
|
|
{ "ccup", "\\cup" },
|
|
|
|
{ "ccap", "\\cap" },
|
|
|
|
{ "nope", "\\bot" },
|
|
|
|
{ "yee", "\\top" },
|
|
|
|
{ "ccan", "\\cancel" },
|
|
|
|
{ "comp", "\\circ" },
|
|
|
|
{ "mul", "\\cdot" },
|
|
|
|
{ "smul", "\\times" },
|
|
|
|
{ "card", "\\#" },
|
|
|
|
{ "div", "\\|" },
|
|
|
|
{ "ndiv", "\\not\\|\\:" },
|
2023-02-28 15:03:25 +01:00
|
|
|
{ "perp", "\\perp" },
|
2023-03-12 05:24:25 +01:00
|
|
|
{ "abs", "\\abs" }, -- custom abs command
|
|
|
|
{ "norm", "\\norm" }, -- custom norm command
|
2023-02-28 15:03:25 +01:00
|
|
|
{ "iprod", "\\iprod" }, -- custom inner product command
|
2023-07-06 21:34:24 +02:00
|
|
|
{ "diprod", "\\dprod" }, -- custom self inner product command
|
|
|
|
{ "prob", "\\prob" }, -- custom probability function
|
2023-01-10 02:38:06 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
-- Todo: convert exponents and subscripts
|
|
|
|
-- to use this more concise notation.
|
|
|
|
local abolishAbbreviations = {
|
|
|
|
-- General phrases
|
|
|
|
{ "thrf", "therefore" },
|
|
|
|
{ "bcla", "by contradiction let's assume" },
|
|
|
|
{ "wlg", "without loss of generality" },
|
2023-01-22 01:22:38 +01:00
|
|
|
{ "tits", "that is to say," },
|
|
|
|
{ "wpbd", "we will prove the statement in both directions." },
|
2023-01-10 02:38:06 +01:00
|
|
|
{ "stam{,s}", "statement{}" },
|
2023-01-22 01:22:38 +01:00
|
|
|
{ "{ww,tt}{m,i}", "{which,this} {means,implies}" },
|
|
|
|
{ "cex{,s}", "counterexample{}" },
|
|
|
|
{ "er{t,s,r}", "{transitivity,symmetry,reflexivity}" },
|
2023-01-10 02:38:06 +01:00
|
|
|
|
2023-07-06 21:34:24 +02:00
|
|
|
-- Calculus & analysis
|
2023-01-10 02:38:06 +01:00
|
|
|
{ "ib{p,s}", "integration by {parts,substitution}" },
|
2023-07-06 21:34:24 +02:00
|
|
|
{ "nb{,h}{,s}", "neighbour{,hood}{}" },
|
2023-01-10 02:38:06 +01:00
|
|
|
|
|
|
|
-- Linear algebra
|
2023-07-06 21:34:24 +02:00
|
|
|
{ "rref", "reduced row echalon form" },
|
2023-01-10 02:38:06 +01:00
|
|
|
{ "eg{va,ve,p}{,s}", "eigen{value,vector,pair}{}" },
|
|
|
|
{ "mx{,s}", "matri{x,ces}" },
|
|
|
|
{ "dete{,s}", "determinant{}" },
|
|
|
|
{ "ort{n,g}", "orto{normal,gonal}" },
|
|
|
|
{ "l{in,de}", "linearly {independent,dependent}" },
|
2023-02-19 02:41:22 +01:00
|
|
|
{ "lcon{,s}", "linear combination{}" },
|
|
|
|
{ "vsm", "\\vecspace" }, -- math vector space
|
|
|
|
{ "vst{,s}", "vector space{,s}" }, -- text vector space
|
2023-04-03 03:06:51 +02:00
|
|
|
{
|
|
|
|
"rizz", -- ok please ignore this one 💀
|
|
|
|
"Riesz vector",
|
|
|
|
options = A.no_capitalization,
|
|
|
|
},
|
2023-01-10 02:38:06 +01:00
|
|
|
|
2023-01-22 01:22:38 +01:00
|
|
|
-- Graph theory
|
|
|
|
{ "vx{,s}", "vert{ex,ices}" },
|
2023-07-06 21:34:24 +02:00
|
|
|
{ "edg{,s}", "edge{}" },
|
2023-01-22 01:22:38 +01:00
|
|
|
|
2023-04-17 22:33:56 +02:00
|
|
|
-- Linear systems
|
|
|
|
-- Note: we must add the space inside the {} in order for capitalization to work!
|
|
|
|
{ "{{s,o,l},}deq{s,}", "{{scalar,ordinary,linear} ,}differential equation{}" },
|
|
|
|
|
2023-01-22 01:22:38 +01:00
|
|
|
-- Graph theory function syntax:
|
|
|
|
-- gt[function]{graph}{modifier}
|
|
|
|
-- - function:
|
|
|
|
-- - basic functions: e/E/v/G/L
|
|
|
|
-- - k => connectivity
|
|
|
|
-- - a => size of the biggest stable set
|
|
|
|
-- - w => size of the biggest clique
|
|
|
|
-- - d => biggest degree
|
|
|
|
-- - c{target}{kind} => {target} {kind} chromatic number
|
|
|
|
-- - target:
|
|
|
|
-- - vertices by default
|
|
|
|
-- - e => edges
|
|
|
|
-- - kind:
|
|
|
|
-- - normal by default
|
|
|
|
-- - l => list
|
|
|
|
-- - graph:
|
|
|
|
-- - G by default
|
|
|
|
-- - s/x/y/h => S/X/Y/H
|
|
|
|
-- - modifier:
|
|
|
|
-- - a => '
|
|
|
|
-- - 1/2 => _k
|
|
|
|
{
|
|
|
|
"gt{{e,E,v,V,L},k,a,w,d,md{,e},c{,e}{,l}}{,s,h,x,y}{,a,1,2}",
|
|
|
|
"{{},\\kappa,\\alpha,\\omega,\\Delta,\\delta{,'},\\chi{,'}{,_l}}({G,S,H,X,Y}{,',_1,_2})",
|
2023-03-14 20:57:07 +01:00
|
|
|
options = A.no_capitalization,
|
2023-01-22 01:22:38 +01:00
|
|
|
},
|
|
|
|
|
2023-01-10 02:38:06 +01:00
|
|
|
-- My own operator syntax:
|
|
|
|
-- - Any operator can be prefixed with "a" to
|
|
|
|
-- align in aligned mode
|
|
|
|
-- - Any operator can be prefixed with cr to
|
|
|
|
-- start a new line and align in aligned mode
|
|
|
|
{
|
2023-04-03 03:06:51 +02:00
|
|
|
"{cr,a,}{eq,neq,leq,geq,lt,gt,iff}",
|
|
|
|
"{\\\\\\&,&,}{=,\\neq,\\leq,\\geq,<,>,\\iff}",
|
2023-03-14 20:57:07 +01:00
|
|
|
options = A.no_capitalization,
|
2023-01-10 02:38:06 +01:00
|
|
|
},
|
|
|
|
|
|
|
|
-- Exponents and subscripts:
|
|
|
|
-- {operation}{argument}
|
|
|
|
-- - operation = e (exponent) | s (subscript)
|
|
|
|
-- - argument = t{special} | {basic}
|
|
|
|
-- - basic = 0-9|n|i|t|k
|
|
|
|
-- - special =
|
|
|
|
-- - "p" => +
|
|
|
|
-- - "m" => -
|
|
|
|
-- - "i" => -1
|
|
|
|
{
|
|
|
|
"{e,s}{{0,1,2,3,4,5,6,7,8,9,n,i,t,k},t{i,m,p}}",
|
|
|
|
"{^,_}{{},{\\{-1\\},-,+}}",
|
2023-03-14 20:57:07 +01:00
|
|
|
options = A.no_capitalization,
|
2023-01-10 02:38:06 +01:00
|
|
|
},
|
|
|
|
|
|
|
|
-- Set symbols
|
|
|
|
-- - nats => naturals
|
|
|
|
-- - ints => integers
|
|
|
|
-- - rats => rationals
|
|
|
|
-- - irats => irationals
|
|
|
|
-- - rrea => reals
|
|
|
|
-- - comp => complex
|
|
|
|
-- - ppri => primes
|
|
|
|
-- - ffie => fields
|
|
|
|
{
|
|
|
|
"{nats,ints,rats,irats,rrea,comp,ppri,ffie}",
|
|
|
|
"\\mathbb\\{{N,Z,Q,I,R,C,P,F}\\}",
|
2023-03-14 20:57:07 +01:00
|
|
|
options = A.no_capitalization,
|
2023-01-10 02:38:06 +01:00
|
|
|
},
|
|
|
|
|
|
|
|
-- Function calls:
|
|
|
|
-- {function-name}{modifier?}{argument}{argument-modifier?}
|
|
|
|
--
|
|
|
|
-- - function-name = f/g/h/P
|
|
|
|
-- - modifier:
|
|
|
|
-- - d => derivative
|
|
|
|
-- - 2 => squared
|
|
|
|
-- - 3 => cubed
|
|
|
|
-- - i => inverse
|
|
|
|
-- - argument = x/y/z/a/t/i/n/k
|
|
|
|
-- - argument-modifier:
|
|
|
|
-- - n => subscript n
|
2023-01-22 01:22:38 +01:00
|
|
|
{
|
|
|
|
"{f,g,h,P}{d,2,3,i,}{x,y,z,a,t,i,n,k}{n,}",
|
|
|
|
"{}{',^2,^3,^\\{-1\\},}({}{_n,})",
|
|
|
|
},
|
2023-01-10 02:38:06 +01:00
|
|
|
}
|
|
|
|
|
2023-07-06 21:34:24 +02:00
|
|
|
|
2023-01-10 02:38:06 +01:00
|
|
|
local expanded = scrap.expand_many(abolishAbbreviations)
|
|
|
|
|
2023-07-06 21:34:24 +02:00
|
|
|
-- Last I checked this contained 1166 abbreviations
|
|
|
|
-- print(#abbreviations + #expanded)
|
|
|
|
|
2023-01-10 02:38:06 +01:00
|
|
|
A.manyLocalAbbr(abbreviations)
|
|
|
|
A.manyLocalAbbr(expanded)
|
|
|
|
|
2023-01-22 01:22:38 +01:00
|
|
|
vim.keymap.set(
|
|
|
|
"n",
|
|
|
|
"<leader>lc",
|
|
|
|
"<cmd>VimtexCompile<cr>",
|
|
|
|
{ desc = "Compile current buffer using vimtex", buffer = true }
|
|
|
|
)
|
2023-04-17 22:33:56 +02:00
|
|
|
|
2023-04-19 22:31:43 +02:00
|
|
|
vim.opt_local.list = false -- The lsp usese tabs for formatting
|