Browse Source

Add git-worktree

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

+ 34
- 0
emacs.el View File

@@ -2949,6 +2949,40 @@ If target path is not found in COMMITISH tree, go up path and try again until fo
;; (git-revision--git-plumbing "cat-file" "-t" "HEAD")


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; git-worktree

(defun git-worktree-get-current-list ()
"Get current worktree list."
(with-temp-buffer
(let ((trees nil)
(status (call-process "git"
nil
t
nil
"worktree" "list" "--porcelain")))
(cl-assert (eq status 0))
(goto-char (point-min))
(save-match-data
(while (not (eq (point) (point-max)))
(let ((worktree nil)
(head nil)
(branch nil))
(while (re-search-forward "^\\([^ ]\+\\) \\(.*\\)$" (point-at-eol) t)
(pcase (match-string 1)
("worktree" (setq worktree (match-string 2)))
("HEAD" (setq head (match-string 2)))
("branch" (setq branch (match-string 2))))
(forward-line 1)
(goto-char (point-at-bol)))
(setq trees `(,@trees
(:worktree ,worktree :head ,head :branch ,branch)))
(forward-line 1)
(goto-char (point-at-bol)))
))
trees)))


;; Local Variables:
;; flycheck-disabled-checkers: (emacs-lisp-checkdoc)
;; flycheck-checker: emacs-lisp


Loading…
Cancel
Save