[xyzzy:02423] save-winconf
- Subject: [xyzzy:02423] save-winconf
- From: Seiya Suda <seiya.suda@xxxxxxxxxxx>
- X-mailer: Denshin 8 Go V321.2b5
亀井さん、こんにちは。
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/