瀏覽代碼

Add --is-a-merge-commit

master
10sr 6 年之前
父節點
當前提交
418c674567
簽署人: 10sr GPG Key ID: 7BEC428194130EB2
共有 1 個文件被更改,包括 41 次插入2 次删除
  1. +41
    -2
      emacs.el

+ 41
- 2
emacs.el 查看文件

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

;; Time-stamp: <2018-10-16 13:22:43 JST 10sr>
;; Time-stamp: <2018-10-16 14:45:32 JST 10sr>

;;; Code:

@@ -2552,11 +2552,14 @@ Returns property list like (:mode MODE :type TYPE :object OBJECT :file FILE)."
(interactive)
(let ((info (git-walktree--parse-lstree-line (buffer-substring-no-properties (point-at-bol)
(point-at-eol)))))
;; TODO: Open commitish when currently on commitish like symbol
(if info
(switch-to-buffer
(if (string= (plist-get info
:type)
"commit")
;; For submodule cd to that directory and intialize
;; TODO: Provide way to go back to known "parent" repository
(with-temp-buffer
(cd (plist-get info :file))
(git-walktree--open-noselect (plist-get info
@@ -2646,13 +2649,49 @@ This function do nothing when current line is not ls-tree output."
(defvar git-walktree-tree-face 'git-walktree-tree-face
"Face used for tree objects.")

(defvar git-walktree-known-child-revisions '()
"List of already known child reivions of currnet buffer in string format.")
(make-variable-buffer-local 'git-walktree-known-child-revisions)

(defun git-walktree-parent-revision ()
"Open parent revision of current path.
If given path is not found in the parent revision try to go up path."
(interactive))

(defun git-walktree--is-a-merge-commit (commitish)
"Return non-nil if COMMITISH is a merge commit."
(let ((type (git-walktree--git-plumbing "cat-file"
"-t"
commitish)))
(cl-assert (string= type "commit")))
(with-temp-buffer
(let ((status (call-process git-walktree-git-executable
nil
t
nil
"cat-file"
"-p"
commitish)))
(unless (eq 0
status)
(error "Faild to run git %S:\n%s"
(list "cat-file" "-p" commitish)
(buffer-substring-no-properties (point-min)
(point-max))))
(goto-char (point-min))
(save-match-data
(> (count-matches "^parent") 1)))))
;; (git-walktree--is-a-merge-commit "ae4b80f")

(defvar git-walktree-mode-map
(let ((map (make-sparse-keymap)))
;; TODO: Add git-walktree-parent-revision
(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)
;; TODO: Review keybind
(define-key map "N" 'git-walktree-parent-revision)
(define-key map "P" 'git-walktree-known-child-revision)
(define-key map "^" 'git-walktree-up)
(define-key map (kbd "C-m") 'git-walktree-mode-open-this)
map))


Loading…
取消
儲存