From: Jay Belanger Date: Thu, 9 Aug 2012 14:46:03 +0000 (-0500) Subject: calccomp.el (math-compose-expr): Add extra argument indicating that X-Git-Tag: emacs-24.2.90~753 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=31673780356f219c7a26251b2f79fb00c8e29f0b;p=emacs.git calccomp.el (math-compose-expr): Add extra argument indicating that parentheses should be put around products in denominators. Give multiplication precedence over division during composition. --- diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 23cd53f1246..fef050e6d02 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,10 @@ +2012-08-09 Jay Belanger + + * calc/calccomp.el (math-compose-expr): Add extra argument + indicating that parentheses should be put around products in + denominators. Give multiplication precedence over division during + composition. + 2012-08-09 Chong Yidong * man.el (Man-switches, Man-sed-command, Man-awk-command) diff --git a/lisp/calc/calccomp.el b/lisp/calc/calccomp.el index d8ad7e2cede..51ea8e7b7a3 100644 --- a/lisp/calc/calccomp.el +++ b/lisp/calc/calccomp.el @@ -86,8 +86,11 @@ (setq sn (math-to-underscores sn))) sn))) -(defun math-compose-expr (a prec) - (let ((math-compose-level (1+ math-compose-level)) +;;; Give multiplication precendence when composing to avoid +;;; writing a*(b c) instead of a b c +(defun math-compose-expr (a prec &optional div) + (let ((calc-multiplication-has-precedence t) + (math-compose-level (1+ math-compose-level)) (math-expr-opers (math-expr-ops)) spfn) (cond @@ -591,7 +594,9 @@ (or (= (length a) 3) (eq (car a) 'calcFunc-if)) (/= (nth 3 op) -1)) (cond - ((> prec (or (nth 4 op) (min (nth 2 op) (nth 3 op)))) + ((or + (> prec (or (nth 4 op) (min (nth 2 op) (nth 3 op)))) + (and div (eq (car a) '*))) (if (and (memq calc-language '(tex latex)) (not (math-tex-expr-is-flat a))) (if (eq (car-safe a) '/) @@ -631,7 +636,7 @@ nil) math-compose-level)) (lhs (math-compose-expr (nth 1 a) (nth 2 op))) - (rhs (math-compose-expr (nth 2 a) (nth 3 op)))) + (rhs (math-compose-expr (nth 2 a) (nth 3 op) (eq (nth 1 op) '/)))) (and (equal (car op) "^") (eq (math-comp-first-char lhs) ?-) (setq lhs (list 'horiz "(" lhs ")")))