+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
;; - delete-file (file) OK
;; - rename-file (old new) OK
;; - find-file-hook () NOT NEEDED
+;; - conflicted-files OK
;;; Code:
(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")