瀏覽代碼

Fix

master
10sr 5 年之前
父節點
當前提交
d35749d81d
簽署人: 10sr GPG 金鑰 ID: 7BEC428194130EB2
共有 1 個檔案被更改,包括 34 行新增14 行删除
  1. +34
    -14
      emacs.el

+ 34
- 14
emacs.el 查看文件

@@ -2058,14 +2058,14 @@ use for the buffer. It defaults to \"*recetf-show*\"."
(defun git-worktree-get-current-trees ()
"Get current worktree list."
(with-temp-buffer
(let ((trees nil)
(status (call-process "git"
(let ((status (call-process "git"
nil
t
nil
"worktree" "list" "--porcelain")))
(cl-assert (eq status 0))
(goto-char (point-min))
(cl-assert (eq status 0)))
(goto-char (point-min))
(let ((trees nil))
(save-match-data
(while (not (eq (point) (point-max)))
(let ((worktree nil)
@@ -2085,6 +2085,21 @@ use for the buffer. It defaults to \"*recetf-show*\"."
))
trees)))

(defun git-worktree--call-process (args)
"Start git process synchronously with ARGS.

Raise error when git process ends with non-zero status.
Any output will be written to current buffer."
(let ((status (apply 'call-process
"git"
nil
t
nil
args)))
(cl-assert (eq status 0)
nil
(buffer-substring-no-properties (point-min) (point-max)))))

(defun git-worktree--get-repository-root (dir)
"Resolve repository root of DIR.

@@ -2097,11 +2112,11 @@ If DIR is not inside of any git repository, signal an error."
t
nil
"rev-parse" "--show-toplevel")))
(goto-char (point-min))
(cl-assert (eq status 0)
nil
(buffer-substring-no-properties (point-min) (point-max)))
(buffer-substring-no-properties (point-at-bol) (point-at-eol)))))
(buffer-substring-no-properties (point-min) (point-max))))
(goto-char (point-min))
(buffer-substring-no-properties (point-at-bol) (point-at-eol))))
;;(git-worktree--get-repository-root default-directory)

(defun git-worktree-open-noselect (&optional directory)
@@ -2142,9 +2157,9 @@ initializing."
("Worktree" ,worktree-max-size t)
("Branch" ,branch-max-size t)
("Head" -1 t)
]))
(git-worktree-mode)
(current-buffer)))))
])))
(git-worktree-mode)
(current-buffer))))
;; ((:worktree "/Users/10sr/.dotfiles" :head "5e7457a8d49ef6a517cdf39d038ba5fdf98dc68e" :branch "refs/heads/master") (:worktree "/Users/10sr/.dotfiles/b1" :head "fa7d868076d807692e35f82ae23596c903fd1117" :branch "refs/heads/b1"))
(defun git-worktree-open (&optional directory)
"Open git worktree list buffer.
@@ -2159,15 +2174,20 @@ initializing."
(defun git-worktree-mode-go ()
"Go to worktree directory at point."
(interactive)
(let ((id (tabulated-list-get-id)))
(when id
(dired (plist-get id :worktree)))))
(let* ((id (tabulated-list-get-id))
(path (plist-get id :worktree)))
(when path
(if (file-directory-p path)
(dired path)
(error "Directory not found: %s" path)))))

(defun git-worktree-mode-move ())

(defvar git-worktree-mode-map
(let ((map (make-sparse-keymap)))
(suppress-keymap map)
(define-key map (kbd "C-m") 'git-worktree-mode-go)
(define-key map "R" 'git-worktree-mode-rename)
(define-key map "R" 'git-worktree-mode-move)
(define-key map "D" 'git-worktree-mode-remove)
(define-key map (kbd "C-g") 'git-worktree-mode-close)
(define-key map "/" 'isearch-forward)


Loading…
取消
儲存