ぐるっとぐりっど

日曜プログラマがいろいろ試してみたことを、後の自分のためにまとめておく場所

use-packageで最近知った機能3選

最近、.emacsの整理をしていて、use-packageがデフォルトでdiminishを付属させないことを知りました。

で、ついでにREADME.orgをあらためて読みかえしてたら、これまで知らなかった面白い機能がいくつかあることを知ったので紹介。
(package.elを使うと、emacs上でアップデートができてしまうので、破壊的な変更に気付かずに、いつのまにか挙動変わってる...ってことがしばしばあるのが厄介ですね)

ちなみに、use-packageの基本的な使いかたは、kai2nenobuさんの、この記事がお勧め。

qiita.com

imenuに対応させる

個人的に今回かなりのヒットだったのがこれ。

(setq use-package-enable-imenu-support t)
(require 'use-package)

とすると、emacslisp-modeの場合に、use-packageの各パッケージ設定がimenuに載ってきてくれる。
ポイントは、requireの前に書くこと。

f:id:grugrut:20190105202730p:plain
use-packageをimenuに対応

これまで、init.elから目的の設定を探すのに、isearchしてみたり、helm-swoopしてみたりと苦戦していたのだけど、一発でジャンプできるようになった。

use-packageの状況を確認する

(use-package-compute-statistics t)

しておくと、M-x use-package-reportで、各パッケージの読み込み状況(:configまで進んだとか、:initまでとか)がわかる。

f:id:grugrut:20190105203002p:plain
use-package-report

状況が変化した日時と時間がわかるのだけど、多分累計じゃないと思う。org-modeのloadがこんな短いわけがないので。

key-chordを設定する

key-chordは、emacsに同時押しを実現するパッケージです。
use-packageのマクロにこの設定を組み込むことができるらしい。

(use-package use-package-chords
  :ensure
  :config (key-chord-mode 1))

(use-package view
  :ensure
  :defer t
  :chords (("jk" . view-mode)))

こんな感じで、:chordsキーワードが使えるようになる。
ただ残念なのが、使えるのがオリジナルのkey-chordなので、暴発問題が残っている。
こちらの改良版の方が便利だと思うので使いどころかも(うまく上書きできればよさげだけど)

qiita.com

ちなみに、このマクロ拡張のための機能が提供されているようで、純正のもの以外にも、hydraを使えるようにするuse-package-hydraなんてのもあるみたい。

おわりに

README.orgを読むと、他にもいろいろ書いてある(:afterキーワードでandとかorとか使えるってことも知らなかった。使いどころは?だけども)ので、当然のことながら、原典をまずは読むべし。