export ZCALC_HISTFILE="${HOME}/.zcalc_history" autoload -U zcalc 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' 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