]> code.delx.au - gnu-emacs/blobdiff - lisp/calc/calc-embed.el
calc-embed.el: (calc-override-minor-modes-map, calc-override-minor-modes):
[gnu-emacs] / lisp / calc / calc-embed.el
index 0a7696c931159ed80c53566c83a2e774402cfb09..e54a94e4d399b577df53e38f0fdbc33f2a6cfba2 100644 (file)
@@ -1,6 +1,7 @@
 ;;; calc-embed.el --- embed Calc in a buffer
 
-;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2005 Free Software Foundation, Inc.
+;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2002, 2003, 2004,
+;;   2005, 2006 Free Software Foundation, Inc.
 
 ;; Author: David Gillespie <daveg@synaptics.com>
 ;; Maintainer: Jay Belanger <belanger@truman.edu>
 (defvar calc-embedded-firsttime-buf)
 (defvar calc-embedded-firsttime-formula)
 
+;; The following is to take care of any minor modes which override
+;; a Calc command.
+(defvar calc-override-minor-modes-map 
+  (make-sparse-keymap)
+  "A list of keybindings that might be overwritten by minor modes.")
+
+;; Add any keys that might be overwritten here.
+(define-key calc-override-minor-modes-map "`" 'calc-edit)
+
+(defvar calc-override-minor-modes 
+  (cons t calc-override-minor-modes-map))
+
 (defun calc-do-embedded (calc-embed-arg end obeg oend)
   (if calc-embedded-info
 
                     truncate-lines (nth 2 mode)
                     buffer-read-only nil)
               (use-local-map (nth 1 mode))
+               (setq minor-mode-overriding-map-alist
+                     (remq calc-override-minor-modes minor-mode-overriding-map-alist))
               (set-buffer-modified-p (buffer-modified-p))
                (calc-embedded-restore-original-modes)
               (or calc-embedded-quiet
            buffer-read-only t)
       (set-buffer-modified-p (buffer-modified-p))
       (use-local-map calc-mode-map)
+      (setq minor-mode-overriding-map-alist
+            (cons calc-override-minor-modes
+                  minor-mode-overriding-map-alist))
       (setq calc-no-refresh-evaltos nil)
       (and chg calc-any-evaltos (calc-wrapper (calc-refresh-evaltos)))
       (let (str)
       (or (eq calc-embedded-quiet t)
          (message "Embedded Calc mode enabled; %s to return to normal"
                   (if calc-embedded-quiet
-                      "Type `M-# x'"
+                      "Type `C-x * x'"
                     "Give this command again")))))
   (scroll-down 0))    ; fix a bug which occurs when truncate-lines is changed.
 
@@ -931,7 +949,9 @@ The command \\[yank] can retrieve it from there."
                             (substring str pref-len suff-pos)))
                (if (string-match "[^ \t\n]" str)
                    (setq pref-len 0
-                         val (math-read-big-expr str))
+                         val (condition-case nil
+                                  (math-read-big-expr str)
+                                (error (math-read-expr str))))
                  (setq val nil))))
            (if (eq (car-safe val) 'error)
                (setq val (list 'error