             (end-of-line))))
     ;; End of buffer
     (if (not end-p)
-        (progn
-          (merlin-send-command "tell" '("end" nil))
-          (if no-retract (merlin-get-position)
-            (merlin-seek (merlin-get-position))))
-      (if no-retract (merlin-get-position)
-        (merlin-retract-to (merlin-get-position))))))
+        (merlin-send-command "tell" '("end" nil)))
+    (merlin-check-for-errors view-errors-p)
+    (setq merlin--point (merlin-get-position))
+    (merlin-update-lock-zone-display)))
 
       
       

    (setq merlin-lock-point (merlin-retract-to (point)))
    (end-of-line)
    (merlin-tell-piece-split "struct" merlin-lock-point (point))
    (setq merlin-lock-point (merlin-tell-till-end-of-phrase (not view-errors-p)))
    (merlin-check-for-errors view-errors-p)
    (merlin-update-lock-zone-display)))
  
(defun merlin-check-synchronize (&optional quiet)
  "If merlin point is before the end of line send everything up to the end of line."

        (merlin-goto-point (cdr (assoc 'start err)))
        (if merlin-pending-errors-overlays
            (delete-overlay (pop merlin-pending-errors-overlays)))
        (if merlin-pending-errors
            (message "%s (%d more errors, use %s to go to the next)" 
                     (length merlin-pending-errors)
                     (substitute-command-keys "\\[merlin-next-error]")
                     )
          (message "%s" (cdr (assoc 'message err))))
        (setq merlin-idle-point (point))
        (merlin-highlight (merlin-make-bounds err) 'next-error))
    (next-error)))

(defun merlin-remove-error-overlay ()
