StumpWM に影響されて... run-or-raise の実装

StumpWM を使ってると run-or-raise が非常に便利で便利で困ってしまいます。これが無いと自分がセッティングした場所にいくのがめんどくさいんですよね。フレームサイズとか、位置とか、お気に入りのポジションがありますからね。で、Emacs でもその機能があれば elscreen がもっと快適になると思い作りました。

(defun open-or-raise-buffer (file-path)
  (interactive "FCreate or move file-buffer:")
  (let ((buffer-name (file-name-nondirectory file-path)))
    (cond ((bufferp (get-buffer buffer-name))
           (elscreen-find-and-goto-by-buffer buffer-name t)
           (message "Jump frame: %s" buffer-name))
          (t (find-file-noselect buffer-name)
             (elscreen-find-and-goto-by-buffer buffer-name t)
             (message "Create buffer: %s" buffer-name)))))

コマンドを実行します。

M-x open-or-raise-buffer

その後に出てくるプロンプトでファイル名、もしくは開いてるバッファ名を入れるとそのフレームにジャンプします。バッファに同じ物がなければ新しく elscreen でタグを作ります。

Create or move file-buffer:~/hoge

最初は interactive 使うつもりはなく、只の関数として使う予定だったんですが、意外と普通に使っても便利なので仕様変更しました。これキーバインドに仕込んでからが本領でした。さすが StumpWM から持ってきた機能ですね。既にあったらメシマズですけど...