changeset 72037:52f1e8d569ad

(calcAlg-edit, calcAlg-enter): Remove reference to calc-previous-alg-entry. (calcAlg-previous): Use previous-history-element instead of calc-previous-alg-entry. (calc-do-alg-entry): Add history to reading from minibuffer. Change keybinding for calcAlg-plus-minus, add keybindings for previous-history-element and next-history-element. (calc-alg-entry-history, calc-quick-calc-history): New variables. (calc-do-quick-calc): Use calc-quick-calc-history. Remove reference to calc-previous-alg-entry. (calc-alg-entry): Use calc-alg-entry-history.
author Jay Belanger <jay.p.belanger@gmail.com>
date Thu, 20 Jul 2006 20:23:06 +0000
parents b0e0cacf6e6a
children f9c303ee168d
files lisp/calc/calc-aent.el
diffstat 1 files changed, 16 insertions(+), 22 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/calc/calc-aent.el	Thu Jul 20 20:22:18 2006 +0000
+++ b/lisp/calc/calc-aent.el	Thu Jul 20 20:23:06 2006 +0000
@@ -32,7 +32,11 @@
 (require 'calc)
 (require 'calc-macs)
 
+(defvar calc-quick-calc-history nil
+  "The history list for quick-calc.")
+
 (defun calc-do-quick-calc ()
+  (require 'calc-ext)
   (calc-check-defines)
   (if (eq major-mode 'calc-mode)
       (calc-algebraic-entry t)
@@ -45,23 +49,12 @@
 	       (enable-recursive-minibuffers t)
 	       (calc-language (if (memq calc-language '(nil big))
 				  'flat calc-language))
-	       (entry (calc-do-alg-entry "" "Quick calc: " t))
-	       (alg-exp (mapcar (function
-				 (lambda (x)
-				   (if (and (not (featurep 'calc-ext))
-					    calc-previous-alg-entry
-					    (string-match
-					     "\\`[-0-9._+*/^() ]+\\'"
-					     calc-previous-alg-entry))
-				       (calc-normalize x)
-				     (require 'calc-ext)
-				     (math-evaluate-expr x))))
-				entry)))
+	       (entry (calc-do-alg-entry "" "Quick calc: " t 'calc-quick-calc-history))
+	       (alg-exp (mapcar 'math-evaluate-expr entry)))
 	  (when (and (= (length alg-exp) 1)
 		     (eq (car-safe (car alg-exp)) 'calcFunc-assign)
 		     (= (length (car alg-exp)) 3)
 		     (eq (car-safe (nth 1 (car alg-exp))) 'var))
-	    (require 'calc-ext)
 	    (set (nth 2 (nth 1 (car alg-exp))) (nth 2 (car alg-exp)))
 	    (calc-refresh-evaltos (nth 2 (nth 1 (car alg-exp))))
 	    (setq alg-exp (list (nth 2 (car alg-exp)))))
@@ -264,13 +257,16 @@
 	 (math-expr-opers (if prefix math-standard-opers math-expr-opers)))
      (calc-alg-entry (and auto (char-to-string last-command-char))))))
 
+(defvar calc-alg-entry-history nil
+  "History for algebraic entry.")
+
 (defun calc-alg-entry (&optional initial prompt)
   (let* ((sel-mode nil)
 	 (calc-dollar-values (mapcar 'calc-get-stack-element
 				     (nthcdr calc-stack-top calc-stack)))
 	 (calc-dollar-used 0)
 	 (calc-plain-entry t)
-	 (alg-exp (calc-do-alg-entry initial prompt t)))
+	 (alg-exp (calc-do-alg-entry initial prompt t 'calc-alg-entry-history)))
     (if (stringp alg-exp)
 	(progn
 	  (require 'calc-ext)
@@ -301,7 +297,7 @@
 
 (defvar calc-alg-exp)
 
-(defun calc-do-alg-entry (&optional initial prompt no-normalize)
+(defun calc-do-alg-entry (&optional initial prompt no-normalize history)
   (let* ((calc-buffer (current-buffer))
 	 (blink-paren-function 'calcAlg-blink-matching-open)
 	 (calc-alg-exp 'error))
@@ -319,15 +315,17 @@
     (define-key calc-alg-ent-map "\e" nil)
     (if (eq calc-algebraic-mode 'total)
 	(define-key calc-alg-ent-map "\e" calc-alg-ent-esc-map)
-      (define-key calc-alg-ent-map "\ep" 'calcAlg-plus-minus)
+      (define-key calc-alg-ent-map "\e+" 'calcAlg-plus-minus)
       (define-key calc-alg-ent-map "\em" 'calcAlg-mod)
       (define-key calc-alg-ent-map "\e=" 'calcAlg-equals)
       (define-key calc-alg-ent-map "\e\r" 'calcAlg-equals)
+      (define-key calc-alg-ent-map "\ep" 'previous-history-element)
+      (define-key calc-alg-ent-map "\en" 'next-history-element)
       (define-key calc-alg-ent-map "\e%" 'self-insert-command))
     (setq calc-aborted-prefix nil)
     (let ((buf (read-from-minibuffer (or prompt "Algebraic: ")
 				     (or initial "")
-				     calc-alg-ent-map nil)))
+				     calc-alg-ent-map nil history)))
       (when (eq calc-alg-exp 'error)
 	(when (eq (car-safe (setq calc-alg-exp (math-read-exprs buf))) 'error)
 	  (setq calc-alg-exp nil)))
@@ -355,9 +353,7 @@
 (defun calcAlg-previous ()
   (interactive)
   (if (calc-minibuffer-contains "\\'")
-      (if calc-previous-alg-entry
-	  (insert calc-previous-alg-entry)
-	(beep))
+      (previous-history-element 1)
     (insert "'")))
 
 (defun calcAlg-equals ()
@@ -384,7 +380,6 @@
 	   "\\`\\([^\"]*\"[^\"]*\"\\)*[^\"]*\"[^\"]*\\'"))
       (insert "`")
     (setq calc-alg-exp (minibuffer-contents))
-    (and (> (length calc-alg-exp) 0) (setq calc-previous-alg-entry calc-alg-exp))
     (exit-minibuffer)))
 
 (defvar calc-buffer)
@@ -407,7 +402,6 @@
       (setq calc-alg-exp (if (calc-minibuffer-contains "\\` *\\[ *\\'")
 			'((incomplete vec))
 		      exp))
-      (and (> (length str) 0) (setq calc-previous-alg-entry str))
       (exit-minibuffer))))
 
 (defun calcAlg-blink-matching-open ()