Teach the emacs mode to delete patches. It will delete the selected
patches, or, if no patches are selected, the patch at point (and if
there is no patch at point, complain). Before deleting, it will ask
for confirmation.
Thanks to David Kågedal <davidk@lysator.liu.se> for lots of elisp
help.
Signed-off-by: Karl Hasselström <kha@treskal.com>
(define-key stgit-mode-map "<" 'stgit-pop-next)
(define-key stgit-mode-map "P" 'stgit-push-or-pop)
(define-key stgit-mode-map "G" 'stgit-goto)
(define-key stgit-mode-map "<" 'stgit-pop-next)
(define-key stgit-mode-map "P" 'stgit-push-or-pop)
(define-key stgit-mode-map "G" 'stgit-goto)
- (define-key stgit-mode-map "=" 'stgit-show))
+ (define-key stgit-mode-map "=" 'stgit-show)
+ (define-key stgit-mode-map "D" 'stgit-delete))
(defun stgit-mode ()
"Major mode for interacting with StGit.
(defun stgit-mode ()
"Major mode for interacting with StGit.
(match-string-no-properties 1)
nil)))
(match-string-no-properties 1)
nil)))
+(defun stgit-patches-marked-or-at-point ()
+ "Return the names of the marked patches, or the patch on the current line."
+ (if stgit-marked-patches
+ (stgit-marked-patches)
+ (let ((patch (stgit-patch-at-point)))
+ (if patch
+ (list patch)
+ '()))))
+
(defun stgit-goto-patch (patch)
"Move point to the line containing PATCH"
(let ((p (point)))
(defun stgit-goto-patch (patch)
"Move point to the line containing PATCH"
(let ((p (point)))
(substring patch 0 20))
(t patch))))
(substring patch 0 20))
(t patch))))
+(defun stgit-delete (patch-names)
+ "Delete the named patches"
+ (interactive (list (stgit-patches-marked-or-at-point)))
+ (if (zerop (length patch-names))
+ (error "No patches to delete")
+ (when (yes-or-no-p (format "Really delete %d patches? "
+ (length patch-names)))
+ (stgit-capture-output nil
+ (apply 'stgit-run "delete" patch-names))
+ (stgit-refresh))))
+
(defun stgit-coalesce (patch-names)
"Run stg coalesce on the named patches"
(interactive (list (stgit-marked-patches)))
(defun stgit-coalesce (patch-names)
"Run stg coalesce on the named patches"
(interactive (list (stgit-marked-patches)))