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

[xyzzy:04458] Re: my-open-xxx



藤本さん、こんにちは。

	2000年4月19日(水)[21:52:56]の、
	[xyzzy:04452] my-open-xxx
	への返事です。

| これはこれで良いのですが、たとえばC-F7でsiteinit.lを開きたい時は、
| my-open-siteinitみたいな関数を改めて作っています。本当は、
| ファイル名を引数にして渡したいのですが、どのようにすれば良いか
| 分かりません。何かヒントがあれば教えていただけますか?
| 
| 後、本当はC-F5を押したら.xyzzyを開いて、もう一度押したら直前に
| 開いてたバッファを開きたいのですが、これもやり方が分からないので、
| 今は「既に開いてた」を表示しています。何かうまいやり方はありません
| でしょうか?

こんな?

(defvar *your-open-file-alist* nil)

(defun your-open-file (filename)
  (let ((buffer (get-file-buffer filename))
	(obuffer (selected-buffer)))
    (cond ((eq buffer obuffer)
	   (setq buffer (cdr (assoc buffer *your-open-file-alist*)))
	   (cond ((null buffer)
		  (plain-error "ないっす"))
		 ((deleted-buffer-p buffer)
		  (plain-error "削除されてるっす"))
		 (t
		  (set-buffer buffer))))
	  (t
	   (if buffer
	       (set-buffer buffer)
	     (progn
	       (find-file filename)
	       (setq buffer (selected-buffer))))
	   (let ((x (assoc buffer *your-open-file-alist*)))
	     (if x
		 (setf (cdr x) obuffer)
	       (push (cons buffer obuffer) *your-open-file-alist*)))))))

(global-set-key #\C-F5 '(lambda () (interactive) (your-open-file "~/.xyzzy")))

-- 
亀井哲弥(Tetsuya Kamei)
kamei@xxxxxxxxxxxx

Index Home