LoginSignup
15
15

More than 5 years have passed since last update.

【今日から続けたい】Emacsでコミットメッセージにプレフィクスを簡単につけれるようにする

Last updated at Posted at 2018-01-23

一人プロジェクトのコミットメッセージなんか git now で充分ぐらいに思っている意識の低い私が、

【今日からできる】コミットメッセージに 「プレフィックス」 をつけるだけで、開発効率が上がった話 - Qiita
https://qiita.com/numanomanu/items/45dd285b286a1f7280ed

に感化されて長続きできるように行なったEmacsの設定です。

1. yasnippet で : を登録

Emacs ユーザーは全員 magit と yasnippet を使っているという前提で書いてしまいますが、magit からコミットメッセージ編集モードに入るとデフォルトでは text-mode になるので、そこに yasnippet の略語を登録しておきます。

docs の場合は ci を飛ばすことが多いので一緒に [ci skip] も入れときます。

~/.emacs.d/snippets/text-mode/:
# --
`(yas-choose-value '("feat" "fix" "[ci skip] docs" "style" "refactor" "perf" "test" "chore"))`: $0

これで : <TAB> と入力して、プレフィクスを一覧から選ぶだけで入力できるようになりました。

ところが、上の設定でしばらく使ってみて気づいたのですが、 magit の場合は [xxx] 形式にした方が良さそうです。というのも [xxx] 形式だとコミット一覧のとき色がついて見やすくなります。なので今は次の設定で使っています。

~/.emacs.d/snippets/text-mode/:
# --
`(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 に反映します。

~/.gitmessage.txt
:

これならさすがに忘れることはないでしょう。

3. 毎回 TAB (C-i) を押すのも面倒になってきたので

を見て毎回カーソル右してTABするのも面倒になってきたのでここも自動化しておきます。

~/.emacs.d/init.el
(add-hook 'git-commit-setup-hook 'git-commit-prefix-select)
(defun git-commit-prefix-select ()
  (forward-char)
  (yas-expand))

これでコミットメッセージを書こうとしたとき、すでにプレフィクスの選択肢が出ているようになります。

15
15
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
15