【Emacs】新しい補完スタイル hotfuzzの設定

hotfuzzという補完スタイルを提供するEmacsパッケージがある.

github.com

あいまい入力の補完を助けるので,とても便利である.

さらなる高速化を望むなら,hotfuzzの動的モジュールのソースコードコンパイルしてロードパスの通ったところに置く必要がある. 筆者は ~/.emacs.d/hotfuzz に置いたということ. hotfuzz-max-highlighted-completions はデフォルト値が25だが,あまり大きくする意味もなかったので,一番小さくしておいた.

consultと一緒に用いる場合,consult--tofu-charUnicode範囲外をあえて指定しているのが不具合を引き起こすので(consult-lineなどで), これを "Supplementary Private Use Area-B" の範囲で指定するように変更した.これはhotfuzz公式リポジトリに書かれたTIPSである.

(add-to-list 'load-path "~/.emacs.d/hotfuzz")
(setq completion-styles '(basic partial-completion hotfuzz)) ;; hotfuzzをfallbackに活用する
(setq completion-category-overrides nil)
(setq hotfuzz-max-highlighted-completions 1) ;; 正の整数 大きすぎるのはダメ
(with-eval-after-load 'consult
  (setq consult--tofu-char #x100000
        consult--tofu-range #x00fffe))

補完候補が毎回出過ぎるのも困るので,hotfuzzは completion-styles の一番後ろに置き,basicやpartial-completionのfallbackにしてみた. このあたりは各自がどのような場面で補完を使うのかに依存する.プログラミング系だと先頭完全一致(=basic)を先に置かないと候補が最初から出すぎるおそれがあるなど.

もしorderlessを併せて使うときには

(setq completion-styles '(basic partial-completion hotfuzz orderless))
(setq completion-category-overrides '((file (styles basic partial-completion))))

とするのがいいのかもしれない.