[StGit PATCH 06/17] Emacs mode: Let "P" push or pop patch at point
- From
David Kågedal <davidk@lysator.liu.se>
- Date
- Dec 14, 2007, 10:57 UTC
- Message-ID
- <20071214105724.18066.2112.stgit@krank>
- In-Reply-To
- <20071214105238.18066.23281.stgit@krank>
From: Karl Hasselström <kha@treskal.com>
When the user presses "P", push or pop the patch at point depending on whether it's applied or unapplied.
Signed-off-by: Karl Hasselström <kha@treskal.com> Signed-off-by: David Kågedal <davidk@lysator.liu.se> ---
contrib/stgit.el | 16 ++++++++++++++++ 1 files changed, 16 insertions(+), 0 deletions(-)
diff --git a/contrib/stgit.el b/contrib/stgit.el index 17b5d6b..d371e71 100644 --- a/contrib/stgit.el +++ b/contrib/stgit.el @@ -82,6 +82,7 @@ Argument DIR is the repository path." (define-key stgit-mode-map "r" 'stgit-rename) (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 "=" 'stgit-show)) (defun stgit-mode () @@ -138,6 +139,21 @@ Commands: (stgit-capture-output nil (stgit-run "pop")) (stgit-refresh)) +(defun stgit-applied-at-point () + "Is the patch on the current line applied?" + (save-excursion + (beginning-of-line) + (looking-at "[>+]"))) + +(defun stgit-push-or-pop () + "Push or pop the patch on the current line" + (interactive) + (let ((patch (stgit-patch-at-point)) + (applied (stgit-applied-at-point))) + (stgit-capture-output nil + (stgit-run (if applied "pop" "push") patch)) + (stgit-refresh))) + (defun stgit-show () "Show the patch on the current line" (interactive)