diff --git a/home/user/.config/zsh/accept_line b/home/user/.config/zsh/accept_line index e61f9ea..e01a777 100644 --- a/home/user/.config/zsh/accept_line +++ b/home/user/.config/zsh/accept_line @@ -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