0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Neovimでコミットメッセージを自動補完(CopilotChat.nvim)

Posted at

はじめに

コミットメッセージって考えるの面倒ですよね。
最近はCopilotChat.nvimのおかげでメッセージを生成できるようになり、随分と楽になりました。
が、毎回コマンド( :CopilotChatCommitStaged )を実行して提案を採用( <C-y> )するのすら面倒になってきたので、コミット時にこのプロセスを自動化することにしました。

こんな感じで git commit 時に自動でチャットを開いてメッセージを補完します。

autocomplete-commit-message.gif

実行環境

  • NVIM: v0.9.5
  • CopilotChat.nvim: v2.13.1

実装

実装にはCopilotChat.nvim の APIを活用しました。
git commit の編集時にのみ自動補完を適用するため、 ftplugin/gitcommit.lua にスクリプトを配置します。

.config/nvim/ftplugin/gitcommit.lua
local has_copilot = vim.fn.exists(":CopilotChat") == 2

if has_copilot then
  vim.schedule(function()
    local chat = require("CopilotChat")
    chat.open()
    chat.ask('Generate a concise and meaningful commit message title based on the changes made. Make sure the title has maximum 50 characters. Do not put quotes around the title. Focus solely on creating the title, not the full commit message body.', {
    selection = function(source)
      return require("CopilotChat.select").gitdiff(source, true)
    end,
    callback = function(response)
      chat.close()
      vim.api.nvim_buf_set_text(0, 0, 0, 0, 0, {response})
    end,
    })
  end)
end

このスクリプトは git commit を契機にコミットメッセージを生成するプロセスを開始します。
:CopilotChatCommitStaged と同様に変更に基づいたメッセージを生成し、その結果を即座にバッファに挿入します。
今回用意したプロンプトではコミットメッセージのタイトルのみを生成するようにしました。

これによりコミットメッセージを手動で生成する手間を省き、よりスムーズにコミット作業が行えるようになりました。

参考

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?