(use-package diminish)

;; Eglot recommends pulling the latest of the standard libraries it
;; uses from ELPA if you're not tracking the current.config/emacsevelopment
;; branch.
(use-package xref
  :pin gnu
  )

(use-package eldoc
  :pin gnu
  :diminish
  )

;; Other packages

(use-package emacs
  :config
  (setq enable-recursive-minibuffers t)

  ;; Filter the M-x list base on the current mode
  (setq read-extended-command-predicate #'command-completion-default-include-p)

  ;; Enable triggering completion with the tab key.
  (setq tab-always-indent 'complete)
  )

(use-package dashboard
  :config
  (dashboard-setup-startup-hook))

(when (version<= "26.0.50" emacs-version )
  (add-hook 'prog-mode-hook 'display-line-numbers-mode)
  (add-hook 'prog-mode-hook 'column-number-mode)
  )

;; Display a horizontal line instead of ^L for page break characters
(use-package page-break-lines
  :diminish
  :config
  (global-page-break-lines-mode +1)
  )

(use-package recentf
  ;; This is an emacs built-in but we're pulling the latest version
  :config
  (setq recentf-max-saved-items 100)
  (setq recentf-save-file (recentf-expand-file-name "~/.config/emacs/private/cache/recentf"))
  (recentf-mode 1))

;; Persist history over Emacs restarts. Vertico sorts by history position.
(use-package savehist
  ;; This is an emacs built-in but we're pulling the latest version
  :config
  (savehist-mode))

(use-package which-key
  :diminish
  :config
  (which-key-mode))

(use-package windmove
  :config
  (windmove-default-keybindings))

(setq tramp-default-method "ssh")

(use-package nginx-mode
  :mode (
         ("headers\\.include\\'" . nginx-mode)
         )
  :config
  (setq nginx-indent-level 4))

(use-package systemd
  :mode
  (("\\.service\\'" . systemd-mode)
   ("\\.timer\\'" . systemd-mode))
  )

(use-package pkgbuild-mode
  :mode
  (("PKGBUILD\\'" . pkgbuild-mode))
  )

(provide 'base-extensions)
