mirror of
git://git.code.sf.net/p/zsh/code
synced 2025-10-27 04:40:59 +01:00
* 16310: Functions/Misc/zcalc, Doc/Zsh/contrib.yo: separate zcalc
history, handle errors in expression, document -#base option.
This commit is contained in:
parent
960a7e5347
commit
64b4bfe6fc
3 changed files with 32 additions and 2 deletions
|
|
@ -88,6 +88,25 @@
|
|||
emulate -L zsh
|
||||
setopt extendedglob
|
||||
|
||||
# can't be local since required in EXIT trap
|
||||
zcalc_orighist=$HISTFILE
|
||||
local temphist=${TMPPREFIX}hist SAVEHIST=$HISTSIZE
|
||||
HISTFILE=$temphist
|
||||
fc -W
|
||||
|
||||
local HISTSIZE=0
|
||||
HISTSIZE=$SAVEHIST
|
||||
HISTFILE=~/.zcalc_history
|
||||
[[ -f $HISTFILE ]] && fc -R
|
||||
|
||||
zcalc_restore() {
|
||||
unfunction zcalc_restore
|
||||
fc -W
|
||||
HISTFILE=$zcalc_orighist
|
||||
fc -R
|
||||
}
|
||||
trap zcalc_restore HUP INT QUIT EXIT
|
||||
|
||||
local line latest base defbase match mbegin mend psvar optlist opt arg
|
||||
integer num
|
||||
|
||||
|
|
@ -172,7 +191,10 @@ while vared -cehp "${(%)ZCALCPROMPT}" line; do
|
|||
#
|
||||
# Since it's a string, we'd better make sure we know which
|
||||
# base it's in, so don't change that until we actually print it.
|
||||
latest=
|
||||
eval "latest=\$(( $line ))"
|
||||
# on error $latest is not set; let user re-edit line
|
||||
[[ -n $latest ]] || continue
|
||||
argv[num++]=$latest
|
||||
psvar[1]=$num
|
||||
if [[ -z $base ]]; then
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue