Emacsのibufferでcounselを使ってibuffer-find-fileのようなことをする
モチベーション
ibufferでC-x C-f
すると、実はfind-file
ではなくibuffer-find-file
が呼び出されている。
これは普通のfind-file
と違い、ibufferの現在のカーソル位置のディレクトリでfind-file
をする。
たとえば、~/project/test.c
の上にカーソルをおいてibuffer-find-file
すると、~/project
を初期値としてfind-file
が走る。
一方で、counsel-find-file
という便利な関数がある。
これはcounselパッケージが持つ関数の1つで、counselの便利なUIと補完環境の上でfind-file
と同様のことができる。
そこで、ibufferの上で、しかもibufferでのカーソル位置のディレクトリを認識してcounsel-find-file
できると便利である。
これを行う関数を今回作った。
コード
use-package
を使っている。
使わない場合は、関数を抜き出して、define-key
などで好きなキーバインドに設定すればよい。
(use-package ibuffer
:config
;; ibuffer-find-fileを使わずにcounselを使う
(defun ibuffer-find-file-by-counsel ()
"Like `counsel-find-file', but default to the directory of the buffer
at point."
(interactive)
(let ((default-directory
(let ((buf (ibuffer-current-buffer)))
(if (buffer-live-p buf)
(with-current-buffer buf
default-directory)
default-directory))))
(counsel-find-file default-directory)))
:bind (("C-x C-b" . ibuffer)
:map ibuffer-mode-map ("C-x C-f" . 'ibuffer-find-file-by-counsel)))
参照
Author And Source
この問題について(Emacsのibufferでcounselを使ってibuffer-find-fileのようなことをする), 我々は、より多くの情報をここで見つけました https://qiita.com/keita44_f4/items/93a03c09c38f0e5b5256著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .