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)))

簡易ボイスチェンジャーのスクリプトを改良:PyQt5のスライダーによりピッチとフォルマントをリアルタイム調整する機能を追加

PyQt5のスライダーを使って、簡易版リアルタイムボイスチェンジャーのピッチとフォルマントを調整できるようにしたということ。スライダーのウィンドウを閉じれば終了する。
当初はTkinterを使う予定だったが、どうにもうまくいかなかったので、PyQt5にした。現状、UIまわりは雑だが、とりあえず動いたので良しとする。
gist.github.com