 	 (forward-line 10))
        (merlin-tell-piece mode temp end))))
 
-(defun merlin-tell-till-end-of-phrase ()
+(defun merlin-tell-till-end-of-phrase (&optional no-retract)
   "Tell merlin the buffer until the end of the current phrase is met.
-It proceeds by telling (with the end mode) each line until it returns true or until we are at the end of the buffer."
+It proceeds by telling (with the end mode) each line until it returns true or until we are at the end of the buffer.
+
+If NO-RETRACT is non-nil, don't retract to a valid position after telling.
+"
   (let ((temp-point (point))
         (end-p nil))
     (forward-line 1)

    (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))
    (merlin-check-for-errors view-errors-p)
    (merlin-update-lock-zone-display)))
  

  "If merlin point is before the end of line send everything up to the end of line."
  (interactive)
  (save-excursion
    (forward-line 1)
    (let ((p merlin-lock-point))
      (if (> (point-at-eol) merlin-lock-point)
          (merlin-update-point (not quiet))))))

(defun merlin-edit (start end length)
  "Called when an edit is make to retract the locked zone if it is needed."
