X-Git-Url: https://git.distorted.org.uk/~mdw/stgit/blobdiff_plain/27b0f9e4669780e65afce41e64c713c8c6f4e196..706c6fac934c483780d9c21e1e8068fe39619615:/contrib/stgit.el diff --git a/contrib/stgit.el b/contrib/stgit.el index 437722a..5aaf311 100644 --- a/contrib/stgit.el +++ b/contrib/stgit.el @@ -161,7 +161,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. @@ -198,6 +199,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))) @@ -352,6 +362,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)))