 (defun emc-remove-overlay-at-point ()
   "Remove the overlay at point."
   (interactive)
+  (when emc-cursor-list
+    (setq emc-cursor-list (remove-if (lambda (overlay) (eq (overlay-start overlay) (point)))
+                                     emc-cursor-list)))
   (remove-overlays (point) (1+ (point))))
 
 (defun emc-remove-cursor-at-point ()

(defun emc-setup-key-maps ()
  "Sets up all key bindings for working with multiple cursors."
  (interactive)
  (define-key evil-visual-state-local-map (kbd "C-n") 'emc-make-next-cursor)
  (define-key evil-normal-state-local-map (kbd "C-n") 'emc-make-next-cursor)
  (define-key evil-normal-state-local-map (kbd "C-,") 'emc-remove-all-cursors))

(emc-setup-key-maps)

  "Go to next pattern given by `emc-get-pattern'."
  (interactive)
  (when (emc-get-pattern)
    (emc-goto-next-match (emc-get-pattern))))

(defun emc-goto-prev ()
  "Go to prev pattern given by `emc-get-pattern'."
  (interactive)
  (when (emc-get-pattern)
    (emc-goto-next-match (emc-get-pattern) 'backward)
    (emc-goto-next-match (emc-get-pattern) 'backward)
    (emc-goto-next-match (emc-get-pattern) 'forward)))

(defun emc-make-cursor-and-goto-next-match ()
  "Create a cursor at point and go to next match if any."
  (let ((cursor (emc-make-cursor-at-point)))
    (evil-exit-visual-state)
