A powerful lua-lib-math in-buffer calculator with visual mode, functions and variable support.
- 👍 Simple & Complex Expressions: Handle any mathematical expression, see the 𝑓unctions section.
- 𝑓𝑥 Variable Support: Use variables anywhere in your buffer.
- 🎯 Work in the buffer: Evaluates expression in visual selection or current line.
Using lazy.nvim
{
"necrom4/calcium.nvim",
cmd = { "Calcium" },
opts = {}
}{
"necrom4/calcium.nvim",
cmd = { "Calcium" },
opts = {
-- default configuration
notifications = true, -- notify result
default_mode = "append", -- or `replace` the expression
scratchpad = {
border = "rounded", -- floating window border style (:help 'winborder')
virtual_text = {
format = "= %s", -- virtual text format
highlight_group = "Comment", -- virtual text highlight group
},
result_variable = "ans" -- name of the variable for the last computation result
},
},
keys = {
-- example keymap
{
"<leader>c",
":Calcium<CR>",
desc = "Calculate",
mode = { "n", "v" },
silent = true,
},
}
}" Append the result at the end of the expression in the current line (default behavior)
:Calcium
" Append the result or replace the expression by the result
:Calcium [a]ppend|[r]eplace
" Calculate the expression in the visual selection and replace with the result
:'<,'>Calcium replace
" Open scratchpad buffer to calculate mathematical expressions with live preview
:Calcium [s]cratchpad
" Calculate an expression in the cmdline
:Calcium 2 + pi * random()-- Calculate the expression in the visual selection and append result
require("calcium").calculate({ mode = "append", visual = true })
-- !NOTE: remove `(`q` to close)` once keymap configuration is added to README.
-- Open (`q` to close) scratchpad buffer to evaluate expressions with live result preview
require("calcium").scratchpad()Examples:
-- Select [2 + 2] and run `:Calcium`
x = 2 + 2 -- = 4
-- Select [x * pi] and run `:Calcium`
y = x * pi -- = 12.5663706144- Trigonometry:
sin,cos,tan,asin,acos,atan,atan2 - Hyperbolic:
sinh,cosh,tanh - Exponential & Logarithmic:
exp,log,log10,pow,sqrt - Angle Conversion:
deg,rad - Rounding & Truncation:
floor,ceil,round,trunc - Basic Arithmetic:
abs,min,max,clamp,sign,fmod,modf - Number Theory:
gcd,lcm,fact - Statistics:
avg,median,range,fib - Floating Point:
frexp,ldexp - Random:
random,randomseed - Constants:
pi,huge - Boolean:
==,~=,>,<,>=,<= - Scratchpad-specific:
ans(result of the previous line)
- Fix
-
./plugin/calcium.lua, should it have more checks? Should everything be in another path (so it doesn't load on start), should it have the global variable check?
-
- Cmdline
<mode>suggestions - Cmdline calculations
- Boolean result (
2 + 2 >= 3= true) - Smart selection when no visual selection is provided. In "I have
2 + 1cats", the cursor must find the closest expression and solve it. - Floating scratchpad mode with live calculations and ghost text results
