15
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

posted at

updated at

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

一人プロジェクトのコミットメッセージなんか 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))

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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
15
Help us understand the problem. What are the problem?