X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~mdw/git/stgit/blobdiff_plain/5901dd6bcd6dff12f869cd5660abad46b2c6b630..7755d7f15d6282945c2ad92e52e54cfd6392b9d7:/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 @@ (define-key stgit-mode-map ">" 'stgit-push-next) (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 @@ (defun stgit-patch-at-point () (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 @@ (defun stgit-create-patch-name (description) (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)))