Emacs helm のこと

helm のいろいろ。

helm-follow-mode

helmセッションが有効なときに C-c C-f で helm-follow-mode (HF) の有効・無効を切りかえられる。

HFが有効なとき、候補選択と同時にその候補をすぐ表示する。 有効でないときは C-j (helm-execute-persistent-action)を実行する必要がある。

helm-help

helmセッション中に C-h m (helm-help)を実行するとコンテキストごとのヘルプが表示される。 Emacs のドキュメントは普通 info 形式のはずだが、helm は Org モード?のヘルプになっている。

helm-find-files で helm-execute-persistent-action が symlink を展開する件

TAB に helm-excute-persistent-action を割り当てているけど、TAB押すとシンボリックリンクが展開されてしまい使いづらい。

下記関数の中で symlink を展開している。

helm-find-files-persistent-action-if

この中でファイルへのsymlinkなら helm-execute-persistent-action でリンクを展開してしまう。 symlink でもリンク先がディレクトリなら展開しない。

ディレクトリへのSymlinkの場合 C-uを付けると file-truename (シンボリックリンクを展開する関数)を呼んで展開する。

ファイルへのsymlinkではそうなっておらず、C-uを付けると転換しないで中身を表示するがが、C-uを付けないと展開する。動きが逆なんだよなあ。同じにしてほしいなあ。

↓ファイルへのsymlinkのとき file-truename 呼ばないよう、修正してる人いた。

Emacs で Helm をストレスなく使うための個人的な設定 (2) - あらびき日記

;; A symlink file, expand to it's true name. (first hit)
((and (file-symlink-p candidate) (not current-prefix-arg) (not follow))
 (cons (lambda (_candidate)
         (funcall insert-in-minibuffer candidate))

↓ 変更(file-truename を削除)

;; A symlink file, expand to it's true name. (first hit)
((and (file-symlink-p candidate) (not current-prefix-arg) (not follow))
 (cons (lambda (_candidate)
         (funcall insert-in-minibuffer (file-truename candidate)))

変更したら M-x emacs-lisp-byte-compile-and-load で再コンパイルしてロードしておく。

Emacsは適切な検索キーワードを見つけるのが難しい気がする。原因までたどり着いてようやく修正している人にたどり着いた。

どうせコード変更するなら、TAB で補完するようにしたい

そのうちチャレンジしてみようかな。

TAB を helm-execute-persistent-action に割り当ててるけど、普通の補完とは動きが違うんだよね。 helm-file-files だと、カーソル下のファイル名を minibuffer に取り込むけど、 Emacs の普通の補完だと、すべてのファイルのうち前方一致する部分までを minibuffer に取り込む。 その動きをさせてみたい。