|
@@ -1,6 +1,6 @@ |
|
|
;;; emacs.el --- 10sr emacs initialization |
|
|
;;; emacs.el --- 10sr emacs initialization |
|
|
|
|
|
|
|
|
;; Time-stamp: <2018-10-17 13:44:20 JST 10sr> |
|
|
|
|
|
|
|
|
;; Time-stamp: <2018-10-17 14:19:04 JST 10sr> |
|
|
|
|
|
|
|
|
;;; Code: |
|
|
;;; Code: |
|
|
|
|
|
|
|
@@ -2280,8 +2280,9 @@ use for the buffer. It defaults to \"*recetf-show*\"." |
|
|
commitish) |
|
|
commitish) |
|
|
commitish)) |
|
|
commitish)) |
|
|
|
|
|
|
|
|
(defun git-walktree--create-buffer (commitish name) |
|
|
|
|
|
"Create and return buffer for NAME." |
|
|
|
|
|
|
|
|
(defun git-walktree--create-buffer (commitish name type) |
|
|
|
|
|
"Create and return buffer for COMMITISH:NAME. |
|
|
|
|
|
TYPE is target object type." |
|
|
(let* ((root (git-walktree--git-plumbing "rev-parse" |
|
|
(let* ((root (git-walktree--git-plumbing "rev-parse" |
|
|
"--show-toplevel")) |
|
|
"--show-toplevel")) |
|
|
(commitish-display (git-walktree--commitish-fordisplay commitish)) |
|
|
(commitish-display (git-walktree--commitish-fordisplay commitish)) |
|
@@ -2289,18 +2290,26 @@ use for the buffer. It defaults to \"*recetf-show*\"." |
|
|
(or commitish-display "") |
|
|
(or commitish-display "") |
|
|
name))) |
|
|
name))) |
|
|
|
|
|
|
|
|
(with-current-buffer (get-buffer-create name) |
|
|
|
|
|
(if git-walktree-repository-root |
|
|
|
|
|
(if (string= root |
|
|
|
|
|
git-walktree-repository-root) |
|
|
|
|
|
(current-buffer) |
|
|
|
|
|
;; If the buffer is for another repository, create new buffer |
|
|
|
|
|
(with-current-buffer (generate-new-buffer name) |
|
|
|
|
|
(setq git-walktree-repository-root root) |
|
|
|
|
|
(current-buffer))) |
|
|
|
|
|
;; New buffer |
|
|
|
|
|
(setq git-walktree-repository-root root) |
|
|
|
|
|
(current-buffer))))) |
|
|
|
|
|
|
|
|
(if (and git-walktree-reuse-tree-buffer |
|
|
|
|
|
(string= type "tree")) |
|
|
|
|
|
(with-current-buffer (or git-walktree-tree-buffer-for-reuse |
|
|
|
|
|
(setq git-walktree-tree-buffer-for-reuse |
|
|
|
|
|
(get-buffer-create "*gitwalktree*"))) |
|
|
|
|
|
(setq git-walktree-repository-root root) |
|
|
|
|
|
(rename-buffer name t) |
|
|
|
|
|
(current-buffer)) |
|
|
|
|
|
(with-current-buffer (get-buffer-create name) |
|
|
|
|
|
(if git-walktree-repository-root |
|
|
|
|
|
(if (string= root |
|
|
|
|
|
git-walktree-repository-root) |
|
|
|
|
|
(current-buffer) |
|
|
|
|
|
;; If the buffer is for another repository, create new buffer |
|
|
|
|
|
(with-current-buffer (generate-new-buffer name) |
|
|
|
|
|
(setq git-walktree-repository-root root) |
|
|
|
|
|
(current-buffer))) |
|
|
|
|
|
;; New buffer |
|
|
|
|
|
(setq git-walktree-repository-root root) |
|
|
|
|
|
(current-buffer)))))) |
|
|
|
|
|
|
|
|
(defun git-walktree--replace-into (target) |
|
|
(defun git-walktree--replace-into (target) |
|
|
"Replace TARGET buffer contents with that of current buffer." |
|
|
"Replace TARGET buffer contents with that of current buffer." |
|
@@ -2312,12 +2321,12 @@ use for the buffer. It defaults to \"*recetf-show*\"." |
|
|
(defun git-walktree--open-treeish (commitish path treeish) |
|
|
(defun git-walktree--open-treeish (commitish path treeish) |
|
|
"Open git tree buffer of TREEISH." |
|
|
"Open git tree buffer of TREEISH." |
|
|
(cl-assert path) |
|
|
(cl-assert path) |
|
|
(let (point-tree-start |
|
|
|
|
|
(buf (git-walktree--create-buffer commitish path)) |
|
|
|
|
|
(type (git-walktree--git-plumbing "cat-file" |
|
|
|
|
|
"-t" |
|
|
|
|
|
treeish)) |
|
|
|
|
|
) |
|
|
|
|
|
|
|
|
(let* (point-tree-start |
|
|
|
|
|
(type (git-walktree--git-plumbing "cat-file" |
|
|
|
|
|
"-t" |
|
|
|
|
|
treeish)) |
|
|
|
|
|
(buf (git-walktree--create-buffer commitish path type)) |
|
|
|
|
|
) |
|
|
(cl-assert (member type |
|
|
(cl-assert (member type |
|
|
'("commit" "tree"))) |
|
|
'("commit" "tree"))) |
|
|
(with-current-buffer buf |
|
|
(with-current-buffer buf |
|
@@ -2384,10 +2393,10 @@ Result will be inserted into current buffer." |
|
|
?w |
|
|
?w |
|
|
(defun git-walktree--open-blob (commitish path blob) |
|
|
(defun git-walktree--open-blob (commitish path blob) |
|
|
"Open BLOB object." |
|
|
"Open BLOB object." |
|
|
(let ((type (git-walktree--git-plumbing "cat-file" |
|
|
|
|
|
"-t" |
|
|
|
|
|
blob)) |
|
|
|
|
|
(buf (git-walktree--create-buffer commitish path))) |
|
|
|
|
|
|
|
|
(let* ((type (git-walktree--git-plumbing "cat-file" |
|
|
|
|
|
"-t" |
|
|
|
|
|
blob)) |
|
|
|
|
|
(buf (git-walktree--create-buffer commitish path type))) |
|
|
(cl-assert (string= type "blob")) |
|
|
(cl-assert (string= type "blob")) |
|
|
(with-current-buffer buf |
|
|
(with-current-buffer buf |
|
|
;; TODO: Do nothing when blob already loaded |
|
|
;; TODO: Do nothing when blob already loaded |
|
@@ -2508,11 +2517,16 @@ Otherwise buffer's `default-directory' is always repository root." |
|
|
:group 'git-walktree) |
|
|
:group 'git-walktree) |
|
|
|
|
|
|
|
|
;; TODO: Use this |
|
|
;; TODO: Use this |
|
|
(defcustom git-walktree-reuse-tree-buffer nil |
|
|
|
|
|
"Non-nil to reuse buffer when treeish object." |
|
|
|
|
|
|
|
|
(defcustom git-walktree-reuse-tree-buffer t |
|
|
|
|
|
"Non-nil to reuse buffer for treeish object." |
|
|
:type 'boolean |
|
|
:type 'boolean |
|
|
:group 'git-walktree) |
|
|
:group 'git-walktree) |
|
|
|
|
|
|
|
|
|
|
|
(defcustom git-walktree-tree-buffer-for-reuse nil |
|
|
|
|
|
"Buffer to use when `git-walktree-reuse-tree-buffer' is non-nil." |
|
|
|
|
|
:type 'string |
|
|
|
|
|
:group 'git-walktree) |
|
|
|
|
|
|
|
|
(defun git-walktree--git-plumbing (&rest args) |
|
|
(defun git-walktree--git-plumbing (&rest args) |
|
|
"Run git plubming command with ARGS. |
|
|
"Run git plubming command with ARGS. |
|
|
Returns first line of output without newline." |
|
|
Returns first line of output without newline." |
|
|