;; rhjr/paths (defvar rhjr/paths/config "~/.config/emacs/") (defvar rhjr/paths/packages (concat rhjr/paths/config "packages/")) (defvar rhjr/paths/thirdparty (concat rhjr/paths/config "thirdparty/")) (defvar rhjr/paths/no-littering/etc (concat rhjr/paths/config "config/")) (defvar rhjr/paths/no-littering/var (concat rhjr/paths/config "data/")) (defvar rhjr/paths/eln-cache (concat rhjr/paths/config "data/eln-cache")) (defvar rhjr/paths/home "~") ;; rhjr/archives (require 'package) (setq package-user-dir rhjr/paths/packages package-archives '(("melpa" . "https://melpa.org/packages/") ("gnu" . "http://elpa.gnu.org/packages/"))) (package-initialize) (unless (package-installed-p 'use-package) (package-refresh-contents) (package-install 'use-package)) (eval-and-compile (setq use-package-always-ensure t use-package-expand-minimally t)) (require 'use-package) ;;; rhjr/config-folder (setq user-emacs-directory rhjr/paths/config) (use-package compat :ensure t) ; no-littering dependency (add-to-list'load-path rhjr/paths/thirdparty) (eval-and-compile (setq no-littering-etc-directory rhjr/paths/no-littering/etc) (setq no-littering-var-directory rhjr/paths/no-littering/var) (require 'no-littering)) (when (fboundp 'startup-redirect-eln-cache) (startup-redirect-eln-cache (convert-standard-filename rhjr/paths/eln-cache))) (load-theme 'misterioso) ;;; rhjr/defaults (setq-default initial-major-mode 'text-mode initial-scratch-message "" use-dialog-box nil inhibit-startup-message "" inhibit-splash-screen t inhibit-startup-echo-area-message t create-lockfiles nil make-backup-files nil auto-save-default nil) ;;; rhjr/standard-packages (use-package dired-x :ensure nil :config (setq-default dired-free-space nil default-directory rhjr/paths/home dired-omit-files (rx (or (seq bol "." eol) (seq bol ".git" eol) (seq bol ".dir-locals.el" eol))) dired-use-ls-dired t insert-directory-program "/usr/bin/ls" dired-recursive-copies 'always dired-recursive-deletes 'always dired-listing-switches "-laGh1v --group-directories-first")) ;;; rhjr/functions ;; private functions (defun display-startup-echo-area-message () (message "")) ;; public functions ;;; rhjr/mode (menu-bar-mode -1) (tool-bar-mode -1) (scroll-bar-mode -1) (cua-mode 1) (set-fringe-mode '(2 . 0)) ;;; rhjr/packages (use-package magit :defer t) (use-package corfu ;; Optional customizations ;; :custom ;; (corfu-cycle t) ;; Enable cycling for `corfu-next/previous' ;; (corfu-quit-at-boundary nil) ;; Never quit at completion boundary ;; (corfu-quit-no-match nil) ;; Never quit, even if there is no match ;; (corfu-preview-current nil) ;; Disable current candidate preview ;; (corfu-preselect 'prompt) ;; Preselect the prompt ;; (corfu-on-exact-match 'insert) ;; Configure handling of exact matches :init (global-corfu-mode) ;; Enable optional extension modes: ;; (corfu-history-mode) ;; (corfu-popupinfo-mode) ) (use-package consult :bind (("C-x b" . consult-buffer) ("C-x 4 b" . consult-buffer-other-window) ("C-x 5 b" . consult-buffer-other-frame) ;; M-s bindings in `search-map' ("C-f" . consult-find) ("C-s" . consult-ripgrep)) :init ;; use consult to select xref locations with preview. (setq xref-show-xrefs-function #'consult-xref xref-show-definitions-function #'consult-xref)) (use-package vertico :custom ;; (vertico-scroll-margin 0) ;; Different scroll margin ;; (vertico-count 20) ;; Show more candidates ;; (vertico-resize t) ;; Grow and shrink the Vertico minibuffer (vertico-cycle t) ;; Enable cycling for `vertico-next/previous' :init (vertico-mode)) (use-package savehist ;; store history when emacs closes. :init (savehist-mode)) (use-package orderless :custom ;; (orderless-style-dispatchers '(orderless-affix-dispatch)) ;; (orderless-component-separator #'orderless-escapable-split-on-space) (completion-styles '(orderless basic)) (completion-category-overrides '((file (styles partial-completion)))) (completion-category-defaults nil) ;; Disable defaults, use our settings (completion-pcm-leading-wildcard t)) (use-package cape ;; Bind prefix keymap providing all Cape commands under a mnemonic key. ;; Press C-c p ? to for help. :bind ("C-c p" . cape-prefix-map) ;; Alternative key: M-, M-p, M-+ ;; Alternatively bind Cape commands individually. ;; :bind (("C-c p d" . cape-dabbrev) ;; ("C-c p h" . cape-history) ;; ("C-c p f" . cape-file) ;; ...) :init ;; Add to the global default value of `completion-at-point-functions' which is ;; used by `completion-at-point'. The order of the functions matters, the ;; first function returning a result wins. Note that the list of buffer-local ;; completion functions takes precedence over the global list. (add-hook 'completion-at-point-functions #'cape-abbrev) (add-hook 'completion-at-point-functions #'cape-dabbrev) (add-hook 'completion-at-point-functions #'cape-file) ) (use-package emacs :custom ;; Enable context menu. `vertico-multiform-mode' adds a menu in the minibuffer ;; to switch display modes. (context-menu-mode t) ;; Support opening new minibuffers from inside existing minibuffers. (enable-recursive-minibuffers t) ;; Hide commands in M-x which do not work in the current mode. Vertico ;; commands are hidden in normal buffers. This setting is useful beyond ;; Vertico. (read-extended-command-predicate #'command-completion-default-include-p) ;; Do not allow the cursor in the minibuffer prompt (minibuffer-prompt-properties '(read-only t cursor-intangible t face minibuffer-prompt)) ;; TAB cycle if there are only few candidates (completion-cycle-threshold 3) ;; Enable indentation+completion using the TAB key. ;; `completion-at-point' is often bound to M-TAB. (tab-always-indent 'complete) ;; Emacs 30 and newer: Disable Ispell completion function. ;; Try `cape-dict' as an alternative. (text-mode-ispell-word-completion nil) ;; Hide commands in M-x which do not apply to the current mode. Corfu ;; commands are hidden, since they are not used via M-x. This setting is ;; useful beyond Corfu. (read-extended-command-predicate #'command-completion-default-include-p)) (use-package dabbrev ;; Swap M-/ and C-M-/ :bind (("M-/" . dabbrev-completion) ("C-M-/" . dabbrev-expand)) :config (add-to-list 'dabbrev-ignored-buffer-regexps "\\` ") (add-to-list 'dabbrev-ignored-buffer-modes 'authinfo-mode) (add-to-list 'dabbrev-ignored-buffer-modes 'doc-view-mode) (add-to-list 'dabbrev-ignored-buffer-modes 'pdf-view-mode) (add-to-list 'dabbrev-ignored-buffer-modes 'tags-table-mode)) ;;; rhjr/keybindings (global-unset-key (kbd "C-y")) ;; redundant due to cua-mode (global-unset-key (kbd "C-w")) (global-unset-key (kbd "M-w")) (global-unset-key (kbd "C-x u")) (global-set-key (kbd "C-x C-g") 'bookmark-jump) (global-set-key (kbd "C-z") 'undo) ;;; rhjr/programming (setq-default show-trailing-whitespace t) (add-hook 'before-save-hook 'delete-trailing-whitespace) (custom-set-variables ;; custom-set-variables was added by Custom. ;; If you edit it by hand, you could mess it up, so be careful. ;; Your init file should contain only one such instance. ;; If there is more than one, they won't work right. '(package-selected-packages '(cape vertico orderless magit esup corfu consult))) (custom-set-faces ;; custom-set-faces was added by Custom. ;; If you edit it by hand, you could mess it up, so be careful. ;; Your init file should contain only one such instance. ;; If there is more than one, they won't work right. )