[Date Prev] [Date Index] [Date Next]
[Thread Prev] [Thread Index] [Thread Next]

[xyzzy:03774] Re: 画面構成を記憶させたい (Re: 拡張子の一括変換 )



こんにちは。須田です。

        Thu, 30 Dec 1999 01:17:19 +0900 の
        [xyzzy:03772] Re: 画面構成を記憶させたい(Re:  拡張子の一括変換 )
        に関するメールにお答えします。

レジスター保存はまだ一時的なので、ファイルに保存するのも
考えました。ただ、あまりにも亀井さんからの泥棒だし、必ず
しもスマートでないので、どこにも出していませんが、もしもっ
とよくなればと思って出します。改良のほど、お願いします > みなさん

酔っ払ってるからどこかミスがあるかも。

M-x your-popup-menu

ってやってください。*root* は適当に変えて。

しっかし、カッコ悪いな。


-------------------------------------------
(defavar *root* "H:/root/")

(defun save-window-configuration (s)
  (let ((conf (current-window-configuration)))
	(setf (cadr conf) (position (cadr conf) (caddr conf) :key #'car))
	(setf (caddr conf)
		  (mapcar #'(lambda (x)
					  (mapcar #'(lambda (x)
								  (cond ((windowp x) nil)
										((markerp x)
										 (marker-point x))
										((bufferp x)
										 (cons (get-buffer-file-name x)
											   (buffer-name x)))
										(t x)))
							  x))
				  (caddr conf)))
	(write `(in-package ,(package-name *package*)) :stream s :escape t)
	(write `(restore-window-configuration ',conf)
		   :stream s :escape t)
	(terpri s)))

(defun restore-window-configuration (conf)
  (when conf
	(let ((n (cadr conf)))
	  (setf (cadr conf) nil)
	  (mapc #'(lambda (x)
				(setf (cadr x)
					  (let ((f (cadr x)))
						(or (and (car f) (get-file-buffer (car f)))
							(find-buffer (cdr f))))))
			(caddr conf))
	  (set-window-configuration conf)
	  (when n
		(ignore-errors (other-window n))))))

(defun save-wconf-type1 ()
  (interactive)
  (with-open-file (s (concat *root* ".xyzzy-savewinconf-1")
					 :direction :output
					 :if-exists :supersede
					 :if-does-not-exist :create)
	(save-window-configuration s)))

(defun restore-wconf-type1 ()
  (interactive)
  (load (concat *root* ".xyzzy-savewinconf-1")))

(defun save-wconf-type2 ()
  (interactive)
  (with-open-file (s (concat *root* ".xyzzy-savewinconf-2")
					 :direction :output
					 :if-exists :supersede
					 :if-does-not-exist :create)
	(save-window-configuration s)))

(defun restore-wconf-type2 ()
  (interactive)
  (load (concat *root* ".xyzzy-savewinconf-2")))

(defun save-wconf-type3 ()
  (interactive)
  (with-open-file (s (concat *root* ".xyzzy-savewinconf-3")
					 :direction :output
					 :if-exists :supersede
					 :if-does-not-exist :create)
	(save-window-configuration s)))

(defun restore-wconf-type3 ()
  (interactive)
  (load (concat *root* ".xyzzy-savewinconf-3")))


;;; ポップアップメニュ

(provide "your-popup-menu")

(defvar *your-popup-menu* nil) 

(defun your-popup-menu ()
  (interactive)
  (setq *your-popup-menu*
	(define-popup-menu
	  (:popup 'winconf "SaveWinconf(&S)"
	   (:item nil "タイプ1"
		'save-wconf-type1)
	   (:item nil "タイプ2"
		'save-wconf-type2)
	   (:item nil "タイプ3"
		'save-wconf-type3))
	  (:popup 'winconf "RestoreWinconf(&R)"
	   (:item nil "タイプ1"
		'restore-wconf-type1)
	   (:item nil "タイプ2"
		'restore-wconf-type2)
	   (:item nil "タイプ3"
		'restore-wconf-type3))))
  (track-popup-menu *your-popup-menu*))

Index Home