Como se mencionó anteriormente, git-gutter es una extensión diseñada para mostrarle información de git directamente en su archivo y operar desde allí, mientras que magit se enfoca en operar en diffs.
Esta característica no está planificada para git gutter en el corto plazo ( https://github.com/syohex/emacs-git-gutter/issues/91 )
Sin embargo, es el tipo de cosas que emacs lisp debería ser muy bueno para limpiar (ir a través de los trozos en una región y organizarlos en un momento). Probar esto yo mismo fue casi el caso, el único problema fue que git-gutter inicia un proceso en segundo plano después de que colocas un trozo y no espera a que termine, así que tuve que agregar un poco de magia hacky para lidiar con esto.
La siguiente función de emacs lisp debe hacer lo que desee. Es posible que desee vincularlo a algunas teclas.
(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)))))