     )
   )
 
+;;;; GENERAL
+(use-package evil
+  :init
+  (setq evil-want-integration t)
+  (setq evil-undo-system 'undo-tree)
+  (setq evil-want-fine-undo 'fine)
+  :config
+  (evil-mode 1)
+  (define-key evil-normal-state-map (kbd ",O") 'show-all)
+  (define-key evil-normal-state-map (kbd "H") "^")
+  (define-key evil-normal-state-map (kbd "L") "$")
+  (define-key evil-normal-state-map (kbd "RET") 'org-open-at-point)
+  (define-key evil-normal-state-map (kbd "TAB") 'hs-toggle-hiding)
+
+  (defun minibuffer-keyboard-quit ()  ;; Esc quits everything
+    (interactive)
+    (if (and delete-selection-mode transient-mark-mode mark-active)
+	(setq deactivate-mark  t)
+      (when (get-buffer "*Completions*") (delete-windows-on "*Completions*"))
+      (abort-recursive-edit)))
+  (define-key evil-normal-state-map [escape] 'keyboard-quit)
+  (define-key evil-visual-state-map [escape] 'keyboard-quit)
+  (define-key minibuffer-local-map [escape] 'minibuffer-keyboard-quit)
+  (define-key minibuffer-local-ns-map [escape] 'minibuffer-keyboard-quit)
+  (define-key minibuffer-local-completion-map [escape] 'minibuffer-keyboard-quit)
+  (define-key minibuffer-local-must-match-map [escape] 'minibuffer-keyboard-quit)
+  (define-key minibuffer-local-isearch-map [escape] 'minibuffer-keyboard-quit)
+  (global-set-key [escape] 'evil-exit-emacs-state)
+  )
+
+;;;; SURROUND
+(use-package evil-surround
+  :ensure t
+  :config
+  (global-evil-surround-mode 1))
+
+;;;; EVIL-COLLECTION
+(use-package evil-collection
+  :after evil
+  :ensure t
+  :config
+  (evil-collection-init))
+
 ;;;; ESCAPE
 (use-package evil-escape
   :config

  :ensure t
  :init
  (setq org-roam-v2-ack t)
  (setq org-roam-node-display-template "${title:*} ${tags:*}")
  :hook
  (after-init . org-roam-mode)
  :custom

  (setq web-mode-css-indent-offset 2)
)

;;;; HTML PREVIEW MODE
;; Starts the `simple-httpd' server if it is not already running
;; Turns on `impatient-mode' for the current buffer."

(use-package impatient-mode
  :ensure t
  :defer t)

(defun my-html-mode-hook ()
  (unless (get-process "httpd")
    (message "starting httpd server...")
    (httpd-start))
  (impatient-mode))
(add-hook #'html-mode-hook #'my-html-mode-hook)

;;;; CSV
(use-package csv-mode)

;;;; WHICH KEY
(use-package which-key
  :diminish
