|
|
@@ -1,6 +1,6 @@ |
|
|
|
;;; emacs.el --- 10sr emacs initialization |
|
|
|
|
|
|
|
;; Time-stamp: <2018-10-15 20:02:55 JST 10sr> |
|
|
|
;; Time-stamp: <2018-10-16 13:22:43 JST 10sr> |
|
|
|
|
|
|
|
;;; Code: |
|
|
|
|
|
|
@@ -2361,6 +2361,7 @@ use for the buffer. It defaults to \"*recetf-show*\"." |
|
|
|
(cd dir))) |
|
|
|
(when (= (point) (point-min)) |
|
|
|
(goto-char point-tree-start) |
|
|
|
(git-walktree-mode--goto-file) |
|
|
|
) |
|
|
|
) |
|
|
|
buf)) |
|
|
@@ -2388,6 +2389,7 @@ Result will be inserted into current buffer." |
|
|
|
(buf (git-walktree--create-buffer commitish path))) |
|
|
|
(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)) |
|
|
@@ -2546,7 +2548,6 @@ Returns property list like (:mode MODE :type TYPE :object OBJECT :file FILE)." |
|
|
|
:file (match-string 4))))))) |
|
|
|
|
|
|
|
(defun git-walktree-mode-open-this () |
|
|
|
;; TODO: Support commit object |
|
|
|
"Open current object." |
|
|
|
(interactive) |
|
|
|
(let ((info (git-walktree--parse-lstree-line (buffer-substring-no-properties (point-at-bol) |
|
|
@@ -2605,6 +2606,34 @@ If not given, value of current buffer will be used." |
|
|
|
nil)) |
|
|
|
(message "Cannot find parent directory for current tree.")))) |
|
|
|
|
|
|
|
(defun git-walktree-mode--goto-file () |
|
|
|
"Move point to file field of ls-tree output in current line. |
|
|
|
|
|
|
|
This function do nothing when current line is not ls-tree output." |
|
|
|
(interactive) |
|
|
|
(save-match-data |
|
|
|
(when (save-excursion |
|
|
|
(goto-char (point-at-bol)) |
|
|
|
(re-search-forward git-walktree-ls-tree-line-regexp |
|
|
|
(point-at-eol) t)) |
|
|
|
(goto-char (match-beginning 4))))) |
|
|
|
|
|
|
|
(defun git-walktree-mode-next-line (&optional arg try-vscroll) |
|
|
|
"Move cursor vertically down ARG lines and move to file field if found." |
|
|
|
(interactive "^p\np") |
|
|
|
(or arg (setq arg 1)) |
|
|
|
(line-move arg nil nil try-vscroll) |
|
|
|
(git-walktree-mode--goto-file) |
|
|
|
) |
|
|
|
|
|
|
|
(defun git-walktree-mode-previous-line (&optional arg try-vscroll) |
|
|
|
"Move cursor vertically up ARG lines and move to file field if found." |
|
|
|
(interactive "^p\np") |
|
|
|
(or arg (setq arg 1)) |
|
|
|
(line-move (- arg) nil nil try-vscroll) |
|
|
|
(git-walktree-mode--goto-file) |
|
|
|
) |
|
|
|
|
|
|
|
(defgroup git-walktree-faces nil |
|
|
|
"Faces used by git-walktree." |
|
|
|
:group 'git-walktree |
|
|
@@ -2620,9 +2649,10 @@ If not given, value of current buffer will be used." |
|
|
|
(defvar git-walktree-mode-map |
|
|
|
(let ((map (make-sparse-keymap))) |
|
|
|
;; TODO: Add git-walktree-parent-revision |
|
|
|
;; TODO: Add git-walktree-next-line |
|
|
|
(define-key map "n" 'next-line) |
|
|
|
(define-key map "p" 'previous-line) |
|
|
|
(define-key map "n" 'git-walktree-mode-next-line) |
|
|
|
(define-key map "p" 'git-walktree-mode-previous-line) |
|
|
|
(define-key map (kbd "C-n") 'git-walktree-mode-next-line) |
|
|
|
(define-key map (kbd "C-p") 'git-walktree-mode-previous-line) |
|
|
|
(define-key map "^" 'git-walktree-up) |
|
|
|
(define-key map (kbd "C-m") 'git-walktree-mode-open-this) |
|
|
|
map)) |
|
|
|