From: Karl Hasselström Date: Wed, 14 May 2008 00:04:32 +0000 (+0200) Subject: Emacs mode: automatically cd up to root of worktree X-Git-Tag: v0.15-rc1~237 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~mdw/git/stgit/commitdiff_plain/52144ce5f2bfb1268aee4a9999821987f8892dbf Emacs mode: automatically cd up to root of worktree 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 . Signed-off-by: Karl Hasselström --- 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))