Commit Diff


commit - 1870c8bd649b60c35cc007a4d13722934f8b80f5
commit + c151c257bb0f660fb7b52a1b7823c0831d320a2c
blob - 3986a311497e18b0bebd91ca8afe265e2f0e0ee9
blob + 6bf63b7c7e37a64fe428825cf2c30023ccb18005
--- vc-got.el
+++ vc-got.el
@@ -102,7 +102,7 @@
 ;; - check-headers                      NOT NEEDED, `got' does not use headers
 ;; - delete-file                        DONE
 ;; - rename-file                        NOT NEEDED, `delete' + `register' is enough
-;; - find-file-hook                     NOT NEEDED, no need for hooks yet
+;; - find-file-hook                     DONE
 ;; - extra-menu                         NOT IMPLEMENTED, add `import', `integrate', `stage'?
 ;; - extra-dir-menu                     NOT IMPLEMENTED, same as above
 ;; - conflicted-files                   DONE
@@ -766,6 +766,17 @@ Value is returned as floating point fractional number 
   "Delete FILE locally and mark it deleted in work tree."
   (vc-got--remove file t))
 
+(defun vc-got-find-file-hook ()
+  "Activate `smerge-mode' if there is a conflict."
+  ;; just like vc-git-find-file-hook
+  (when (and buffer-file-name
+             (eq (vc-state buffer-file-name 'Got) 'conflict)
+             (save-excursion
+               (goto-char (point-min))
+               (re-search-forward "^<<<<<<< " nil 'noerror)))
+    (smerge-start-session)
+    (vc-message-unresolved-conflicts buffer-file-name)))
+
 (defun vc-got-conflicted-files (dir)
   "Return the list of files with conflicts in directory DIR."
   (let* ((root (vc-got-root dir))