|
|
@@ -1,6 +1,6 @@ |
|
|
|
;;; emacs.el --- 10sr emacs initialization |
|
|
|
|
|
|
|
;; Time-stamp: <2018-10-17 18:45:09 JST 10sr> |
|
|
|
;; Time-stamp: <2018-10-18 14:20:26 JST 10sr> |
|
|
|
|
|
|
|
;;; Code: |
|
|
|
|
|
|
@@ -2329,6 +2329,7 @@ TYPE is target object type." |
|
|
|
(defun git-walktree--open-treeish (commitish path treeish) |
|
|
|
"Open git tree buffer of TREEISH." |
|
|
|
(cl-assert path) |
|
|
|
(cl-assert treeish) |
|
|
|
(let* (point-tree-start |
|
|
|
(type (git-walktree--git-plumbing "cat-file" |
|
|
|
"-t" |
|
|
@@ -2338,55 +2339,57 @@ TYPE is target object type." |
|
|
|
(cl-assert (member type |
|
|
|
'("commit" "tree"))) |
|
|
|
(with-current-buffer buf |
|
|
|
(buffer-disable-undo) |
|
|
|
;; For running git command go back to repository root |
|
|
|
(cd git-walktree-repository-root) |
|
|
|
(save-excursion |
|
|
|
(let ((inhibit-read-only t)) |
|
|
|
(with-temp-buffer |
|
|
|
(if commitish |
|
|
|
;; TODO: Somehow color will be diasbled |
|
|
|
;; TODO: branch info after commit sha1 (like (HEAD -> master)) |
|
|
|
;; not appear |
|
|
|
(progn (git-walktree--call-process nil |
|
|
|
"-c" |
|
|
|
"color.ui=always" |
|
|
|
"show" |
|
|
|
"--no-patch" |
|
|
|
"--color=always" |
|
|
|
"--pretty=short" |
|
|
|
commitish) |
|
|
|
(ansi-color-apply-on-region (point-min) |
|
|
|
(point)) |
|
|
|
(insert "\n") |
|
|
|
(insert (format "Contents of '%s:%s':\n" |
|
|
|
(git-walktree--commitish-fordisplay commitish) |
|
|
|
path))) |
|
|
|
(unless (string= treeish |
|
|
|
git-walktree-object-id) |
|
|
|
(buffer-disable-undo) |
|
|
|
;; For running git command go back to repository root |
|
|
|
(cd git-walktree-repository-root) |
|
|
|
(save-excursion |
|
|
|
(let ((inhibit-read-only t)) |
|
|
|
(with-temp-buffer |
|
|
|
(if commitish |
|
|
|
;; TODO: Somehow color will be diasbled |
|
|
|
;; TODO: branch info after commit sha1 (like (HEAD -> master)) |
|
|
|
;; not appear |
|
|
|
(progn (git-walktree--call-process nil |
|
|
|
"-c" |
|
|
|
"color.ui=always" |
|
|
|
"show" |
|
|
|
"--no-patch" |
|
|
|
"--color=always" |
|
|
|
"--pretty=short" |
|
|
|
commitish) |
|
|
|
(ansi-color-apply-on-region (point-min) |
|
|
|
(point)) |
|
|
|
(insert "\n") |
|
|
|
(insert (format "Contents of '%s:%s':\n" |
|
|
|
(git-walktree--commitish-fordisplay commitish) |
|
|
|
path))) |
|
|
|
(insert (format "Contents of treeish object '%s:\n" |
|
|
|
treeish))) |
|
|
|
(setq point-tree-start (point)) |
|
|
|
(git-walktree--call-process nil |
|
|
|
"ls-tree" |
|
|
|
;; "-r" |
|
|
|
"--abbrev" |
|
|
|
|
|
|
|
treeish) |
|
|
|
(git-walktree--replace-into buf)))) |
|
|
|
(git-walktree-mode) |
|
|
|
(set-buffer-modified-p nil) |
|
|
|
|
|
|
|
(setq git-walktree-current-commitish commitish) |
|
|
|
(setq git-walktree-current-path path) |
|
|
|
(setq git-walktree-object-id treeish) |
|
|
|
(let ((dir (expand-file-name path git-walktree-repository-root))) |
|
|
|
(when (and git-walktree-try-cd |
|
|
|
(file-directory-p dir)) |
|
|
|
(cd dir))) |
|
|
|
(when (= (point) (point-min)) |
|
|
|
(goto-char point-tree-start) |
|
|
|
(git-walktree-mode--goto-file) |
|
|
|
) |
|
|
|
) |
|
|
|
(setq point-tree-start (point)) |
|
|
|
(git-walktree--call-process nil |
|
|
|
"ls-tree" |
|
|
|
;; "-r" |
|
|
|
"--abbrev" |
|
|
|
|
|
|
|
treeish) |
|
|
|
(git-walktree--replace-into buf)))) |
|
|
|
(git-walktree-mode) |
|
|
|
(set-buffer-modified-p nil) |
|
|
|
|
|
|
|
(setq git-walktree-current-commitish commitish) |
|
|
|
(setq git-walktree-current-path path) |
|
|
|
(setq git-walktree-object-id treeish) |
|
|
|
(let ((dir (expand-file-name path git-walktree-repository-root))) |
|
|
|
(when (and git-walktree-try-cd |
|
|
|
(file-directory-p dir)) |
|
|
|
(cd dir))) |
|
|
|
(when (= (point) (point-min)) |
|
|
|
(goto-char point-tree-start) |
|
|
|
(git-walktree-mode--goto-file) |
|
|
|
) |
|
|
|
)) |
|
|
|
buf)) |
|
|
|
|
|
|
|
(defun git-walktree--call-process (&optional infile &rest args) |
|
|
@@ -2406,48 +2409,52 @@ Result will be inserted into current buffer." |
|
|
|
?w |
|
|
|
(defun git-walktree--open-blob (commitish path blob) |
|
|
|
"Open BLOB object." |
|
|
|
(cl-assert commitish) |
|
|
|
(cl-assert path) |
|
|
|
(cl-assert blob) |
|
|
|
(let* ((type (git-walktree--git-plumbing "cat-file" |
|
|
|
"-t" |
|
|
|
blob)) |
|
|
|
(buf (git-walktree--create-buffer commitish path type))) |
|
|
|
(cl-assert (string= type "blob")) |
|
|
|
(with-current-buffer buf |
|
|
|
;; TODO: Do nothing when blob already loaded |
|
|
|
;; For running git command go back to repository root |
|
|
|
(cd git-walktree-repository-root) |
|
|
|
(let ((inhibit-read-only t)) |
|
|
|
(with-temp-buffer |
|
|
|
(git-walktree--call-process nil |
|
|
|
"cat-file" |
|
|
|
"-p" |
|
|
|
blob) |
|
|
|
(git-walktree--replace-into buf))) |
|
|
|
(setq git-walktree-buffer-file-name |
|
|
|
(concat (git-walktree--git-plumbing "rev-parse" |
|
|
|
"--show-toplevel") |
|
|
|
"/git@" |
|
|
|
commitish |
|
|
|
":" |
|
|
|
path)) |
|
|
|
(setq buffer-file-name |
|
|
|
git-walktree-buffer-file-name) |
|
|
|
(normal-mode t) |
|
|
|
;; For asking filename when C-xC-s |
|
|
|
(setq buffer-file-name nil) |
|
|
|
(set-buffer-modified-p t) |
|
|
|
|
|
|
|
(setq git-walktree-current-commitish commitish) |
|
|
|
(setq git-walktree-current-path path) |
|
|
|
(setq git-walktree-object-id blob) |
|
|
|
(let ((dir (expand-file-name (or (file-name-directory path) |
|
|
|
".") |
|
|
|
git-walktree-repository-root))) |
|
|
|
(when (and git-walktree-try-cd |
|
|
|
(file-directory-p dir)) |
|
|
|
(cd dir))) |
|
|
|
|
|
|
|
(view-mode 1) |
|
|
|
) |
|
|
|
(unless (string= blob |
|
|
|
git-walktree-object-id) |
|
|
|
;; For running git command go back to repository root |
|
|
|
(cd git-walktree-repository-root) |
|
|
|
(let ((inhibit-read-only t)) |
|
|
|
(with-temp-buffer |
|
|
|
(git-walktree--call-process nil |
|
|
|
"cat-file" |
|
|
|
"-p" |
|
|
|
blob) |
|
|
|
(git-walktree--replace-into buf))) |
|
|
|
(setq git-walktree-buffer-file-name |
|
|
|
(concat (git-walktree--git-plumbing "rev-parse" |
|
|
|
"--show-toplevel") |
|
|
|
"/git@" |
|
|
|
commitish |
|
|
|
":" |
|
|
|
path)) |
|
|
|
(setq buffer-file-name |
|
|
|
git-walktree-buffer-file-name) |
|
|
|
(normal-mode t) |
|
|
|
;; For asking filename when C-xC-s |
|
|
|
(setq buffer-file-name nil) |
|
|
|
(set-buffer-modified-p t) |
|
|
|
|
|
|
|
(setq git-walktree-current-commitish commitish) |
|
|
|
(setq git-walktree-current-path path) |
|
|
|
(setq git-walktree-object-id blob) |
|
|
|
(let ((dir (expand-file-name (or (file-name-directory path) |
|
|
|
".") |
|
|
|
git-walktree-repository-root))) |
|
|
|
(when (and git-walktree-try-cd |
|
|
|
(file-directory-p dir)) |
|
|
|
(cd dir))) |
|
|
|
|
|
|
|
(view-mode 1) |
|
|
|
)) |
|
|
|
buf)) |
|
|
|
|
|
|
|
;; TODO: Store view history |
|
|
@@ -2457,6 +2464,7 @@ Result will be inserted into current buffer." |
|
|
|
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 checking it." |
|
|
|
(cl-assert commitish) |
|
|
|
(let ((type (git-walktree--git-plumbing "cat-file" |
|
|
|
"-t" |
|
|
|
commitish))) |
|
|
@@ -2485,7 +2493,8 @@ without checking it." |
|
|
|
|
|
|
|
(defun git-walktree--resolve-object (commitish path) |
|
|
|
"Return object id of COMMITISIH:PATH. |
|
|
|
If path is equal to \".\" return COMMITISH's tree object" |
|
|
|
If path is equal to \".\" return COMMITISH's tree object |
|
|
|
PATH will be always treated as relative to repository root." |
|
|
|
;; TODO: use --full-tree |
|
|
|
(cl-assert commitish) |
|
|
|
(cl-assert path) |
|
|
|