comparison lisp/calc/calc-embed.el @ 102788:b5ba1407f9a1

(calc-embedded-restore-original-modes): Add argument for Calculator buffer. (calc-do-embedded): Use specific Calculator buffer when cancelling embedded mode.
author Jay Belanger <jay.p.belanger@gmail.com>
date Mon, 30 Mar 2009 02:17:40 +0000
parents a9dc0e7c3f2b
children 3c4fd8432636
comparison
equal deleted inserted replaced
102787:45170edd0f4f 102788:b5ba1407f9a1
157 (progn 157 (progn
158 (calc-embedded-save-original-modes) 158 (calc-embedded-save-original-modes)
159 (message "Current modes will be preserved when leaving embedded mode.")) 159 (message "Current modes will be preserved when leaving embedded mode."))
160 (message "Not in embedded mode."))) 160 (message "Not in embedded mode.")))
161 161
162 (defun calc-embedded-restore-original-modes () 162 (defun calc-embedded-restore-original-modes (calcbuf)
163 "Restore the original Calc modes when leaving embedded mode." 163 "Restore the original Calc modes when leaving embedded mode."
164 (let ((calcbuf (get-buffer "*Calculator*")) 164 (let ((changed nil)
165 (changed nil)
166 (lang (car calc-embedded-original-modes)) 165 (lang (car calc-embedded-original-modes))
167 (modes (cdr calc-embedded-original-modes))) 166 (modes (cdr calc-embedded-original-modes)))
168 (if (and calcbuf calc-embedded-original-modes) 167 (if (and calcbuf calc-embedded-original-modes)
169 (with-current-buffer calcbuf 168 (with-current-buffer calcbuf
170 (unless (and 169 (unless (and
230 (calc-embedded nil) 229 (calc-embedded nil)
231 (switch-to-buffer calcbuf))) 230 (switch-to-buffer calcbuf)))
232 231
233 ((eq (current-buffer) (aref calc-embedded-info 0)) 232 ((eq (current-buffer) (aref calc-embedded-info 0))
234 (let* ((info calc-embedded-info) 233 (let* ((info calc-embedded-info)
235 (mode calc-embedded-modes)) 234 (mode calc-embedded-modes)
235 (calcbuf (aref calc-embedded-info 1)))
236 (save-excursion 236 (save-excursion
237 (set-buffer (aref info 1)) 237 (set-buffer (aref info 1))
238 (if (and (> (calc-stack-size) 0) 238 (if (and (> (calc-stack-size) 0)
239 (equal (calc-top 1 'full) (aref info 8))) 239 (equal (calc-top 1 'full) (aref info 8)))
240 (let ((calc-no-refresh-evaltos t)) 240 (let ((calc-no-refresh-evaltos t))
251 buffer-read-only nil) 251 buffer-read-only nil)
252 (use-local-map (nth 1 mode)) 252 (use-local-map (nth 1 mode))
253 (setq minor-mode-overriding-map-alist 253 (setq minor-mode-overriding-map-alist
254 (remq calc-override-minor-modes minor-mode-overriding-map-alist)) 254 (remq calc-override-minor-modes minor-mode-overriding-map-alist))
255 (set-buffer-modified-p (buffer-modified-p)) 255 (set-buffer-modified-p (buffer-modified-p))
256 (calc-embedded-restore-original-modes) 256 (calc-embedded-restore-original-modes calcbuf)
257 (or calc-embedded-quiet 257 (or calc-embedded-quiet
258 (message "Back to %s mode" (format-mode-line mode-name))))) 258 (message "Back to %s mode" (format-mode-line mode-name)))))
259 259
260 (t 260 (t
261 (if (buffer-name (aref calc-embedded-info 0)) 261 (if (buffer-name (aref calc-embedded-info 0))