   "Retract merlin's view to `point'"
   (merlin-seek point))
 
-(defun merlin-update-overlay ()
-  (if merlin-overlay
-      (delete-overlay merlin-overlay))
-  (setq merlin-overlay (make-overlay (point-min) merlin-lock-point))
-  (overlay-put merlin-overlay 'face 'merlin-locked-face))
+(defun merlin-update-lock-zone-display ()
+  "Updates the locked zone display, according to `merlin-display-lock-zone'"
+  (mapc
+   '(lambda (x)
+      (case x
+        (margin (merlin-update-margin-lock-zone))
+        (highlight (merlin-update-highlight-lock-zone))))
+   merlin-display-lock-zone))
+
+(defun merlin-update-margin-lock-zone ()
+  (if merlin-lock-zone-margin-overlay
+      (delete-overlay merlin-lock-zone-margin-overlay))
+  (save-excursion
+    (goto-char merlin-lock-point)
+    (setq merlin-lock-zone-margin-overlay (make-overlay (point) (point)))
+    (set-window-margins nil 1)
+    (overlay-put merlin-lock-zone-margin-overlay 
+                 'before-string 
+                 (propertize " " 'display `((margin left-margin) ,merlin-margin-lock)))))
+
+(defun merlin-update-highlight-lock-zone ()
+  (if merlin-lock-zone-highlight-overlay
+      (delete-overlay merlin-lock-zone-highlight-overlay))
+  (setq merlin-lock-zone-highlight-overlay (make-overlay (point-min) merlin-lock-point))
+  (overlay-put merlin-lock-zone-highlight-overlay 'face 'merlin-locked-face))
 
 (defun merlin-update-point (view-errors-p)
   "Moves the merlin point to around the given the current

  (if (< start merlin-lock-point)
      (progn
        (setq merlin-lock-point (merlin-retract-to start))
        (merlin-update-overlay))))
;; COMPLETION
(defun merlin-extract-complete (prefix l)
  "Parses and format completion results"

            (process-send-eof (merlin-get-process))
            (delete-process (merlin-get-process))))
      (cancel-timer merlin-idle-timer)
      (if merlin-lock-zone-highlight-overlay
          (delete-overlay merlin-lock-zone-highlight-overlay))
      (if merlin-lock-zone-margin-overlay
          (delete-overlay merlin-lock-zone-margin-overlay))
      (if merlin-enclosing-overlay (delete-overlay merlin-enclosing-overlay))
      (merlin-delete-error-overlays)
      (if (get-buffer (merlin-make-buffer-name))
