高尾宏治日記 on はてなブログ

プログラミング言語Rubyを中心とした技術情報を扱うブログです(Microsoft Surfaceはやめました)。

which-keyが遅すぎる

最近MacBook 12インチに乗り換えた高尾です。ついでに、「Emacs + 自前の.emacs.d」から「Emacs + Spacemacs」にも乗り換え済み。マシンのメモリ不足からちょっともっさりした感じはありますが、所有欲は十二分に満たされていますので大丈夫です!なにも気にならない、気にしない!!!

さて、今回は、Emacs + Spacemacsに関する記事です。

見つけたぞ、which-key!

次のファイルを編集するよ。Control-x Control-f...あらま、また固まったか...一休みだな。

これはEmacs + Spacemacsを使っているときによく起きることです。

マシンの性能によると思いますが、Spacemacsのコマンド候補の表示(Control+xを押してしばらく待つとminibufferに表示されるやつ)が遅すぎます。少なくとも、手元のMacBook '12 Early 2016だと、候補が多い場合は5秒程度はEmacsが応答しなくなる。これでは困ります。

なんとか改善できないか、調査してみます。そもそも、どのパッケージでそれを実現しているかを調べるところからですね。

ここは、eww-search(Emacs での テキストブラウザ eww を使えるレベルにする | Futurismo)の出番ですね。まだ慣れておらず、うっかりSafariを使ったりしてしまいますが、ewwのほうがよいこともたくさんあります。特に、0キーでマークダウン形式のURLをコピーできるのは使いやすいですね。

で、ググってもなかなか見つけられず...そもそもよいキーワードが思いつきませんね。「spacemacs minibuffer command list」ではだめでした。

それならばということで、 ~/.emacs.d/elpa/ を探索。それっぽいのはないかな。ace-windowってなんだろ、completeを含むものかな、なんて考えながら見ていくと、which-keyというそれっぽいものがあるでないですか。

which-key.elにもそれらしい記述があります。これで間違いなさそうです。

カスタマイズド、which-key。

which-key.elを読むと、defcustomでいろいろ設定項目が定義されています。 気になったのは、コマンド入力をやめてから候補を表示するまでの待ち時間 which-key-idle-delay だけですね。さて、defcustomってどうやって設定するんだったかな?setqでいいのかな???

ここでもeww-search。役立つね。で、defcustomで定義された変数はsetqではなくcustom-set-variablesで設定すべき理由 - kawamuray's blogを見つけました。

.spacemacsのdotspacemacs/user-config ()に以下を追加して様子見です。さて、どうかな。

(custom-set-variables '(which-key-idle-delay 10.0))