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

[xyzzy:02423] save-winconf



亀井さん、こんにちは。

xyzzy 起動時のレジュームではなく、一時的に窓の構成を記憶復元させる
ものを history.l からの切り貼りで作りました(内容的にはよくわかって
ない(^^;;)が、1回しか復元してくれません。どこをどういじれば、2回以
上復元が有効になるんでしょうか(その都度 save すれば、うまくいくみ
たいです)。


----------------------------------------------------------------
;;; -*- Mode: Lisp; Package: EDITOR -*-
;;;
;;; Is this file part of xyzzy?
;;;
;;; save-winconf.l

;;; 現在の窓構成を臨時に記憶し、1回だけ復元。

(provide "winconf")

(in-package "editor")

(export '(restore-winconf save-winconf *current-winconf*))

(defvar *current-winconf* nil)

(defun restore-winconf ()
  (interactive)
  (when *current-winconf*
	(let* ((conf *current-winconf*)
		   (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-winconf ()
  (interactive)
  (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)))
	(setq *current-winconf* conf)))

--------
須田誠也(suda seiya)
seiya.suda@xxxxxxxxxxx
http://member.nifty.ne.jp/seiya-suda/

Index Home