comparison lisp/calc/calc-embed.el @ 64186:d14a59c4f989

(calc-embedded-firsttime, calc-embedded-firsttime-buf, calc-embedded-firsttime-formula): New variables. (calc-do-embedded): Use calc-embedded-firsttime, calc-embedded-firsttime-buf and calc-embedded-firsttime-formula to determine whether or not to run hooks. (calc-embedded-make-info) Set calc-embedded-firsttime-buf and calc-embedded-firsttime-formula appropriately. Set calc-embedded delimiter variables according to mode.
author Jay Belanger <jay.p.belanger@gmail.com>
date Sat, 09 Jul 2005 03:42:56 +0000
parents 331d8f0bb84c
children 1db49616ce05 fbb2bea03df9
comparison
equal deleted inserted replaced
64185:c6d6fa805aad 64186:d14a59c4f989
198 ;; calc-embedded-make-info, which is called by the above 198 ;; calc-embedded-make-info, which is called by the above
199 ;; functions. 199 ;; functions.
200 (defvar calc-embed-arg) 200 (defvar calc-embed-arg)
201 201
202 (defvar calc-embedded-quiet nil) 202 (defvar calc-embedded-quiet nil)
203
204 (defvar calc-embedded-firsttime)
205 (defvar calc-embedded-firsttime-buf)
206 (defvar calc-embedded-firsttime-formula)
207
203 (defun calc-do-embedded (calc-embed-arg end obeg oend) 208 (defun calc-do-embedded (calc-embed-arg end obeg oend)
204 (if calc-embedded-info 209 (if calc-embedded-info
205 210
206 ;; Turn embedded mode off or switch to a new buffer. 211 ;; Turn embedded mode off or switch to a new buffer.
207 (cond ((eq (current-buffer) (aref calc-embedded-info 1)) 212 (cond ((eq (current-buffer) (aref calc-embedded-info 1))
249 ;; Turn embedded mode on. 254 ;; Turn embedded mode on.
250 (calc-plain-buffer-only) 255 (calc-plain-buffer-only)
251 (let ((modes (list mode-line-buffer-identification 256 (let ((modes (list mode-line-buffer-identification
252 (current-local-map) 257 (current-local-map)
253 truncate-lines)) 258 truncate-lines))
259 (calc-embedded-firsttime (not calc-embedded-active))
260 (calc-embedded-firsttime-buf nil)
261 (calc-embedded-firsttime-formula nil)
254 calc-embed-top calc-embed-bot calc-embed-outer-top calc-embed-outer-bot 262 calc-embed-top calc-embed-bot calc-embed-outer-top calc-embed-outer-bot
255 info chg ident) 263 info chg ident)
256 (barf-if-buffer-read-only) 264 (barf-if-buffer-read-only)
257 (calc-embedded-save-original-modes) 265 (calc-embedded-save-original-modes)
258 (or calc-embedded-globals 266 (or calc-embedded-globals
295 (calc-select-buffer) 303 (calc-select-buffer)
296 (setq str mode-line-buffer-identification)) 304 (setq str mode-line-buffer-identification))
297 (unless (equal str mode-line-buffer-identification) 305 (unless (equal str mode-line-buffer-identification)
298 (setq mode-line-buffer-identification str) 306 (setq mode-line-buffer-identification str)
299 (set-buffer-modified-p (buffer-modified-p)))) 307 (set-buffer-modified-p (buffer-modified-p))))
308 (if calc-embedded-firsttime
309 (run-hooks 'calc-embedded-mode-hook))
310 (if calc-embedded-firsttime-buf
311 (run-hooks 'calc-embedded-new-buffer-hook))
312 (if calc-embedded-firsttime-formula
313 (run-hooks 'calc-embedded-new-formula-hook))
300 (or (eq calc-embedded-quiet t) 314 (or (eq calc-embedded-quiet t)
301 (message "Embedded Calc mode enabled; %s to return to normal" 315 (message "Embedded Calc mode enabled; %s to return to normal"
302 (if calc-embedded-quiet 316 (if calc-embedded-quiet
303 "Type `M-# x'" 317 "Type `M-# x'"
304 "Give this command again"))))) 318 "Give this command again")))))
790 (force (and fresh calc-embed-top)) 804 (force (and fresh calc-embed-top))
791 (fixed calc-embed-top) 805 (fixed calc-embed-top)
792 (new-info nil) 806 (new-info nil)
793 info str) 807 info str)
794 (or found 808 (or found
795 (setq found (list (current-buffer)) 809 (and
796 calc-embedded-active (cons found calc-embedded-active))) 810 (setq found (list (current-buffer))
811 calc-embedded-active (cons found calc-embedded-active)
812 calc-embedded-firsttime-buf t)
813 (let ((newann (assoc major-mode calc-embedded-announce-formula-alist))
814 (newform (assoc major-mode calc-embedded-open-close-formula-alist))
815 (newword (assoc major-mode calc-embedded-open-close-word-alist))
816 (newplain (assoc major-mode calc-embedded-open-close-plain-alist))
817 (newnewform
818 (assoc major-mode calc-embedded-open-close-new-formula-alist))
819 (newmode (assoc major-mode calc-embedded-open-close-mode-alist)))
820 (when newann
821 (make-local-variable 'calc-embedded-announce-formula)
822 (setq calc-embedded-announce-formula (cdr newann)))
823 (when newform
824 (make-local-variable 'calc-embedded-open-formula)
825 (make-local-variable 'calc-embedded-close-formula)
826 (setq calc-embedded-open-formula (nth 0 (cdr newform)))
827 (setq calc-embedded-close-formula (nth 1 (cdr newform))))
828 (when newword
829 (make-local-variable 'calc-embedded-open-word)
830 (make-local-variable 'calc-embedded-close-word)
831 (setq calc-embedded-open-word (nth 0 (cdr newword)))
832 (setq calc-embedded-close-word (nth 1 (cdr newword))))
833 (when newplain
834 (make-local-variable 'calc-embedded-open-plain)
835 (make-local-variable 'calc-embedded-close-plain)
836 (setq calc-embedded-open-plain (nth 0 (cdr newplain)))
837 (setq calc-embedded-close-plain (nth 1 (cdr newplain))))
838 (when newnewform
839 (make-local-variable 'calc-embedded-open-new-formula)
840 (make-local-variable 'calc-embedded-close-new-formula)
841 (setq calc-embedded-open-new-formula (nth 0 (cdr newnewform)))
842 (setq calc-embedded-close-new-formula (nth 1 (cdr newnewform))))
843 (when newmode
844 (make-local-variable 'calc-embedded-open-mode)
845 (make-local-variable 'calc-embedded-close-mode)
846 (setq calc-embedded-open-mode (nth 0 (cdr newmode)))
847 (setq calc-embedded-close-mode (nth 1 (cdr newmode)))))))
797 (while (and (cdr found) 848 (while (and (cdr found)
798 (> point (aref (car (cdr found)) 3))) 849 (> point (aref (car (cdr found)) 3)))
799 (setq found (cdr found))) 850 (setq found (cdr found)))
800 (if (and (cdr found) 851 (if (and (cdr found)
801 (>= point (aref (nth 1 found) 2))) 852 (>= point (aref (nth 1 found) 2)))
802 (setq info (nth 1 found)) 853 (setq info (nth 1 found))
854 (setq calc-embedded-firsttime-formula t)
803 (setq info (make-vector 16 nil) 855 (setq info (make-vector 16 nil)
804 new-info t 856 new-info t
805 fresh t) 857 fresh t)
806 (aset info 0 (current-buffer)) 858 (aset info 0 (current-buffer))
807 (aset info 1 (or cbuf (save-excursion 859 (aset info 1 (or cbuf (save-excursion