]> git.eshelyaron.com Git - emacs.git/commitdiff
* doc/misc/calc.texi (Basic Operations on Units):
authorJay Belanger <jay.p.belanger@gmail.com>
Sat, 9 Feb 2013 23:17:05 +0000 (17:17 -0600)
committerJay Belanger <jay.p.belanger@gmail.com>
Sat, 9 Feb 2013 23:17:05 +0000 (17:17 -0600)
  (Customizing Calc): Mention the variable `calc-allow-units-as-numbers'.

* lisp/calc/calc.el (calc-allow-units-as-numbers): New variable.
* lisp/calc/calc-units.el (calc-convert-units): Use new variable.

doc/misc/ChangeLog
doc/misc/calc.texi
lisp/ChangeLog
lisp/calc/calc-units.el
lisp/calc/calc.el

index c0a454d31b5464bb443d4795ca1baefe00b8e1d9..11ff3700da435aab823bba32aeeca132dfe5766d 100644 (file)
@@ -1,3 +1,8 @@
+2013-02-09  Jay Belanger  <jay.p.belanger@gmail.com>
+
+       * calc.texi (Basic Operations on Units):
+       (Customizing Calc): Mention the variable `calc-allow-units-as-numbers'.
+
 2013-02-08  Aidan Gauland  <aidalgol@no8wireless.co.nz>
 
        * eshell.texi: Fill most of the missing sections.
index a5514867a99c826158c1447d2515926cc6950168..da018acffe9e8a48cf887791a58e42327ca7cc17 100644 (file)
@@ -27866,11 +27866,6 @@ acres per meter-second.)  Remainder units are expressed in terms of
 ``fundamental'' units like @samp{m} and @samp{s}, regardless of the
 input units.
 
-If you want to disallow using inconsistent units, you can set the customizable variable
-@code{calc-ensure-consistent-units} to @code{t} (@pxref{Customizing Calc}).  In this case,
-if you request units which are inconsistent with the original units, you will be warned about
-it and no conversion will occur.
-
 One special exception is that if you specify a single unit name, and
 a compatible unit appears somewhere in the units expression, then
 that compatible unit will be converted to the new unit and the
@@ -27880,6 +27875,12 @@ change the @samp{s} to @samp{ms} to get @samp{9.8e-4 cm/ms^2}.
 The ``remainder unit'' @samp{cm} is left alone rather than being
 changed to the base unit @samp{m}.
 
+If you want to disallow using inconsistent units, you can set the
+customizable variable @code{calc-ensure-consistent-units} to @code{t}
+(@pxref{Customizing Calc}).  In this case, if you request units which
+are inconsistent with the original units, you will be warned about it
+and no conversion will occur.
+
 You can use explicit unit conversion instead of the @kbd{u s} command
 to gain more control over the units of the result of an expression.
 For example, given @samp{5 m + 23 mm}, you can type @kbd{u c m} or
@@ -27912,10 +27913,16 @@ Composite units are expanded as if by @kbd{a x}, so that
 
 If the value on the stack does not contain any units, @kbd{u c} will
 prompt first for the old units which this value should be considered
-to have, then for the new units.  Assuming the old and new units you
-give are consistent with each other, the result also will not contain
-any units.  For example, @kbd{@w{u c} cm @key{RET} in @key{RET}}
-converts the number 2 on the stack to 5.08.
+to have, then for the new units.  (If the value on the stack can be
+simplified so that it doesn't contain any units, like @samp{ft/in} can
+be simplified to 12, then @kbd{u c} will still prompt for both old
+units and new units. You can ignore the prompt for old units with
+@key{RET}, or turn off the prompt by setting the customizable variable
+@code{calc-allow-units-as-numbers} to @code{nil}. 
+@pxref{Customizing Calc})  Assuming the old and new units you give are
+consistent with each other, the result also will not contain any
+units.  For example, @kbd{@w{u c} cm @key{RET} in @key{RET}} converts
+the number 2 on the stack to 5.08.
 
 @kindex u b
 @pindex calc-base-units
