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@xxxxxxxxxxxxxx> for lots of elisp help. Signed-off-by: Karl Hasselström <kha@xxxxxxxxxxx> --- contrib/stgit.el | 23 ++++++++++++++++++++++- 1 files changed, 22 insertions(+), 1 deletions(-) diff --git a/contrib/stgit.el b/contrib/stgit.el index 386d46e..1036cf9 100644 --- a/contrib/stgit.el +++ b/contrib/stgit.el @@ -150,7 +150,8 @@ Argument DIR is the repository path." (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. @@ -187,6 +188,15 @@ Commands: (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))) @@ -341,6 +351,17 @@ Commands: (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))) - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html