 
 ;; Completely unbind visual-line-mode's stupid bindings
 (use-package visual-line-mode
-  :hook (prog-mode text-mode)
-  ;; :bind (:map visual-line-mode-map
-  ;;             ([remap move-beginning-of-line]   . nil)
-  ;;             ([remap move-end-of-line]         . nil)
-  ;;             ([remap beginning-of-visual-line] . move-beginning-of-line)
-  ;;             ([remap end-of-visual-line]       . move-end-of-line)
-  ;;             ([remap kill-line]                . nil)
-  ;;             ([remap next-line]                . next-logical-line)
-  ;;             ([remap previous-line]            . previous-logical-line))
-  )
+  :hook (prog-mode text-mode))
 
 ;; Sane keyboard scrolling
 (use-package pager-default-keybindings)

;; Javascript
(add-hook 'js-mode-hook
          (lambda ()
            ;; Make sure fontification in js-mode and derived modes is up to
            ;; date with the latest ES2015 keywords
            ;; (font-lock-add-keywords
            ;;  nil
            ;;  '("\\_<async\\_>"
            ;;    "\\_<await\\_>"
            ;;    ("\\_<import\\_>"
            ;;     ("\\_<as\\_>" nil nil (0 font-lock-keyword-face))
            ;;     ("\\_<from\\_>" nil nil (0 font-lock-keyword-face)))
            ;;    ("\\_<for\\_>" "\\_<of\\_>" nil nil (0 font-lock-keyword-face))))

            (use-package tern
              :delight
              :config


;; Project management, version control, file search and browser
(use-package projectile
  :config
  (projectile-mode t)
  (with-eval-after-load 'pyenv-mode
    (add-hook 'projectile-switch-project-hook
              (lambda ()
                "Set pyenv version matching project name."
                (let ((project (projectile-project-name)))
                  (if (member project (pyenv-mode-versions))
                      (pyenv-mode-set project)
                    (pyenv-mode-unset)))))))

;; Second fastest but the best find grep in terms of tooling support
(use-package ag
