Back ...
Last modified: "2003/05/14 18:00:24"

バッファリストをポップアップで表示

(defun popup-buffer ()
  (interactive)
  (let ((menu (create-popup-menu nil)))
    (continue-pre-selection)
    (save-excursion
      (dolist (buffer (buffer-list))
        (let ((item (buffer-name buffer)))
          (when (zerop (string/= item " "))
            (add-menu-item menu nil
                           item
                           #'(lambda () (interactive)
                               (switch-to-buffer item))
                           #'(lambda ()
                               (when (string= item (buffer-name (selected-buffer)))
                                 :check)))))))
    (track-popup-menu menu)))
(define-key ctl-x-map #\b 'popup-buffer)

非表示バッファリストをポップアップで表示

(defun popup-hide-buffer ()
  (interactive)
  (let ((menu (create-popup-menu nil)))
    (continue-pre-selection)
    (save-excursion
      (dolist (buffer (buffer-list))
        (let ((item (buffer-name buffer)))
          (unless (or (zerop (string/= item " "))
                      (string= item " *Minibuf0*"))
            (add-menu-item menu nil
                           item
                           #'(lambda () (interactive)
                               (switch-to-buffer item))
                           #'(lambda ()
                               (when (string= item (buffer-name (selected-buffer)))
                                 :check)))))))
    (track-popup-menu menu)))
(define-key ctl-x-map '(#\h #\b) 'popup-hide-buffer)

ファイルを visit している場合はファイル名でリストを作成

(defun popup-buffer-fn ()
  (interactive)
  (let ((menu (create-popup-menu nil)))
    (continue-pre-selection)
    (save-excursion
      (dolist (buffer (sort (buffer-list) #'string< :key #'get-buffer-file-name))
        (let ((item (buffer-name buffer))
              (fn (get-buffer-file-name buffer)))
          (when (zerop (string/= item " "))
            (add-menu-item menu nil
                           (or fn item)
                           #'(lambda () (interactive)
                               (switch-to-buffer item))
                           #'(lambda ()
                               (when (string= item (buffer-name (selected-buffer)))
                                 :check)))))))
    (track-popup-menu menu)))
(define-key ctl-x-map #\v 'popup-buffer-fn)

フレーム版(つかわなさそう。。。)

(defun popup-frame ()
  (interactive)
  (let ((menu (create-popup-menu nil)))
    (continue-pre-selection)
    (save-excursion
      (dolist (pfr ed::*pseudo-frame-list*)
        (let ((item (ed::pseudo-frame-name pfr)))
          (when (zerop (string/= item " "))
            (add-menu-item menu nil
                           item
                           #'(lambda () (interactive)
                               (switch-pseudo-frame item))
                           #'(lambda ()
                               (when (string=
                                      item
                                      (ed::pseudo-frame-name (selected-pseudo-frame)))
                                 :check)))))))
    (track-popup-menu menu)))
(define-key ctl-x-map #\p 'popup-frame)

Back ...