From: Eli Barzilay Date: Mon, 26 Jan 2015 03:42:01 +0000 (-0500) Subject: lisp/calculator.el (calculator-update-display): Bug fix & improvement. X-Git-Tag: emacs-25.0.90~2577^2~9 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=44df0a8f506db385473ed36c2a5fa26e06e7788d;p=emacs.git lisp/calculator.el (calculator-update-display): Bug fix & improvement. Avoid a crash when the daved ptr is at the end of the list (= when it's before the first one). Also use `eq' to compare the value so the saved list indicator appears when a value was retrieved from the list rather than an equal result is shown. --- diff --git a/lisp/calculator.el b/lisp/calculator.el index 7d7c73ae327..0aef07b1750 100644 --- a/lisp/calculator.el +++ b/lisp/calculator.el @@ -312,8 +312,8 @@ user-defined operators, use `calculator-user-operators' instead.") It it possible have a unary prefix version of a binary operator if it comes later in this list. If the list begins with the symbol 'nobind, -then no key binding will take place -- this is only useful for predefined -keys. +then no key binding will take place -- this is only useful for +predefined keys. Use `calculator-user-operators' to add operators to this list, see its documentation for an example.") @@ -1124,9 +1124,15 @@ If optional argument FORCE is non-nil, don't use the cached string." " " (and calculator-display-fragile calculator-saved-list - (= (car calculator-stack) - (nth calculator-saved-ptr - calculator-saved-list)) + ;; Hack: use `eq' to compare the number: it's a + ;; flonum, so `eq' means that its the actual + ;; number rather than a computation that had an + ;; equal result (eg, enter 1,3,2, use "v" to see + ;; the average -- it now shows "2" instead of + ;; "2 [3]"). + (eq (car calculator-stack) + (nth calculator-saved-ptr + calculator-saved-list)) (if (= 0 calculator-saved-ptr) (format "[%s]" (length calculator-saved-list)) (format "[%s/%s]"