Integrate Rüdiger Sonderfeld's code for detecting conflicted files under git.

This commit is contained in:
Eric S. Raymond 2014-08-13 04:05:45 -04:00
parent c1677234a3
commit 2cc441ecbf
2 changed files with 25 additions and 0 deletions

View file

@ -1,3 +1,10 @@
2014-08-13 Eric S. Raymond <esr@thyrsus.com>
* vc/vc-git.el (vc-git-conflicted-files): Integrate Rüdiger
Sonderfeld's code for detecting conflicted files using a status
listing. Useful in itself and a step towards better smerge
support.
2014-08-12 Stefan Monnier <monnier@iro.umontreal.ca>
* mpc.el (mpc-reorder): Don't bother splitting the "active"s elements

View file

@ -102,6 +102,7 @@
;; - delete-file (file) OK
;; - rename-file (old new) OK
;; - find-file-hook () NOT NEEDED
;; - conflicted-files OK
;;; Code:
@ -769,6 +770,23 @@ This prompts for a branch to merge from."
(with-current-buffer buffer (vc-run-delayed (vc-compilation-mode 'git)))
(vc-set-async-update buffer)))
(defun vc-git-conflicted-files (directory)
"Return the list of files with conflicts in DIRECTORY."
(let* ((status
(vc-git--run-command-string directory "status" "--porcelain" "--"))
(lines (split-string status "\n" 'omit-nulls))
files)
(dolist (line lines files)
(when (string-match "\\([ MADRCU?!][ MADRCU?!]\\) \\(.+\\)\\(?: -> \\(.+\\)\\)?"
line)
(let ((state (match-string 1 line))
(file (match-string 2 line)))
;; See git-status(1).
(when (member state '("AU" "UD" "UA" ;; "DD"
"DU" "AA" "UU"))
(push file files)))))))
;;; HISTORY FUNCTIONS
(autoload 'vc-setup-buffer "vc-dispatcher")