Como mencionado anteriormente, o git-gutter é uma extensão projetada para mostrar informações git diretamente em seu arquivo e operar a partir daí, enquanto o magit se concentra em operar em diffs.
Esse recurso não está planejado para o git gutter tão cedo ( https://github.com/syohex/emacs-git-gutter/issues/91 )
No entanto, é o tipo de coisa que o emacs lisp deve ser muito bom em limpar (passar pelos pedaços de uma região e encená-los uma vez). Tentando fazer isso sozinho, esse foi quase o caso, o único problema foi o git-gutter iniciar um processo em segundo plano depois que você monta um pedaço e não espera que ele termine, então tive que adicionar um pouco de mágica hacky para lidar com isso.
A seguinte função emacs lisp deve fazer o que você deseja. Você pode querer vinculá-lo a algumas chaves.
(defun my-git-stage-region ()
(interactive)
(let ((git-gutter:ask-p nil)
(start (region-beginning))
(end (region-end)))
(save-excursion
(goto-char start)
(git-gutter:next-hunk 1)
(while (< (point) end)
(git-gutter:stage-hunk)
;; This is a hack to wait for git-gutter to finish
;; updating information (git-gutter kicks
;; of a process to update the diff information
;; and does not block)
(while (get-buffer (git-gutter:diff-process-buffer (git-gutter:base-file)))
(sit-for 0.05))
(git-gutter:next-hunk 1)))))