[StGit PATCH] Emacs mode: automatically cd up to root of worktree
- From
Karl Hasselström <kha@treskal.com>
- Date
- May 14, 2008, 01:49 UTC
- Message-ID
- <20080514014820.7140.28591.stgit@yoghurt>
- In-Reply-To
- <20080514014309.GA17955@diana.vm.bytemark.co.uk>
git's emacs mode automatically finds the root of the worktree, so that the user doesn't have to. Teach StGit's emacs mode the same trick by borrowing the git-get-top-dir function from git.
The borrowed code was written by Alexandre Julliard <julliard@winehq.org>.
Signed-off-by: Karl Hasselström <kha@treskal.com>
---
David, would you sanity check this for me?
contrib/stgit.el | 13 ++++++++++++- 1 files changed, 12 insertions(+), 1 deletions(-)
diff --git a/contrib/stgit.el b/contrib/stgit.el index 339ef13..2a6fee3 100644 --- a/contrib/stgit.el +++ b/contrib/stgit.el @@ -12,9 +12,20 @@ (defun stgit (dir) "Manage stgit patches" (interactive "DDirectory: \n") - (switch-to-stgit-buffer dir) + (switch-to-stgit-buffer (git-get-top-dir dir)) (stgit-refresh)) +(defun git-get-top-dir (dir) + "Retrieve the top-level directory of a git tree." + (let ((cdup (with-output-to-string + (with-current-buffer standard-output + (cd dir) + (unless (eq 0 (call-process "git" nil t nil + "rev-parse" "--show-cdup")) + (error "cannot find top-level git tree for %s." dir)))))) + (expand-file-name (concat (file-name-as-directory dir) + (car (split-string cdup "\n")))))) + (defun switch-to-stgit-buffer (dir) "Switch to a (possibly new) buffer displaying StGit patches for DIR" (setq dir (file-name-as-directory dir))