diff options
author | Martin Polden <martin.polden@gmail.com> | 2014-07-17 12:55:31 +0200 |
---|---|---|
committer | Martin Polden <martin.polden@gmail.com> | 2014-07-17 12:55:31 +0200 |
commit | c576b6f2c493260e11c75e2295a857ceb3c6f096 (patch) | |
tree | 19404a209371d50058cdced4d33379ea2840d71a /lisp | |
parent | 18cdc7b4b803f8e4aff45aedd62e6e6946bbb1f1 (diff) |
Move git repo detection to separate defun
Diffstat (limited to 'lisp')
-rw-r--r-- | lisp/init-git.el | 26 |
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) |