]> git.eshelyaron.com Git - emacs.git/commitdiff
(math-restore-underscores, math-string-restore-underscores):
authorJay Belanger <jay.p.belanger@gmail.com>
Wed, 12 Dec 2007 04:55:20 +0000 (04:55 +0000)
committerJay Belanger <jay.p.belanger@gmail.com>
Wed, 12 Dec 2007 04:55:20 +0000 (04:55 +0000)
New functions.
(math-read-factor): Properly check variable names with underscores
for entries in `math-expr-variable-mapping'.

lisp/ChangeLog
lisp/calc/calc-aent.el

index 12cbb15eacc92383ccaf2998344a9dc1fdd93a81..59b0854751b9e0132b32459dda14b3e984c85239 100644 (file)
@@ -4,6 +4,11 @@
 
 2007-12-11  Jay Belanger  <jay.p.belanger@gmail.com>
 
+       * calc/calc-aent.el (math-restore-underscores)
+       (math-string-restore-underscores): New functions.
+       (math-read-factor): Properly check variable names with underscores
+       for entries in `math-expr-variable-mapping'.
+
        * calc/calc-lang.el (math-lang-name): New property name.
 
        * calc/calc.el (calc-set-mode-line): Use `math-lang-name'
index 697d510ac0285c84f064e26f5ae854f6d6ea843c..ee9c6e61e4cf92556517bfb0a22d43bce696ffeb 100644 (file)
@@ -1015,6 +1015,19 @@ in Calc algebraic input.")
        (concat (math-match-substring x 1) "-" (math-match-substring x 2)))
     x))
 
+(defun math-restore-underscores (x)
+  "Replace pound signs by underscores in the symbol x.
+If the current Calc language does not allow underscores, return nil."
+  (if (memq calc-language calc-lang-allow-underscores)
+      (intern-soft (math-string-restore-underscores (symbol-name x)))))
+
+(defun math-string-restore-underscores (x)
+  "Replace pound signs by underscores in the string x."
+  (if (string-match "\\`\\(.*\\)#\\(.*\\)\\'" x)
+      (math-string-restore-underscores
+       (concat (math-match-substring x 1) "_" (math-match-substring x 2)))
+    x))
+
 (defun math-read-if (cond op)
   (let ((then (math-read-expr-level 0)))
     (or (equal math-expr-data ":")
@@ -1116,7 +1129,10 @@ in Calc algebraic input.")
                                      sym
                                    (intern (concat "var-"
                                                    (symbol-name sym)))))))
-                  (let ((v (assq (nth 1 val) math-expr-variable-mapping)))
+                  (let ((v (or
+                             (assq (nth 1 val) math-expr-variable-mapping)
+                             (assq (math-restore-underscores (nth 1 val))
+                                   math-expr-variable-mapping))))
                     (and v (setq val (if (consp (cdr v))
                                          (funcall (car (cdr v)) v val)
                                        (list 'var