summaryrefslogtreecommitdiffstats
path: root/lisp
diff options
context:
space:
mode:
authorMartin Polden <martin.polden@gmail.com>2014-07-17 12:55:31 +0200
committerMartin Polden <martin.polden@gmail.com>2014-07-17 12:55:31 +0200
commitc576b6f2c493260e11c75e2295a857ceb3c6f096 (patch)
tree19404a209371d50058cdced4d33379ea2840d71a /lisp
parent18cdc7b4b803f8e4aff45aedd62e6e6946bbb1f1 (diff)
Move git repo detection to separate defun
Diffstat (limited to 'lisp')
-rw-r--r--lisp/init-git.el26
1 files changed, 17 insertions, 9 deletions
diff --git a/lisp/init-git.el b/lisp/init-git.el
index 9bbf000..9d31030 100644
--- a/lisp/init-git.el
+++ b/lisp/init-git.el
@@ -39,6 +39,17 @@
(goto-char (point-min))
(forward-line (1- current-line)))))
+(defun git-locate-root ()
+ "Find Git repository of the current buffer. Returns nil if no repo is found."
+ (if buffer-file-name
+ (let ((git-root (vc-git-root buffer-file-name)))
+ (or git-root
+ (progn
+ (message "%s is not in a git repository" buffer-file-name)
+ nil)))
+ (message "Buffer is not visiting a file.")
+ nil))
+
(add-hook 'magit-status-mode-hook
(lambda ()
;; make C-o and o behave as in dired
@@ -53,15 +64,12 @@
(defun git-root ()
"Find the git repository root of the visiting file."
(interactive)
- (if buffer-file-name
- (let ((git-root (vc-git-root buffer-file-name)))
- (if git-root
- (let ((git-root-file-name (directory-file-name git-root)))
- (message "git repository: %s (%s)"
- (file-name-nondirectory git-root-file-name)
- git-root-file-name))
- (message "%s is not in a git repository" buffer-file-name)))
- (message "Buffer is not visiting a file")))
+ (let ((git-root-path (git-locate-root)))
+ (when git-root-path
+ (let ((git-root-file-name (directory-file-name git-root-path)))
+ (message "git repository: %s (%s)"
+ (file-name-nondirectory git-root-file-name)
+ git-root-file-name)))))
;; show current git repo
(global-set-key (kbd "C-c d") 'git-root)