えー、今回は common lisp のコードを書こうと思ったらキーバインドが気になって、init.el を編集してるうちに elisp パッケージ探しに走ってしまい、気が付いたらリファレンスを見ながら elisp を書いていたという yak shaving の最たるものになってしまいました。
なので、せめて動いたコード片だけでも載せておこうと思います。
以下は persp-mode で新規パースペクティブを作成した時(厳密にはバッファがないパースペクティブに切り替えた時)にバッファを選択して登録する設定です。
毎度おなじみ rubikitch 様のサイトからコピーして、四苦八苦しながら希望する動作になるよう改造(改悪?)しました。
ホント、いつもお世話になってます。密度の濃い情報ありがとうございます。 > rubikitch 様
設定した persp-mode のバージョンは 20161226.2218 です。
;;; persp-mode 設定 (setq persp-add-on-switch-or-display t) (persp-mode 1) ;;; 新規パースペクティブ作成時に追加するバッファを選択する (defun persp-register-buffers () ; 関数名変更 (interactive) (dolist (bufname (condition-case _ (helm-comp-read "Buffers: " (mapcar 'buffer-name (buffer-list)) :must-match t :marked-candidates t) (quit nil))) (persp-add-buffer (get-buffer bufname)))) ;; ここから追加分 (defun persp-register-buffers-if-empty (mode) (interactive) (if (null (persp-buffer-list)) ; パースペクティブのバッファが空の時だけ (persp-register-buffers))) ; 上のバッファ選択関数を呼ぶ (add-hook 'persp-activated-functions 'persp-register-buffers-if-empty) ; フック名が変わった?
それから、persp-mode 用の helm アクションも見様見真似で作ってみました。
いちおう動いているようですが、使用は自己責任でお願いします。
(defun helm-persp-add-buffer (buffer-or-name) (persp-add-buffer (helm-marked-candidates))) (defun helm-persp-kill-buffer (buffer-or-name) (persp-kill-buffer (helm-marked-candidates))) (setq helm-type-buffer-actions (append helm-type-buffer-actions '(("Add buffer(s) to perspective" . helm-persp-add-buffer) ("Kill buffer(s) from perspective." . helm-persp-kill-buffer))))
以上です。