]> git.eshelyaron.com Git - emacs.git/commitdiff
(vc-git-stash, vc-git-stash-show): New functions.
authorDan Nicolaescu <dann@ics.uci.edu>
Wed, 26 Aug 2009 07:01:09 +0000 (07:01 +0000)
committerDan Nicolaescu <dann@ics.uci.edu>
Wed, 26 Aug 2009 07:01:09 +0000 (07:01 +0000)
(vc-git-extra-menu-map): Bind them.

lisp/ChangeLog
lisp/vc-git.el

index ed131c8f34e2099832af326016e4f92a200e5cef..1408e8ef075318d4cb52b454d8451976c2c82ea9 100644 (file)
@@ -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.
index 1d7da4b5c4a31c2af39064cd931d3f15c55ab884..3be88e1f80a4b794ae670ea06c6a09ba5ce4817a 100644 (file)
@@ -662,6 +662,12 @@ or BRANCH^ (where \"^\" can be repeated)."
     (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 @@ This command shares argument histories with \\[rgrep] and \\[grep]."
        (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             "