Browse Source

Fix directory changings

master
10sr 6 years ago
parent
commit
0bc75b59eb
Signed by: 10sr GPG Key ID: 7BEC428194130EB2
1 changed files with 24 additions and 10 deletions
  1. +24
    -10
      emacs.el

+ 24
- 10
emacs.el View File

@@ -1,6 +1,6 @@
;;; emacs.el --- 10sr emacs initialization ;;; emacs.el --- 10sr emacs initialization


;; Time-stamp: <2018-10-15 14:22:50 JST 10sr>
;; Time-stamp: <2018-10-15 14:44:57 JST 10sr>


;;; Code: ;;; Code:


@@ -2316,6 +2316,8 @@ use for the buffer. It defaults to \"*recetf-show*\"."
'("commit" "tree"))) '("commit" "tree")))
(with-current-buffer buf (with-current-buffer buf
(buffer-disable-undo) (buffer-disable-undo)
;; For running git command go back to repository root
(cd git-walktree-repository-root)
(save-excursion (save-excursion
(let ((inhibit-read-only t)) (let ((inhibit-read-only t))
(setq point (point)) (setq point (point))
@@ -2383,6 +2385,8 @@ Result will be inserted into current buffer."
(buf (git-walktree--create-buffer commitish path))) (buf (git-walktree--create-buffer commitish path)))
(cl-assert (string= type "blob")) (cl-assert (string= type "blob"))
(with-current-buffer buf (with-current-buffer buf
;; For running git command go back to repository root
(cd git-walktree-repository-root)
(let ((inhibit-read-only t)) (let ((inhibit-read-only t))
(setq point (point)) (setq point (point))
(with-temp-buffer (with-temp-buffer
@@ -2408,7 +2412,8 @@ Result will be inserted into current buffer."
(setq git-walktree-current-commitish commitish) (setq git-walktree-current-commitish commitish)
(setq git-walktree-current-path path) (setq git-walktree-current-path path)
(setq git-walktree-object-id blob) (setq git-walktree-object-id blob)
(let ((dir (expand-file-name (file-name-directory path)
(let ((dir (expand-file-name (or (file-name-directory path)
".")
git-walktree-repository-root))) git-walktree-repository-root)))
(when (and git-walktree-try-cd (when (and git-walktree-try-cd
(file-directory-p dir)) (file-directory-p dir))
@@ -2461,7 +2466,6 @@ without checking it."
(plist-get info :object))) (plist-get info :object)))


(defun git-walktree-open (commitish &optional path object) (defun git-walktree-open (commitish &optional path object)
;; TODO: What to do when currently in subdirectory?
"Open git tree buffer of COMMITISH. "Open git tree buffer of COMMITISH.
When PATH was given and non-nil open that, otherwise open root tree. When PATH was given and non-nil open that, otherwise open root tree.
When OBJECT was given and non-nil, assume that is the object of COMMITISH:PATH without When OBJECT was given and non-nil, assume that is the object of COMMITISH:PATH without
@@ -2469,7 +2473,7 @@ checking it."
(interactive (list (magit-read-branch-or-commit "Revision: "))) (interactive (list (magit-read-branch-or-commit "Revision: ")))
;; (setq path (or path ;; (setq path (or path
;; (git-walktree--path-in-repository (directory-file-name default-directory)))) ;; (git-walktree--path-in-repository (directory-file-name default-directory))))
(pop-to-buffer (git-walktree--open-noselect commitish path object)))
(switch-to-buffer (git-walktree--open-noselect commitish path object)))
(defalias 'git-walktree 'git-walktree-open) (defalias 'git-walktree 'git-walktree-open)


(defun git-walktree--path-in-repository (dir) (defun git-walktree--path-in-repository (dir)
@@ -2544,12 +2548,22 @@ Returns property list like (:mode MODE :type TYPE :object OBJECT :file FILE)."
(let ((info (git-walktree--parse-lstree-line (buffer-substring-no-properties (point-at-bol) (let ((info (git-walktree--parse-lstree-line (buffer-substring-no-properties (point-at-bol)
(point-at-eol))))) (point-at-eol)))))
(if info (if info
(switch-to-buffer (git-walktree--open-noselect
git-walktree-current-commitish
(git-walktree--join-path (plist-get info
:file))
(plist-get info
:object)))
(switch-to-buffer
(if (string= (plist-get info
:type)
"commit")
(with-temp-buffer
(cd (plist-get info :file))
(git-walktree--open-noselect git-walktree-current-commitish
(git-walktree--join-path (plist-get info
:file))
(plist-get info
:object)))
(git-walktree--open-noselect git-walktree-current-commitish
(git-walktree--join-path (plist-get info
:file))
(plist-get info
:object))))
(message "No object on current line.")))) (message "No object on current line."))))


(defun git-walktree--join-path (name &optional base) (defun git-walktree--join-path (name &optional base)


Loading…
Cancel
Save