バッファ切り替えのためのiflipbの設定 / setting for iflipb to switch buffer

iflipbという、バッファ切り替えのためのパッケージが存在する:
emacs.rubikitch.com

私は以下の設定としている。
カレントバッファと同じメジャーモードのバッファのみを切り替え対象にしたいため、新たに関数を書いた。

(require 'iflipb)

(setq iflipb-wrap-around t)
(setq iflipb-ignore-buffers (list "^[*]"))
(defun my-iflipb-buffer-list ()
  "Returns list of buffers whose major-mode is the same as current buffer's one."
  (let ((cur-buf-list (buffer-list (selected-frame)))
        (same-major-mode-buflist nil)
        (currbuf-major-mode
         (buffer-local-value 'major-mode (current-buffer))))
     (dolist (buffer cur-buf-list)
      (if (eq (buffer-local-value 'major-mode buffer) currbuf-major-mode)
          (add-to-list 'same-major-mode-buflist buffer)))
     (nreverse same-major-mode-buflist)))
(setq iflipb-buffer-list-function 'my-iflipb-buffer-list)

(global-set-key (kbd "C-<tab>") 'iflipb-next-buffer)
(global-set-key (kbd "C-S-<tab>") 'iflipb-previous-buffer)

How to obtain list of buffers as same as current buffer

(defvar major-mode-same-buflist nil)
(defun get-major-mode-list ()
  (interactive)
  (setq major-mode-same-buflist nil)
  (let ((currbuf-major-mode
         (buffer-local-value 'major-mode (current-buffer))))
    (dolist (buffer (buffer-list))
      (if (eq (buffer-local-value 'major-mode buffer) currbuf-major-mode)
          (add-to-list 'major-mode-same-buflist buffer)))))

How to obtain list of buffer names as same as current buffer

(defvar major-mode-same-buflist nil)
(defun get-major-mode-list ()
  (interactive)
  (setq major-mode-same-buflist nil)
  (let ((currbuf-major-mode
         (buffer-local-value 'major-mode (current-buffer))))
    (dolist (buffer (buffer-list))
      (if (eq (buffer-local-value 'major-mode buffer) currbuf-major-mode)
          (add-to-list 'major-mode-same-buflist (buffer-name buffer))))))

C-TABでバッファ切り替え

Emacsのデフォルトパッケージbsに同梱されているコマンド、bs-cycle-nextとbs-cycle-prevを使う。

(global-set-key (kbd "C-<tab>") 'bs-cycle-next)
(global-set-key (kbd "C-S-<tab>") 'bs-cycle-previous)

同様の機能はiflipbというパッケージによっても提供されている。
emacs.rubikitch.com
iflipbはOS提供のAlt-TAB(MacだとCommand-TAB)と同様の挙動であり、こちらが好みの方はどうぞ。

Emacsにおいてカーソル下の単語をMacの辞書で調べるときのhack

関数の本体はどこかにあった設定を参考にさせていただいた。
my-dictが表題に沿った関数。my-dict2は自分で検索語句を入力する関数。

(defun my-dict () (interactive)
   (let ((url (concat "dict://" (read-from-minibuffer "Search: " (current-word))))
         (browse-url-browser-function 'browse-url-default-browser))
     (browse-url url)))

(defun my-dict2 (key) (interactive "MSearch: ")
   (let ((url (concat "dict://" key))
         (browse-url-browser-function 'browse-url-default-browser))
     (browse-url url)))

(global-set-key  (kbd "C-: C-d") 'my-dict)
(global-set-key  (kbd "C-: C-s") 'my-dict2)

EmacsのFrame切り替えを補助するEmacs Lisp

表題について、以下のElispを見つけたので紹介する。

frame-movementというパッケージである。
github.com

本パッケージにより、'frame-movement/select-next-frame' (次のフレームに移動)と 'frame-movement/select-prev-frame'(前のフレームに移動)という2つのコマンドが提供される。私はsmartrepと組み合わせて以下のように設定してみた。

(smartrep-define-key global-map "C-x 5"
  '(("C-o" . 'other-frame)
    ("C-n" . 'frame-movement/select-next-frame)
    ("C-p" . 'frame-movement/select-prev-frame)))