Commit 57f8977d authored by Jay Belanger's avatar Jay Belanger

(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'.
parent 2a29c409
...@@ -4,6 +4,11 @@ ...@@ -4,6 +4,11 @@
2007-12-11 Jay Belanger <jay.p.belanger@gmail.com> 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-lang.el (math-lang-name): New property name.
* calc/calc.el (calc-set-mode-line): Use `math-lang-name' * calc/calc.el (calc-set-mode-line): Use `math-lang-name'
......
...@@ -1015,6 +1015,19 @@ in Calc algebraic input.") ...@@ -1015,6 +1015,19 @@ in Calc algebraic input.")
(concat (math-match-substring x 1) "-" (math-match-substring x 2))) (concat (math-match-substring x 1) "-" (math-match-substring x 2)))
x)) 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) (defun math-read-if (cond op)
(let ((then (math-read-expr-level 0))) (let ((then (math-read-expr-level 0)))
(or (equal math-expr-data ":") (or (equal math-expr-data ":")
...@@ -1116,7 +1129,10 @@ in Calc algebraic input.") ...@@ -1116,7 +1129,10 @@ in Calc algebraic input.")
sym sym
(intern (concat "var-" (intern (concat "var-"
(symbol-name sym))))))) (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)) (and v (setq val (if (consp (cdr v))
(funcall (car (cdr v)) v val) (funcall (car (cdr v)) v val)
(list 'var (list 'var
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment