]> code.delx.au - gnu-emacs/blobdiff - lisp/calc/calc-stuff.el
Merge from emacs--rel--22
[gnu-emacs] / lisp / calc / calc-stuff.el
index bbf520dcaef55fbba4f844f30f5850cf2fd67391..8840ad827e12e2cbeebe1648bf212d43ace5f194 100644 (file)
@@ -1,34 +1,37 @@
-;; Calculator for GNU Emacs, part II [calc-stuff.el]
-;; Copyright (C) 1990, 1991, 1992, 1993, 2001 Free Software Foundation, Inc.
-;; Written by Dave Gillespie, daveg@synaptics.com.
+;;; calc-stuff.el --- miscellaneous functions for Calc
+
+;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2002, 2003, 2004,
+;;   2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+
+;; Author: David Gillespie <daveg@synaptics.com>
+;; Maintainer: Jay Belanger <jay.p.belanger@gmail.com>
 
 ;; This file is part of GNU Emacs.
 
+;; GNU Emacs is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 3, or (at your option)
+;; any later version.
+
 ;; GNU Emacs is distributed in the hope that it will be useful,
-;; but WITHOUT ANY WARRANTY.  No author or distributor
-;; accepts responsibility to anyone for the consequences of using it
-;; or for whether it serves any particular purpose or works at all,
-;; unless he says so in writing.  Refer to the GNU Emacs General Public
-;; License for full details.
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
 
-;; Everyone is granted permission to copy, modify and redistribute
-;; GNU Emacs, but only under the conditions described in the
-;; GNU Emacs General Public License.   A copy of this license is
-;; supposed to have been given to you along with GNU Emacs so you
-;; can know your rights and responsibilities.  It should be in a
-;; file named COPYING.  Among other things, the copyright notice
-;; and this notice must be preserved on all copies.
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs; see the file COPYING.  If not, write to the
+;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+;; Boston, MA 02110-1301, USA.
 
+;;; Commentary:
 
+;;; Code:
 
 ;; This file is autoloaded from calc-ext.el.
-(require 'calc-ext)
 
+(require 'calc-ext)
 (require 'calc-macs)
 
-(defun calc-Need-calc-stuff () nil)
-
-
 (defun calc-num-prefix (n)
   "Use the number at the top of stack as the numeric prefix for the next command.
 With a prefix, push that prefix as a number onto the stack."
@@ -68,6 +71,8 @@ With a prefix, push that prefix as a number onto the stack."
   (message "max-lisp-eval-depth is now %d" max-lisp-eval-depth))
 
 
+(defvar calc-which-why nil)
+(defvar calc-last-why-command nil)
 (defun calc-explain-why (why &optional more)
   (if (eq (car why) '*)
       (setq why (cdr why)))
@@ -151,17 +156,28 @@ With a prefix, push that prefix as a number onto the stack."
          (message "(No further explanations available)")
          (setq calc-which-why calc-why))
       (message "No explanations available"))))
-(setq calc-which-why nil)
-(setq calc-last-why-command nil)
 
 
 (defun calc-version ()
   (interactive)
-  (message "Calc %s, installed %s" calc-version calc-installed-date))
-
-
-(defun calc-flush-caches ()
-  (interactive)
+  (message "Calc %s" calc-version))
+
+;; The following caches are declared in other files, but are
+;; reset here.
+(defvar math-lud-cache) ; calc-mtx.el
+(defvar math-log2-cache) ; calc-bin.el
+(defvar math-radix-digits-cache) ; calc-bin.el
+(defvar math-radix-float-cache-tag) ; calc-bin.el
+(defvar math-random-cache) ; calc-comb.el
+(defvar math-max-digits-cache) ; calc-bin.el
+(defvar math-integral-cache) ; calcalg2.el
+(defvar math-units-table) ; calc-units.el
+(defvar math-decls-cache-tag) ; calc-arith.el
+(defvar math-format-date-cache) ; calc-forms.el
+(defvar math-holidays-cache-tag) ; calc-forms.el
+
+(defun calc-flush-caches (&optional inhibit-msg)
+  (interactive "P")
   (calc-wrapper
    (setq math-lud-cache nil
         math-log2-cache nil
@@ -169,17 +185,15 @@ With a prefix, push that prefix as a number onto the stack."
         math-radix-float-cache-tag nil
         math-random-cache nil
         math-max-digits-cache nil
-        math-checked-rewrites nil
         math-integral-cache nil
         math-units-table nil
         math-decls-cache-tag nil
         math-eval-rules-cache-tag t
-        math-graph-var-cache nil
-        math-graph-data-cache nil
         math-format-date-cache nil
         math-holidays-cache-tag t)
-   (mapcar (function (lambda (x) (set x -100))) math-cache-list)
-   (message "All internal calculator caches have been reset.")))
+   (mapc (function (lambda (x) (set x -100))) math-cache-list)
+   (unless inhibit-msg
+     (message "All internal calculator caches have been reset"))))
 
 
 ;;; Conversions.
@@ -202,13 +216,14 @@ With a prefix, push that prefix as a number onto the stack."
 (defun calc-clean-num (num)
   (interactive "P")
   (calc-clean (- (if num
-                    (prefix-numeric-value num) 
+                    (prefix-numeric-value num)
                   (if (and (>= last-command-char ?0)
                            (<= last-command-char ?9))
                       (- last-command-char ?0)
                     (error "Number required"))))))
 
 
+(defvar math-chopping-small nil)
 (defun calcFunc-clean (a &optional prec)   ; [X X S] [Public]
   (if prec
       (cond ((Math-messy-integerp prec)
@@ -250,7 +265,6 @@ With a prefix, push that prefix as a number onto the stack."
          ((Math-objectp a) a)
          ((math-infinitep a) a)
          (t (list 'calcFunc-clean a)))))
-(setq math-chopping-small nil)
 
 (defun calcFunc-pclean (a &optional prec)
   (math-map-over-constants (function (lambda (x) (calcFunc-clean x prec)))
@@ -263,17 +277,22 @@ With a prefix, push that prefix as a number onto the stack."
   (math-map-over-constants (function (lambda (x) (calcFunc-frac x tol)))
                           a))
 
-(defun math-map-over-constants (func expr)
+;; The variable math-moc-func is local to math-map-over-constants,
+;; but is used by math-map-over-constants-rec, which is called by
+;; math-map-over-constants.
+(defvar math-moc-func)
+
+(defun math-map-over-constants (math-moc-func expr)
   (math-map-over-constants-rec expr))
 
 (defun math-map-over-constants-rec (expr)
   (cond ((or (Math-primp expr)
             (memq (car expr) '(intv sdev)))
         (or (and (Math-objectp expr)
-                 (funcall func expr))
+                 (funcall math-moc-func expr))
             expr))
        ((and (memq (car expr) '(^ calcFunc-subscr))
-             (eq func 'math-float)
+             (eq math-moc-func 'math-float)
              (= (length expr) 3)
              (Math-integerp (nth 2 expr)))
         (list (car expr)
@@ -281,4 +300,7 @@ With a prefix, push that prefix as a number onto the stack."
               (nth 2 expr)))
        (t (cons (car expr) (mapcar 'math-map-over-constants-rec (cdr expr))))))
 
+(provide 'calc-stuff)
+
+;;; arch-tag: 789332ef-a178-49d3-8fb7-5d7ed7e21f56
 ;;; calc-stuff.el ends here