From ebdab1ae446f2098a5c1c433b24e75af227805b1 Mon Sep 17 00:00:00 2001 From: thek4n Date: Fri, 20 Mar 2026 19:23:18 +0300 Subject: [PATCH] add thousand separator to zsh calc --- home/user/.config/zsh/accept_line | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/home/user/.config/zsh/accept_line b/home/user/.config/zsh/accept_line index e61f9ea..cfcecd5 100644 --- a/home/user/.config/zsh/accept_line +++ b/home/user/.config/zsh/accept_line @@ -2,9 +2,27 @@ export ZCALC_HISTFILE="${HOME}/.zcalc_history" autoload -U zcalc -function __calc { - ZDOTDIR="${HOME}" zcalc -f -e "$*" +function __format_number() { + local num="${1}" + local res + + num="$(echo "${num}" | sed 's/\.$//')" + res="${num}" + + if [[ "${num}" =~ ^[-]?[0-9]+$ ]]; then + res="$(LC_NUMERIC='en_US.UTF-8' printf "%'.20f\n" "${num}" | sed "s/,/_/g")" + fi + + echo "${res}" | sed 's/\.\([0-9]*[1-9]\)0*$/.\1/; s/\.0*$//' } + +function __calc { + local result + result="$(ZDOTDIR="${HOME}" zcalc -f -e "$*" 2>/dev/null)" + + __format_number "${result}" +} + aliases[calc]='noglob __calc' aliases[=]='noglob __calc' @@ -13,7 +31,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