 (defun merlin-completion-at-point ()
   "Perform completion at point with merlin."
   (save-excursion
-    (merlin-check-synchronize))
-  (save-excursion
     (skip-syntax-backward "w_.")
     (let ((start (point)))
       (skip-syntax-forward "w_.")

`merlin-show-type-of-point'."
  (interactive "p")
  (save-excursion
    (forward-line)
    (merlin-check-synchronize))
  (if (and merlin-enclosing-types (equal merlin-last-point-type (point)))
      (if (> arg 1)
          (merlin-type-enclosing-go-down)
        (merlin-type-enclosing-go-up))
    (if (> arg 1)
        (merlin-show-type-of-region)
      (progn
        (setq merlin-last-point-type (point))
        (merlin-type-enclosing)
        (if (not merlin-enclosing-types)
            (merlin-show-type-of-point arg)
          (merlin-type-enclosing-go-up))))))

(defun merlin-show-type-of-user-supplied-expression (s)
  "Show the type of the expression S."

(defun merlin-type-enclosing-go-up ()
  "Go up in the enclosing type zipper."
  (interactive)
  (when merlin-enclosing-types
    (setq merlin-enclosing-offset (+ 1 merlin-enclosing-offset))
    (if (> merlin-enclosing-offset (1- (length merlin-enclosing-types)))
        (message "cannot go up")
      (progn
        (merlin-type-enclosing-go)
        ))))

(defun merlin-type-enclosing-go-down ()
  "Go down in the enclosing type zipper."
