   (evil-set-initial-state 'deft-mode 'insert)
 
   ;; these modes are better in emacs state
-  (dolist (mode '(git-rebase-mode
-                  flycheck-error-list-mode
-                  rtags-mode
-                  finder-mode
-                  doc-view-mode
-                  image-mode
-                  magit-repolist-mode
-                  paradox-menu-mode
-                  dired-mode
-                  special-mode
-                  image-dired-thumbnail-mode))
-           (add-to-list 'evil-emacs-state-modes mode))
-
-  ;; these modes benefit from hjkl bindings
-  (evil-add-hjkl-bindings tabulated-list-mode-map 'emacs)
-  (evil-add-hjkl-bindings dired-mode-map 'emacs)
-  (evil-add-hjkl-bindings special-mode-map 'emacs)
-
-  ;; Put view-mode in motion-state, this gives us motion
-  ;; keys and not much more, this is good for read-only scenario
-  ;; Since view-mode is combined with other modes, this needs
-  ;; to be a hook.
-  (add-hook 'view-mode-hook (lambda () (if view-mode (evil-motion-state) (evil-normal-state))))
+  (dolist (mode
+           '(dired-mode
+             finder-mode
+             image-dired-thumbnail-mode
+             paradox-menu-mode))
+    (add-to-list 'evil-emacs-state-modes mode))
 
   (evil-mode 1))
+
+(use-package evil-collection
+  :after evil
+  :defines evil-collection-company-use-tng
+  :init
+  (setq evil-collection-company-use-tng t)
+  :defer 1
+  :config
+  (evil-collection-init))
 
 (use-package ws-butler
   :hook (( prog-mode text-mode ) . ws-butler-mode )

  (setq evil-want-C-w-delete nil            ; want C-w it for windows commands
        evil-want-C-w-in-emacs-state t      ; ditto
        evil-want-C-i-jump nil              ; need TAB for other things
        evil-indent-convert-tabs nil        ; make = work with smart tabs mode
        evil-mode-line-format '( before . mode-line-front-space)
        evil-search-module #'evil-search)
  :general
    (:states '(normal visual emacs)
    :prefix "<SPC>"
      "<SPC>"      #'me:switch-to-previous-buffer
      ";"          #'evil-jump-forward
      ","          #'evil-jump-backward
      "a"          #'align
      "f"          #'evil-avy-goto-word-1
      "g"          #'evil-avy-goto-char-2
      "h"          #'hydra-git-gutter/body
      "l"          #'evil-avy-goto-char-in-line
      "p"          #'hydra-paste/body
      "w"          #'save-buffer
      "x"          #'exchange-point-and-mark
      "<DEL>"      #'kill-this-buffer)
    (:states '(normal visual) :prefix "<SPC>"
             "s"  (general-simulate-key "\"*" :state 'normal :keymap nil :lookup nil :name me:simulate-selection-reg )
             "c"  (general-simulate-key "\"+" :state 'normal :keymap nil :lookup nil :name me:simulate-clipboard-reg ))
    (:keymaps '(normal visual ) "<escape>" #'keyboard-quit)

    ("<f9> l"     #'magit-log-current)
    ("<f9> r"     #'magit-list-repositories)
    ("<f9> <f9>"  #'magit-status)
  :config)

(use-package evil-magit
  :after magit
  :demand t
  :init
  :config)

;; Cowboy override of git-timemachine-mode-map
;; Timemachine's map has a number of bindings which
