現在編集しているファイルを git add -Nする

git管理下で git-gutter.elが効果を発揮しないのが嫌なので
作りました。ちなみに git add -Nはとりあえず stagingするという
もので、後ほどちゃんと git addする表明みたいなものです。


ここでは明示的にコマンドを叩くようにしましたが、find-file-hook
あたりに引っ掛けるのも良いかと思います。その場合は git管理下で
あればというチェックが必要になるかと思いますので、そうしたい人は
そのように実装してみてください。

コード

(defun my/git-intent-to-add ()
  (interactive)
  (save-buffer)
  (let* ((file (file-name-nondirectory (buffer-file-name)))
         (cmd (format "git add -N %s" file)))
    (unless (zerop (call-process-shell-command cmd))
      (error "Failed: %s" cmd))
    (message "Success: %s" cmd))
  (git-gutter))

(global-set-key (kbd "C-x v N") 'my/git-intent-to-add)

イメージ

こんな感じで全部の行が '+'(add)となるだけですが、明示的にわかって
個人的にはいいかなと思っています。