Mercurial > emacs
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)) |