dotfiles/home/user/.config/zsh/accept_line

45 lines
935 B
Bash

export ZCALC_HISTFILE="${HOME}/.zcalc_history"
autoload -U zcalc
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'
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}"
BUFFER=
fi
zle .${WIDGET}
}
zle -N accept-line
# vim: ft=zsh