Fix `magit--is-branch-at-point-remote'
This commit is contained in:
parent
bf49b72cf0
commit
f735945848
1 changed files with 36 additions and 41 deletions
77
magit.el
77
magit.el
|
@ -3568,8 +3568,7 @@ Prefix arg means justify as well."
|
||||||
(delete-window))
|
(delete-window))
|
||||||
|
|
||||||
(defun magit--branch-name-from-line (line)
|
(defun magit--branch-name-from-line (line)
|
||||||
"Extract the branch name from one line of 'git branch' output.
|
"Extract the branch name from one line of 'git branch' output."
|
||||||
Will remove the 'remotes/' prefix if it exists."
|
|
||||||
(get-text-property 0 'branch-name line))
|
(get-text-property 0 'branch-name line))
|
||||||
|
|
||||||
(defun magit--branch-name-at-point ()
|
(defun magit--branch-name-at-point ()
|
||||||
|
@ -3593,7 +3592,7 @@ With prefix force the removal even it it hasn't been merged."
|
||||||
(interactive "P")
|
(interactive "P")
|
||||||
(let ((args (list "branch"
|
(let ((args (list "branch"
|
||||||
(if force "-D" "-d")
|
(if force "-D" "-d")
|
||||||
(if (magit--is-branch-at-point-remote) "-r")
|
(when (magit--is-branch-at-point-remote) "-r")
|
||||||
(magit--branch-name-at-point))))
|
(magit--branch-name-at-point))))
|
||||||
(save-excursion
|
(save-excursion
|
||||||
(apply 'magit-run-git (remq nil args))
|
(apply 'magit-run-git (remq nil args))
|
||||||
|
@ -3612,18 +3611,16 @@ With prefix force the removal even it it hasn't been merged."
|
||||||
(magit-show-branches))
|
(magit-show-branches))
|
||||||
|
|
||||||
(defvar magit-branches-buffer-name "*magit-branches*")
|
(defvar magit-branches-buffer-name "*magit-branches*")
|
||||||
(defvar magit-number-local-branches nil
|
|
||||||
"Number of local branches for the branches window")
|
|
||||||
|
|
||||||
(defun magit--is-branch-at-point-remote()
|
(defun magit--is-branch-at-point-remote()
|
||||||
"Return t if the branch at point is a remote tracking branch"
|
"Return t if the branch at point is a remote tracking branch"
|
||||||
(> (line-number-at-pos) (or magit-number-local-branches 0)))
|
(get-text-property (point) 'remote))
|
||||||
|
|
||||||
(defun magit--branch-view-details (branch-line)
|
(defun magit--branch-view-details (branch-line)
|
||||||
"Extract details from branch -va output."
|
"Extract details from branch -va output."
|
||||||
(string-match (concat
|
(string-match (concat
|
||||||
"^\\(\\*? \\{1,2\\}\\)" ; current branch marker (maybe)
|
"^\\(\\*? \\{1,2\\}\\)" ; current branch marker (maybe)
|
||||||
"\\(?:remotes/\\)?\\(.+?\\) +" ; branch name
|
"\\(remotes/\\)?\\(.+?\\) +" ; branch name
|
||||||
|
|
||||||
"\\(?:"
|
"\\(?:"
|
||||||
"\\([0-9a-fA-F]\\{7\\}\\) " ; sha1
|
"\\([0-9a-fA-F]\\{7\\}\\) " ; sha1
|
||||||
|
@ -3634,48 +3631,46 @@ With prefix force the removal even it it hasn't been merged."
|
||||||
)
|
)
|
||||||
branch-line)
|
branch-line)
|
||||||
(let ((res (list (cons 'current (match-string 1 branch-line))
|
(let ((res (list (cons 'current (match-string 1 branch-line))
|
||||||
(cons 'branch (match-string 2 branch-line)))))
|
(cons 'remote (not (not (match-string 2 branch-line))))
|
||||||
(if (match-string 4 branch-line)
|
(cons 'branch (match-string 3 branch-line)))))
|
||||||
(cons (cons 'other-ref (match-string 5 branch-line)) res)
|
(if (match-string 5 branch-line)
|
||||||
|
(cons (cons 'other-ref (match-string 6 branch-line)) res)
|
||||||
(append
|
(append
|
||||||
(list
|
(list
|
||||||
(cons 'sha1 (match-string 3 branch-line))
|
(cons 'sha1 (match-string 4 branch-line))
|
||||||
(cons 'msg (match-string 5 branch-line)))
|
(cons 'msg (match-string 6 branch-line)))
|
||||||
res))))
|
res))))
|
||||||
|
|
||||||
(defun magit-show-branches ()
|
(defun magit-show-branches ()
|
||||||
"Show all of the current branches in other-window."
|
"Show all of the current branches in other-window."
|
||||||
(interactive)
|
(interactive)
|
||||||
(save-selected-window
|
(unless (string= (buffer-name) magit-branches-buffer-name)
|
||||||
(unless (string= (buffer-name) magit-branches-buffer-name)
|
(switch-to-buffer-other-window magit-branches-buffer-name))
|
||||||
(switch-to-buffer-other-window magit-branches-buffer-name))
|
(let ((inhibit-read-only t)
|
||||||
(let ((inhibit-read-only t)
|
(old-point (point))
|
||||||
(branches (mapcar 'magit--branch-view-details
|
(branches (mapcar 'magit--branch-view-details
|
||||||
(magit-git-lines "branch" "-va"))))
|
(magit-git-lines "branch" "-va"))))
|
||||||
(erase-buffer)
|
(erase-buffer)
|
||||||
(insert
|
(insert
|
||||||
(mapconcat
|
(mapconcat
|
||||||
(lambda (b)
|
(lambda (b)
|
||||||
(propertize
|
(propertize
|
||||||
(concat
|
(concat
|
||||||
(cdr (assoc 'current b))
|
(cdr (assoc 'current b))
|
||||||
(propertize (or (cdr (assoc 'sha1 b))
|
(propertize (or (cdr (assoc 'sha1 b))
|
||||||
" ")
|
" ")
|
||||||
'face 'magit-log-sha1)
|
'face 'magit-log-sha1)
|
||||||
" "
|
" "
|
||||||
(cdr (assoc 'branch b))
|
(cdr (assoc 'branch b))
|
||||||
(when (assoc 'other-ref b)
|
(when (assoc 'other-ref b)
|
||||||
(concat " (" (cdr (assoc 'other-ref b)) ")")))
|
(concat " (" (cdr (assoc 'other-ref b)) ")")))
|
||||||
'branch-name (cdr (assoc 'branch b))))
|
'remote (cdr (assoc 'remote b))
|
||||||
branches
|
'branch-name (cdr (assoc 'branch b))))
|
||||||
"\n")))
|
branches
|
||||||
|
"\n"))
|
||||||
(magit-show-branches-mode)
|
(magit-show-branches-mode)
|
||||||
(set (make-local-variable 'magit-number-local-branches)
|
(goto-char old-point))
|
||||||
(with-temp-buffer
|
(setq buffer-read-only t))
|
||||||
(insert (magit-git-string "branch"))
|
|
||||||
(line-number-at-pos)))
|
|
||||||
(setq buffer-read-only t)))
|
|
||||||
|
|
||||||
(defvar magit-ediff-file)
|
(defvar magit-ediff-file)
|
||||||
(defvar magit-ediff-windows)
|
(defvar magit-ediff-windows)
|
||||||
|
|
Loading…
Reference in a new issue