(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'.
This commit is contained in:
Jay Belanger 2007-12-12 04:55:20 +00:00
parent 2a29c40930
commit 57f8977d5c
2 changed files with 22 additions and 1 deletions

View 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'

View 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