             (car (bounds-of-thing-at-point 'ocaml-atom))
             (point))))
       (no-cache t)
-      (init merlin-mode)
+      (init (if merlin-mode (merlin-sync-to-point)))
       (doc-buffer
        (progn
          (let ((doc (merlin-completion-info arg)))

          nil)
      (with-current-buffer (merlin-process-buffer)
        (if merlin-debug (merlin-debug (format ">%s" string)))
        (setq merlin-process-last-user name)
        (tq-enqueue merlin-process-queue string "\n"
                    (cons callback-if-success (cons callback-if-exn command))
                    #'(lambda (closure answer)

       (minibuffer-message "%s: %s" arg (cadr (assoc arg merlin-company-cache))))
      (candidates
       (progn
         (merlin-sync-to-point)
         (setq merlin-company-cache (merlin-completion-data arg))
         (mapcar #'(lambda (x) (car x)) merlin-company-cache)))
      (meta (cadr (assoc arg merlin-company-cache)))