@@ -35694,6 +35701,17 @@ have different dimensions. The default value of @code{calc-ensure-consistent-uni
 is @code{nil}.
 @end defvar
 
+@defvar calc-allow-units-as-numbers
+When converting units, the variable @code{calc-allow-units-as-numbers}
+determines whether or not values which can be simplified so that
+they don't contain units (such as @samp{ft/in} can be simplified to 12)
+can be regarded as not containing units.  If 
+@code{calc-allow-units-as-numbers} is non-@code{nil}, then @kbd{u c}
+will prompt for both old units and new units when converting an expression
+like @samp{ft/in}, otherwise @kbd{u c} will only prompt for the new units.
+The default value of @code{calc-allow-units-as-numbers} is @code{t}.
+@end defvar
+
 @defvar calc-undo-length
 The variable @code{calc-undo-length} determines the number of undo
 steps that Calc will keep track of when @code{calc-quit} is called.
index 5a9af8c42a053002b156e2fd3257fb19c426da9f..b673173bd1f873560a9ba5d63e371d433136b24a 100644 (file)
@@ -1,3 +1,9 @@
+2013-02-09  Jay Belanger  <jay.p.belanger@gmail.com>
+
+       * calc/calc.el (calc-allow-units-as-numbers): New variable.
+       * calc/calc-units.el (calc-convert-units): Use new variable.
+
+
 2013-02-09  Eli Zaretskii  <eliz@gnu.org>
 
        * subr.el (buffer-file-type, default-buffer-file-type): Remove.
index 72d51d9241c929f258c51fa979b852cce2aa74a8..b334d7b3b45ece16241293f74a7b7c555b6464e7 100644 (file)
@@ -437,17 +437,22 @@ If COMP or STD is non-nil, put that in the units table instead."
                  (list new-units (car default-units))
                  math-default-units-table))))))
 
+(defvar calc-allow-units-as-numbers)
+
 (defun calc-convert-units (&optional old-units new-units)
   (interactive)
   (calc-slow-wrapper
    (let ((expr (calc-top-n 1))
         (uoldname nil)
          (unitscancel nil)
+         (nouold nil)
         unew
          units
          defunits)
      (if (or (not (math-units-in-expr-p expr t))
-             (setq unitscancel (eq (math-get-standard-units expr) 1)))
+             (setq unitscancel (and
+                                calc-allow-units-as-numbers
+                                (eq (math-get-standard-units expr) 1))))
        (let ((uold (or old-units
                       (progn
                         (setq uoldname 
@@ -457,6 +462,7 @@ If COMP or STD is non-nil, put that in the units table instead."
                                  (read-string "Old units: ")))
                         (if (equal uoldname "")
                             (progn
+                               (setq nouold unitscancel)
                               (setq uoldname "1")
                               1)
                           (if (string-match "\\` */" uoldname)
@@ -469,7 +475,7 @@ If COMP or STD is non-nil, put that in the units table instead."
      (unless new-units
        (setq new-units
              (read-string (concat
-                           (if uoldname
+                           (if (and uoldname (not nouold))
                                (concat "Old units: "
                                        uoldname
                                        ", new units")
index c35e7650254b2ca015ecfa658b49e545785ce26b..db30d53d537af87157356af0339db204af006743 100644 (file)
@@ -426,6 +426,14 @@ when converting units."
   :version "24.3"
   :type 'boolean)
 
+(defcustom calc-allow-units-as-numbers
+  t
+  "If non-nil, allow unit expressions to be treated like numbers 
+when converting units, if the expression can be simplified to be unitless."
+  :group 'calc
+  :version "24.4"
+  :type 'boolean)
+
 (defcustom calc-undo-length
   100
   "The number of undo steps that will be preserved when Calc is quit."