   (:keymaps 'dired-mode-map
             ")" #'dired-git-info-mode))
 
+(use-package auto-package-update
+  :custom
+  (auto-package-update-delete-old-versions t)
+  :defer t)
+
 ;;
 ;; Editing & navigation
 ;;

                     (mc/prompt-for-inclusion-in-whitelist cmd)))
        (mc/execute-command-for-all-fake-cursors cmd))))
  :custom
  (selectrum-count-style 'current/matches)
  (enable-recursive-minibuffers t)
  :general
  (:keymaps 'selectrum-minibuffer-map
            "<escape>" #'keyboard-quit-context+
            "<prior>" #'selectrum-previous-page
            "<next>"  #'selectrum-next-page
            "<C-backspace>" #'backward-kill-sexp)
  :init
  (selectrum-mode t)
  (selectrum-prescient-mode t)
  (prescient-persist-mode t)
  (advice-add #'execute-extended-command :around #'user/execute-extended-command))

(use-package marginalia
  :after selectrum
  :general
  (:keympas 'minibuffer-local-map
            "C-o" #'marginalia-cycle)
  :init
  (marginalia-mode t))

(use-package consult
  :general
  ([remap switch-to-buffer] #'consult-buffer)
  ([remap switch-to-buffer-other-window] #'consult-buffer-other-window)
  ([remap switch-to-buffer-other-frame] #'consult-buffer-other-frame)
  ([remap copy-to-register] #'consult-register)
  ([remap bookmark-jump] #'consult-bookmark)
  ([remap yank-pop] #'consult-yank-pop)
  ([remap imenu] #'consult-imenu)
  ("M-g i" #'consult-imenu)
  ("M-s l" #'consult-line)
  ("M-g o" #'consult-outline)
  :custom
  (consult-preview-key nil)
  (consult-narrow-key "<"))

(use-package consult-selectrum
  :after selectrum)

;; I'm still thinking about this, I like it but I don't find it very useful
(use-package embark
  :general
  (:keymaps 'minibuffer-local-map
            "C-'" #'embark-act-noexit
            "C-\"" #'embark-act
            "M-e" #'embark-export
            "C-l" #'embark-collect-live
            "M-q" #'embark-collect-toggle-view)
  (:keymaps 'embark-meta-map
            "?" #'embark-keymap-help))

(use-package company
  :preface


(csetq
 package-selected-packages
 '(auto-package-update beginend cmake-font-lock cmake-mode comment-dwim-2 ccls
   company counsel cython-mode diff-hl dired-du dired-git-info dired-narrow
   diredfl dumb-jump eacl elfeed eterm-256color eterm-256color-mode
   expand-region flycheck flycheck-pos-tip geiser general git-timemachine
   goggles helpful haskell-mode hl-todo hydra ivy ivy-rich iedit iy-go-to-char
   js2-mode json-mode log4j-mode lsp-mode lsp-ui magit magit-gitflow marginalia
   minions modern-cpp-font-lock modus-themes multi-term multiple-cursors
   nasm-mode no-littering nov org pdf-tools pyvenv racket-mode
   rainbow-delimiters rainbow-mode realgud rg rust-mode selectrum-prescient smex
   string-inflection symbol-overlay tree-sitter tree-sitter-langs undo-tree
   use-package vc-msg visual-fill-column web-mode wgrep which-key yaml-mode
   yasnippet))

(unless (bound-and-true-p package--initialized)
  (package-initialize))
