Function: vc-hg-state-slow
vc-hg-state-slow is a byte-compiled function defined in vc-hg.el.gz.
Signature
(vc-hg-state-slow FILE)
Documentation
Determine status of FILE by running hg.
Source Code
;; Defined in /usr/src/emacs/lisp/vc/vc-hg.el.gz
(defun vc-hg-state-slow (file)
"Determine status of FILE by running hg."
(setq file (expand-file-name file))
(let*
((status nil)
(default-directory (file-name-directory file))
(out
(with-output-to-string
(with-current-buffer
standard-output
(setq status
(condition-case nil
;; Ignore all errors.
(let ((process-environment
;; Avoid localization of messages so we
;; can parse the output. Disable pager.
(append
(list "TERM=dumb" "LANGUAGE=C" "HGPLAIN=1")
process-environment)))
(process-file
vc-hg-program nil t nil
"--config" "ui.report_untrusted=0"
"--config" "alias.status=status"
"--config" "defaults.status="
"status" "-A" (file-relative-name file)))
;; Some problem happened. E.g. We can't find an `hg'
;; executable.
(error nil)))))))
(when (and (eq 0 status)
(> (length out) 0)
;; Posix
(null (or (string-match ".*: No such file or directory$" out)
;; MS-Windows
(string-match ".*: The system cannot find the file specified$" out))))
(let ((state (aref out 0)))
(cond
((eq state ?=) 'up-to-date)
((eq state ?A) 'added)
((eq state ?M) 'edited)
((eq state ?I) 'ignored)
((eq state ?R) 'removed)
((eq state ?!) 'missing)
((eq state ??) 'unregistered)
((eq state ?C) 'up-to-date) ;; Older mercurial versions use this.
(t 'up-to-date))))))