transientはMagitの様なUIを実現するためのライブラリです。元々はmagit-popupという名前のパッケージでしたが、そこから分岐したようです。transientを使ってちょっとしたUIを作成してみます。

https://github.com/magit/transient

インストール

transientMELPAにアーカイブされています。package-installで インストールします。

M-x package-install RET transient

もしくは

(package-install 'transient)

テスト用の関数を準備する

まずテスト用関数を1つ定義します。呼び出されたらmessageを使って文字列を表示するだけの簡単な関数です。

(defun testing-hello-world ()
  "Hello World"
  (interactive)
  (message "Hello world!"))

簡単なUIを作成する

testing-hello-worldをtransientのUIに組み込でみましょう。define-transient-command1というマクロが用意されています。

(define-transient-command testing ()
  "DESCRIPTION"
  ["Prefix Command 1"
   ("h" "testing-hello-world" testing-hello-world)])

https://media.giphy.com/media/eH4RBTcNn0P47QULYE/source.gif

1magit-popupではmagit-define-popupという名前のマクロでした。

まとめ

transientを使ってMagitのようなUIを作成してみました。define-transient-commandでUIを定義でき、簡単なUIを作成して動作する事を確認しました。