 (use-package evil-snipe
   :diminish evil-snipe-mode
   :init
-  (define-key evil-normal-state-map "s" nil)
-  (define-key evil-normal-state-map "S" nil)
   (setq-default
    evil-snipe-smart-case t
-   evil-snipe-repeat-keys nil ;; using evil-space for repeating
+   evil-snipe-repeat-keys nil ; using evil-space to repeat
    evil-snipe-scope 'line
    evil-snipe-repeat-scope 'buffer
-   evil-snipe-override-evil-repeat-keys nil
+   evil-snipe-override-evil-repeat-keys nil ; causes problems with remapped ;
    evil-snipe-symbol-groups '((?\[ "[[{(]")
                               (?\] "[]})]")))
   :config


(use-package evil
  :init
  ;; highlight matching delimiters where it's important
  (defun show-paren-mode-off () (show-paren-mode -1))
  (add-hook! evil-insert-state-entry    'show-paren-mode)
  (add-hook! evil-insert-state-exit     'show-paren-mode-off)
  (add-hook! evil-visual-state-entry    'show-paren-mode)
  (add-hook! evil-visual-state-exit     'show-paren-mode-off)
  (add-hook! evil-motion-state-entry    'show-paren-mode)
  (add-hook! evil-motion-state-exit     'show-paren-mode-off)
  (add-hook! evil-operator-state-entry  'show-paren-mode)
  (add-hook! evil-operator-state-exit   'show-paren-mode-off)

  ;; Disable highlights on insert-mode
  (add-hook! evil-insert-state-entry 'evil-ex-nohighlight)

  (add-hook! undo-tree-mode (diminish 'undo-tree-mode))
  ;; Always ensure evil-shift-width is consistent with tab-width
  (add-hook! evil-local-mode (setq evil-shift-width tab-width))


  (bind! :map evil-command-window-mode-map :n [escape] 'kill-buffer-and-window)

  ;; modes to map to different default states
  (dolist (mode-map '((cider-repl-mode   . emacs)
                      (comint-mode       . emacs)
                      (term-mode         . emacs)
                      (help-mode         . normal)
                      (message-mode      . normal)
                      (compilation-mode  . normal)))
    (evil-set-initial-state `,(car mode-map) `,(cdr mode-map)))

  (progn ; evil hacks
