Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
A ZLE widget for calculator
- X-seq: zsh-users 30431
- From: Vincent Bernat <bernat@xxxxxxxx>
- To: zsh-users@xxxxxxx
- Subject: A ZLE widget for calculator
- Date: Tue, 3 Feb 2026 08:16:44 +0100
- Archived-at: <https://zsh.org/users/30431>
- Autocrypt: addr=bernat@xxxxxxxx; keydata= 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 XiLQIe2EkA+givyn7R0/qppDtPSOL1Q/
- Feedback-id: i34d144f1:Fastmail
- List-id: <zsh-users.zsh.org>
Hey!
I currently have this code in my zshrc:
# Simple calculator
_vbe_calc_accept_line() {
local expr
case $BUFFER in
"= "*) expr=${BUFFER#= } ;;
esac
case $expr in
"") ;;
\'*) BUFFER="= ${(q-)${(Q)expr}}" ;;
*) BUFFER="= ${(q-)expr}"
esac
zle .accept-line
}
zle -N accept-line _vbe_calc_accept_line
aliases[=]='numbat -e'
When I use the "=" alias, it will automatically quote what's after. This
is better than noglob.
08:12 ❱ = 1
1
08:12 ❱ = 1+2
3
08:12 ❱ = 'today() + 3 days'
2026-02-06 00:00:00 CET (UTC +01), Europe/Paris
08:12 ❱ = '47 km/h to miles/h'
29.2044 mi/h
This seems a bit clunky to detect when something was quoted and undo it.
Ideally, I would like to have the quoted alias executed, but for history
and display purpose keep the buffer unchanged.
# Simple calculator
_vbe_calc_accept_line() {
if [[ $BUFFER =~ "= *" ]]; then
local expr=${BUFFER#= }
zle -I
command numbat -e "$expr"
print
print -s $BUFFER
BUFFER=""
else
zle .accept-line
fi
}
zle -N accept-line _vbe_calc_accept_line
It almost work, but the buffer is not available in the immediate history
(because no accept-line was called). If I press the up arrow, I get the
previous one instead.
Any idea?
Thanks!
Messages sorted by:
Reverse Date,
Date,
Thread,
Author