commit - eacbf767c64ccb8c469698044c691c7baa3b20a4
commit + daae979d49408c97d6ed40de4a1aad4c2304c91d
blob - 489c18fc4d59070afd28ca6203d95e171895e97a
blob + 461b819de56778d85021c557f370d405b6ee0fc0
--- vc-got-stage.el
+++ vc-got-stage.el
;;; Code:
+(require 'log-edit)
(require 'rx)
(require 'vc)
(defvar vc-got-program) ;vc-got.el
(declare-function vc-got--diff "vc-got")
(declare-function vc-got--unstage "vc-got" (file))
+(declare-function vc-got-checkin "vc-got" (fileset comment))
(defvar vc-got-stage--process nil
"The got stage process.")
(vc-got--diff "-s" file))
(vc-got--diff "-s")))))
+(defun vc-got-stage-commit ()
+ "Commit staged hunks."
+ (interactive)
+ (let ((buf (get-buffer-create "*vc-got-stage-commit*")))
+ (pop-to-buffer buf)
+ (log-edit (lambda ()
+ (interactive)
+ (let ((msg (buffer-substring-no-properties (point-min)
+ (point-max))))
+ (kill-buffer)
+ (vc-got-checkin nil msg)))
+ t
+ ;; TODO: add here an alist of
+ ;; '((vc-log-fileset . (staged-files)))
+ )))
+
(provide 'vc-got-stage)
;;; vc-got-stage.el ends here
blob - 32a11f72a6c4ea4dee043dc99a9a350e5785d8cb
blob + f088f2d8442680b54851e5184feded08b0b0c318
--- vc-got.el
+++ vc-got.el
(defalias 'vc-got-responsible-p #'vc-got-root)
+;; XXX: generally speaking, files cannot be nil. But we have to
+;; handle that case too, because vc-got-stage-commit will call
+;; vc-got-checking with fileset nil to commit the current staged
+;; hunks.
(defun vc-got-checkin (files comment &optional _rev)
"Commit FILES with COMMENT as commit message."
(with-temp-buffer