バッファのタブをタブブラウザみたいに使いたい

 ということで、親切な人が教えてくれたので早速入れてみる。
教えてもらったタブ周りのlispはこれ
ふかふか
で、ついでに、そこで参照を進めているタブのメニューの改造の仕方はxyzzy の音 - メニューのカスタマイズこちら。

結局自分がやったことは、まず、ふかふかの所のを導入。続いてbaffuerの所のメニューを改造。単に入れただけ。

;バッファのメニュー関係
;バッファのメニュー関係
(add-hook '*init-app-menus-hook*
          #'(lambda ()
              (let ((menu *buffer-bar-context-menu*))
                (add-menu-separator menu nil)
                (add-menu-item menu nil "これより右を閉じる(&R)"
							   'mybb-close-right-buffers)
                (add-menu-item menu nil "これより左を閉じる(&L)"
							   'mybb-close-left-buffers)
				(add-menu-item menu nil "これ以外を閉じる(&D)"
							   'mybb-close-other-buffers)
				(add-menu-item menu nil "全てコピー"
							   'copy-all-to-clipboard)
				(add-menu-item menu  nil "バイトコンパイル(&C)"
							   'my-buffer-menu-byte-compile-file
							   #'(lambda (&optional prog)
								   (unless
									   (and(get-buffer-file-name
											*buffer-bar-context-menu-buffer*)
										   (if prog (file-exist-p prog) t))
									 :disable))
							   ))))


;; これ以外を閉じる
(defun mybb-close-other-buffers ()
  (interactive)
  (let ((buf0 *buffer-bar-context-menu-buffer*))
    (dolist (buffer (buffer-list))
      (unless (or (eq buffer buf0)
		  (string= (buffer-name buffer) "*scratch*"))
	(kill-buffer buffer)))))

;; これより右を閉じる(version 0.2.2.233 以降)
(defun mybb-close-right-buffers ()
  (interactive)
  (let ((buffer *buffer-bar-context-menu-buffer*)
	(buff (get-next-buffer (get-next-buffer :bottom nil t) nil t)))
    (let ((buf (get-next-buffer buffer nil t)) buf1)
      (while (not (equal buf buff))
	(setq buf1 buf)
	(setq buf (get-next-buffer buf nil t))
	(unless (string= (buffer-name buf1) "*scratch*")
	  (kill-buffer buf1))))
    (switch-to-buffer buffer)))

;; これより左を閉じる(version 0.2.2.233 以降)
(defun mybb-close-left-buffers ()
  (interactive)
  (let ((buffer *buffer-bar-context-menu-buffer*)
	(buff (get-next-buffer (get-next-buffer :top nil t) t t)))
    (let ((buf (get-next-buffer buffer t t)) buf1)
      (while (not (equal buf buff))
	(setq buf1 buf)
	(setq buf (get-next-buffer buf t t))
	(unless (string= (buffer-name buf1) "*scratch*")
	  (kill-buffer buf1))))
    (switch-to-buffer buffer)))

;; 全てクリップボードにコピー
(defun copy-all-to-clipboard ()
  (interactive)
  (copy-region-to-clipboard (point-min) (point-max)))

;;バイトコンパイルとか
(defun my-buffer-menu-byte-compile-file ()
  (interactive)
  (if (string= "l" (pathname-type (get-buffer-file-name)))
	  (byte-compile-file (get-buffer-file-name))))

xyzzyの音の所に載っている設定例とかけ離れているのが気になるが。特にバッファの確認とか、移動とか事細かに指定しているのに自分の奴は何も書いてないというか、まあ、それでも動くからいいやと言うか。そんな感じ。

■追記
少し思ったのはタグジャンプした場合にはバッファを名前をつけて開いて、何かの単純なキーとかでbaffuerを閉じてもいいかもしれない。