add thousand separator to zsh calc

This commit is contained in:
thek4n 2026-03-20 19:23:18 +03:00
parent 50f0b33af3
commit 3a781be75e

View File

@ -2,9 +2,28 @@ export ZCALC_HISTFILE="${HOME}/.zcalc_history"
autoload -U zcalc
function __calc {
ZDOTDIR="${HOME}" zcalc -f -e "$*"
function __format_number() {
local num="${1}"
if [[ "${num}" =~ ^[-]?[0-9]+$ ]]; then
LC_NUMERIC=en_US.UTF-8 printf "%'d\n" "${num}" | sed "s/,/_/g"
else
echo "${num}"
fi
}
function __calc {
# Получаем результат от zcalc
local result
result="$(ZDOTDIR="${HOME}" zcalc -f -e "$*" 2>/dev/null)"
result="${result%.*}"
if [[ "$result" =~ ^[-]?[0-9]+$ ]]; then
__format_number "$result"
else
echo "$result"
fi
}
aliases[calc]='noglob __calc'
aliases[=]='noglob __calc'
@ -13,7 +32,7 @@ function accept-line() {
if [[ ${BUFFER} =~ '^[ ]?\(?[-+]?[0-9]+[^a-zA-Z]+' ]]; then
echo
test "${BUFFER[1]}" != " " && print -S -- "${BUFFER}" # saving the command to history
__calc "${BUFFER}" | sed 's/\.$//'
__calc "${BUFFER}"
BUFFER=
fi