changeset 104617:abce8d2d9707

(vc-git-stash, vc-git-stash-show): New functions. (vc-git-extra-menu-map): Bind them.
author Dan Nicolaescu <dann@ics.uci.edu>
date Wed, 26 Aug 2009 07:01:09 +0000
parents 2d38fd635554
children 7c3b132bf9bb
files lisp/ChangeLog lisp/vc-git.el
diffstat 2 files changed, 26 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/ChangeLog	Wed Aug 26 06:48:58 2009 +0000
+++ b/lisp/ChangeLog	Wed Aug 26 07:01:09 2009 +0000
@@ -1,6 +1,8 @@
 2009-08-26  Dan Nicolaescu  <dann@ics.uci.edu>
 
 	* vc-git.el (vc-git-register): Use "git add" for directories.
+	(vc-git-stash, vc-git-stash-show): New functions.
+	(vc-git-extra-menu-map): Bind them.
 
 	* vc-dir.el (vc-dir-node-directory, vc-dir-update): Get the parent
 	directory correctly in case the item is a directory itself.
--- a/lisp/vc-git.el	Wed Aug 26 06:48:58 2009 +0000
+++ b/lisp/vc-git.el	Wed Aug 26 07:01:09 2009 +0000
@@ -662,6 +662,12 @@
     (define-key map [git-grep]
       '(menu-item "Git grep..." vc-git-grep
 		  :help "Run the `git grep' command"))
+    (define-key map [git-st]
+      '(menu-item "Stash..." vc-git-stash
+		  :help "Stash away changes"))
+    (define-key map [git-ss]
+      '(menu-item "Show Stash..." vc-git-stash-show
+		  :help "Show stash contents"))
     (define-key map [git-sig]
       '(menu-item "Add Signed-off-by on commit" vc-git-toggle-signoff
 	      :help "Add Add Signed-off-by when commiting (i.e. add the -s flag)"
@@ -730,6 +736,24 @@
 	(if (eq next-error-last-buffer (current-buffer))
 	    (setq default-directory dir))))))
 
+(defun vc-git-stash (name)
+  "Create a stash."
+  (interactive "sStash name: ")
+  (let ((root (vc-git-root default-directory)))
+    (when root
+      (vc-git--call nil "stash" "save" name)
+      (vc-resynch-buffer root t t))))
+
+(defun vc-git-stash-show (name)
+  "Show the contents of stash NAME."
+  (interactive "sStash name: ")
+  (vc-setup-buffer "*vc-git-stash*")
+  (vc-git-command "*vc-git-stash*" 'async nil "stash" "show" "-p" name)
+  (set-buffer "*vc-git-stash*")
+  (diff-mode)
+  (setq buffer-read-only t)
+  (pop-to-buffer (current-buffer)))
+
 (defun vc-git-stash-list ()
   (replace-regexp-in-string
    "\n" "\n             "