一人プロジェクトのコミットメッセージなんか git now で充分ぐらいに思っている意識の低い私が、
【今日からできる】コミットメッセージに 「プレフィックス」 をつけるだけで、開発効率が上がった話 - Qiita
https://qiita.com/numanomanu/items/45dd285b286a1f7280ed
に感化されて長続きできるように行なったEmacsの設定です。
1. yasnippet で :
を登録
Emacs ユーザーは全員 magit と yasnippet を使っているという前提で書いてしまいますが、magit からコミットメッセージ編集モードに入るとデフォルトでは text-mode になるので、そこに yasnippet の略語を登録しておきます。
docs の場合は ci を飛ばすことが多いので一緒に [ci skip]
も入れときます。
# --
`(yas-choose-value '("feat" "fix" "[ci skip] docs" "style" "refactor" "perf" "test" "chore"))`: $0
これで : <TAB>
と入力して、プレフィクスを一覧から選ぶだけで入力できるようになりました。
ところが、上の設定でしばらく使ってみて気づいたのですが、 magit の場合は [xxx]
形式にした方が良さそうです。というのも [xxx]
形式だとコミット一覧のとき色がついて見やすくなります。なので今は次の設定で使っています。
# --
`(yas-choose-value '("[feat]" "[fix]" "[docs][ci skip] Update" "[style]" "[refactor]" "[perf]" "[test]" "[chore]"))` $0
2. :
の入力を忘れないようにする
yasnippet の略語すべてに言えることですが、何に登録したのか思い出せず、そのうち登録したことも忘れるという問題があります。
なので git のコミットメッセージのテンプレートに最初から書いておきます。
次のファイルを作って git config --global commit.template ~/.gitmessage.txt
で ~/.gitconfig に反映します。
:
これならさすがに忘れることはないでしょう。
3. 毎回 TAB (C-i) を押すのも面倒になってきたので
:
を見て毎回カーソル右してTABするのも面倒になってきたのでここも自動化しておきます。
(add-hook 'git-commit-setup-hook 'git-commit-prefix-select)
(defun git-commit-prefix-select ()
(forward-char)
(yas-expand))
これでコミットメッセージを書こうとしたとき、すでにプレフィクスの選択肢が出ているようになります。