summaryrefslogtreecommitdiff
path: root/lisp/vc/vc-hg.el
diff options
context:
space:
mode:
authorDaniel Pittman <slippycheeze@google.com>2018-10-23 11:24:04 -0400
committerEli Zaretskii <eliz@gnu.org>2018-11-03 10:34:56 +0200
commit9d5c4d07462e69b4e0552e7f09e3e59a3fd10b6a (patch)
treee8e47ede42d9f10959b9c8cea7bf5c4a2a728e73 /lisp/vc/vc-hg.el
parent7b82d514371f77072b30a4a6a75cba6684ea56b4 (diff)
downloademacs-9d5c4d07462e69b4e0552e7f09e3e59a3fd10b6a.tar.gz
Fix interaction between vc-hg find-file-hook and vc state caching
Bad assumptions in the `vc-hg-find-file-hook' prevented it from working. This correctly them. (Bug#33129). 2018-10-23 Daniel Pittman <slippycheeze@google.com> * lisp/vc/vc-hg.el (vc-hg-find-file-hook): This function made two assumptions about conflicted files that were not accurate, preventing conflicts in files ever being detected. The first was that the `vc-state' was cache by the time this was invoked, which it is not - at least when visiting the file, or using `vc-refresh-state'. The second was that a file with the ".orig" extension would be present, next to the file being visited. This is the default behavior of Mercurial, but can be overridden by the user. Since the VC mode-line code will shortly calculate the state for display, the optimization of testing for the ".orig" file only delayed this work by a few moments.
Diffstat (limited to 'lisp/vc/vc-hg.el')
-rw-r--r--lisp/vc/vc-hg.el4
1 files changed, 1 insertions, 3 deletions
diff --git a/lisp/vc/vc-hg.el b/lisp/vc/vc-hg.el
index 36965735959..d528813bc08 100644
--- a/lisp/vc/vc-hg.el
+++ b/lisp/vc/vc-hg.el
@@ -1142,11 +1142,9 @@ REV is the revision to check out into WORKFILE."
(defun vc-hg-find-file-hook ()
(when (and buffer-file-name
- (file-exists-p (concat buffer-file-name ".orig"))
;; Hg does not seem to have a "conflict" status, eg
;; hg http://bz.selenic.com/show_bug.cgi?id=2724
- (memq (vc-file-getprop buffer-file-name 'vc-state)
- '(edited conflict))
+ (memq (vc-state buffer-file-name) '(edited conflict))
;; Maybe go on to check that "hg resolve -l" says "U"?
;; If "hg resolve -l" says there's a conflict but there are no
;; conflict markers, it's not clear what we should do.