diff --git a/users/price/dots/.config/emacs/config.org b/users/price/dots/.config/emacs/config.org index df784710..fe4c7970 100644 --- a/users/price/dots/.config/emacs/config.org +++ b/users/price/dots/.config/emacs/config.org @@ -6,13 +6,13 @@ * Auto Compile #+begin_src emacs-lisp -(use-package auto-compile - :custom - (load-prefer-newer t) - :defer nil - :config - (auto-compile-on-load-mode) - (auto-compile-on-save-mode)) + (use-package auto-compile + :custom + (load-prefer-newer t) + :defer nil + :config + (auto-compile-on-load-mode) + (auto-compile-on-save-mode)) #+end_src * Add Additional Package Archives @@ -23,48 +23,45 @@ ** Font Settings #+begin_src emacs-lisp -(set-face-attribute 'default nil :family "Fira Code" :height 130) + (set-face-attribute 'default nil :family "Fira Code" :height 130) #+end_src -** Splash Screen +** Splash Screen Remove splash screen and use a *scratch* buffer instead #+begin_src emacs-lisp -(setq inhibit-startup-message t - inhibit-startup-echo-area-message t) + (setq inhibit-startup-message t + inhibit-startup-echo-area-message t) #+end_src ** Line Numbers - Default to enabling line numbers in all buffers #+begin_src emacs-lisp -(setq display-line-numbers-type 'relative - column-number-mode t) -(global-display-line-numbers-mode t) + (setq display-line-numbers-type 'relative + column-number-mode t) + (global-display-line-numbers-mode t) #+end_src ** Improved Tabs/Indentation - #+begin_src emacs-lisp -(setq-default indent-tabs-mode nil) -(setq-default tab-width 4) + (setq-default indent-tabs-mode nil) + (setq-default tab-width 4) #+end_src ** Improved default visuals - #+begin_src emacs-lisp -(menu-bar-mode -1) -(scroll-bar-mode -1) -(tool-bar-mode -1) -(tooltip-mode t) -(setq visible-bell nil) -(global-hl-line-mode t) -(blink-cursor-mode 0) + (menu-bar-mode -1) + (scroll-bar-mode -1) + (tool-bar-mode -1) + (tooltip-mode t) + (setq visible-bell nil) + (global-hl-line-mode t) + (blink-cursor-mode 0) #+end_src ** Improve yes or no prompt #+begin_src emacs-lisp -(fset 'yes-or-no-p 'y-or-n-p) + (fset 'yes-or-no-p 'y-or-n-p) #+end_src * Appearance / Themeing @@ -72,387 +69,397 @@ Default to enabling line numbers in all buffers ** Kanagawa Theme #+begin_src emacs-lisp -(use-package kanagawa-theme - :ensure t - :config - (load-theme 'kanagawa t)) + (use-package kanagawa-theme + :ensure t + :config + (load-theme 'kanagawa t)) #+end_src * Evil Mode #+begin_src emacs-lisp -(use-package evil - :defer nil - :custom - (evl-kbd-macro-suppress-motion-error t) - (evil-want-C-u-scroll t) - (evil-want-integration t) - (evil-want-keybinding 'nil) - (which-key-allow-evil-operators t) - (evil-undo-system 'undo-redo) - (evil-want-fine-undo t) - (evil-emacs-state-modes nil) - (evil-insert-state-modes nil) - (evil-motion-state-modes nil) - :config - (evil-mode 1)) + (use-package evil + :defer nil + :custom + (evl-kbd-macro-suppress-motion-error t) + (evil-want-C-u-scroll t) + (evil-want-integration t) + (evil-want-keybinding 'nil) + (which-key-allow-evil-operators t) + (evil-undo-system 'undo-redo) + (evil-want-fine-undo t) + (evil-emacs-state-modes nil) + (evil-insert-state-modes nil) + (evil-motion-state-modes nil) + :config + (evil-mode 1)) #+end_src + * General.el - Used for keybindings - #+begin_src emacs-lisp -(use-package general - :ensure (:wait t) - :after evil - :demand t) -(general-create-definer key-leader - :states 'normal - :keymaps 'override - :prefix "SPC") -;; Make hitting escape work more like vim -(general-def - "" #'keyboard-escape-quit) + (use-package general + :ensure (:wait t) + :after evil + :demand t) + (general-create-definer key-leader + :states 'normal + :keymaps 'override + :prefix "SPC") + ;; Make hitting escape work more like vim + (general-def + "" #'keyboard-escape-quit) #+end_src * Which Key - #+begin_src emacs-lisp -(use-package which-key - :defer nil - :config - :general - (key-leader - :states 'normal - "w w" #'which-key-show-top-level) - :custom - (which-key-idle-delay 1) - (which-key-max-description-length 50) - :init - (which-key-mode)) + (use-package which-key + :defer nil + :config + :general + (key-leader + :states 'normal + "w w" #'which-key-show-top-level) + :custom + (which-key-idle-delay 1) + (which-key-max-description-length 50) + :init + (which-key-mode)) #+end_src * Auto Revert #+begin_src emacs-lisp -(global-auto-revert-mode t) + (global-auto-revert-mode t) #+end_src * Treesitter ** Auto setup - #+begin_src emacs-lisp -(use-package treesit-auto - :custom - (treesit-auto-install 'prompt) - :config - (treesit-auto-add-to-auto-mode-alist 'all) - (global-treesit-auto-mode)) + (use-package treesit-auto + :custom + (treesit-auto-install 'prompt) + :config + (treesit-auto-add-to-auto-mode-alist 'all) + (global-treesit-auto-mode)) #+end_src -** Nix Integration +** Nix Integration #+begin_src emacs-lisp -(use-package nix-ts-mode - :mode "\\.nix\\'") + (use-package nix-ts-mode + :mode "\\.nix\\'") #+end_src * Completion ** Orderless w/ Hotfuzz - #+begin_src emacs-lisp -(use-package hotfuzz - :ensure (:host github - :depth 1 - :repo "axelf4/hotfuzz" - :pre-build (("cmake" "-DCMAKE_C_FLAGS='-O3 -march=native'" ".") ("cmake" "--build" ".")))) + (use-package hotfuzz + :ensure (:host github + :depth 1 + :repo "axelf4/hotfuzz" + :pre-build (("cmake" "-DCMAKE_C_FLAGS='-O3 -march=native'" ".") ("cmake" "--build" ".")))) -(use-package orderless - :after hotfuzz - :demand t - :config - (defun +orderless--consult-suffix () - "Regexp which matches the end of string with Consult tofu support." - (if (and (boundp 'consult--tofu-char) (boundp 'consult--tofu-range)) - (format "[%c-%c]*$" - consult--tofu-char - (+ consult--tofu-char consult--tofu-range -1)) - "$")) + (use-package orderless + :after hotfuzz + :demand t + :config + (defun +orderless--consult-suffix () + "Regexp which matches the end of string with Consult tofu support." + (if (and (boundp 'consult--tofu-char) (boundp 'consult--tofu-range)) + (format "[%c-%c]*$" + consult--tofu-char + (+ consult--tofu-char consult--tofu-range -1)) + "$")) - ;; Recognizes the following patterns: - ;; * .ext (file extension) - ;; * regexp$ (regexp matching at end) - (defun +orderless-consult-dispatch (word _index _total) - (cond - ;; Ensure that $ works with Consult commands, which add disambiguation suffixes - ((string-suffix-p "$" word) - `(orderless-regexp . ,(concat (substring word 0 -1) (+orderless--consult-suffix)))) - ;; File extensions - ((and (or minibuffer-completing-file-name - (derived-mode-p 'eshell-mode)) - (string-match-p "\\`\\.." word)) - `(orderless-regexp . ,(concat "\\." (substring word 1) (+orderless--consult-suffix)))))) - - (defun flex-if-twiddle (pattern _index _total) - (when (string-suffix-p "~" pattern) - `(orderless-flex . ,(substring pattern 0 -1)))) - - (defun first-initialism (pattern index _total) - (if (= index 0) 'orderless-initialism)) - - (defun not-if-bang (pattern _index _total) - (cond - ((equal "!" pattern) - #'ignore) - ((string-prefix-p "!" pattern) - `(orderless-not . ,(substring pattern 1))))) - (setq - completion-ignore-case t - completion-styles '(hotfuzz orderless basic) - completion-category-defaults nil - completion-category-overrides nil - orderless-component-separator #'orderless-escapable-split-on-space - orderless-style-dispatchers (list #'+orderless-consult-dispatch - #'orderless-affix-dispatch) - orderless-matching-styles - '(orderless-prefixes - orderless-initialism - orderless-literal - orderless-regexp))) + ;; Recognizes the following patterns: + ;; * .ext (file extension) + ;; * regexp$ (regexp matching at end) + (defun +orderless-consult-dispatch (word _index _total) + (cond + ;; Ensure that $ works with Consult commands, which add disambiguation suffixes + ((string-suffix-p "$" word) + `(orderless-regexp . ,(concat (substring word 0 -1) (+orderless--consult-suffix)))) + ;; File extensions + ((and (or minibuffer-completing-file-name + (derived-mode-p 'eshell-mode)) + (string-match-p "\\`\\.." word)) + `(orderless-regexp . ,(concat "\\." (substring word 1) (+orderless--consult-suffix)))))) + (setq + completion-ignore-case t + completion-styles '(hotfuzz orderless basic) + completion-category-defaults nil + completion-category-overrides nil + orderless-component-separator #'orderless-escapable-split-on-space + orderless-style-dispatchers (list #'+orderless-consult-dispatch + #'orderless-affix-dispatch) + completion-category-overrides '((file (styles partial-completion)) + (command (styles +orderless-with-initialism)) + (variable (styles +orderless-with-initialism)) + (symbol (styles +orderless-with-initialism))) + orderless-matching-styles + '(orderless-prefixes + orderless-initialism + orderless-literal + orderless-regexp))) #+end_src ** Corfu - #+begin_src emacs-lisp -(use-package corfu - :custom - (corfu-min-width 60) - (corfu-max-width corfu-min-width) - (corfu-cycle t) - (corfu-auto t) - (corfu-auto-prefix 1) - (corfu-on-exact-match nil) - (corfu-preselect 'prompt) - (read-extended-command-predicate #'command-completion-default-include-p) - (completion-cycle-threshold 0) - (corfu-separator ?\s) - (tab-always-indent 'complete) - (corfu-scroll-margin 5) - (corfu-popupinfo-delay 0.1) - :general - (:keymaps 'corfu-map - "TAB" 'corfu-next - "S-TAB" 'corfu-previous - "S-SPC" 'corfu-insert-separator - "" 'corfu-quit - "" 'corfu-insert - "M-d" 'corfu-show-documentation - "M-d" 'corfu-show-location) - :init - (global-corfu-mode) - (corfu-history-mode) - (corfu-popupinfo-mode)) + (use-package corfu + :custom + (corfu-min-width 60) + (corfu-max-width corfu-min-width) + (corfu-cycle t) + (corfu-auto t) + (corfu-auto-prefix 1) + (corfu-on-exact-match nil) + (corfu-preselect 'prompt) + (read-extended-command-predicate #'command-completion-default-include-p) + (completion-cycle-threshold 0) + (corfu-separator ?\s) + (tab-always-indent 'complete) + (corfu-scroll-margin 5) + (corfu-popupinfo-delay 0.1) + :general + (:keymaps 'corfu-map + "TAB" 'corfu-next + "S-TAB" 'corfu-previous + "S-SPC" 'corfu-insert-separator + "" 'corfu-quit + "" 'corfu-insert + "M-d" 'corfu-show-documentation + "M-d" 'corfu-show-location) + :init + (global-corfu-mode) + (corfu-history-mode) + (corfu-popupinfo-mode)) #+end_src ** Cape #+begin_src emacs-lisp -(use-package cape - :ensure (:host github - :repo "minad/cape" - :depth 1) - :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-to-list 'completion-at-point-functions #'cape-dabbrev) - (add-to-list 'completion-at-point-functions #'cape-file) - (add-to-list 'completion-at-point-functions #'cape-elisp-block) - (add-to-list 'completion-at-point-functions #'cape-keyword) - (add-to-list 'completion-at-point-functions #'cape-elisp-symbol) - (add-to-list 'completion-at-point-functions #'cape-elisp-block) - (add-to-list 'completion-at-point-functions #'cape-tex) - (add-to-list 'completion-at-point-functions #'cape-emoji)) + (use-package cape + :ensure (:host github + :repo "minad/cape" + :depth 1) + :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-to-list 'completion-at-point-functions #'cape-dabbrev) + (add-to-list 'completion-at-point-functions #'cape-file) + (add-to-list 'completion-at-point-functions #'cape-elisp-block) + (add-to-list 'completion-at-point-functions #'cape-keyword) + (add-to-list 'completion-at-point-functions #'cape-elisp-symbol) + (add-to-list 'completion-at-point-functions #'cape-elisp-block) + (add-to-list 'completion-at-point-functions #'cape-tex) + (add-to-list 'completion-at-point-functions #'cape-emoji)) #+end_src ** Marginalia - #+begin_src emacs-lisp -(use-package marginalia - ; :ensure (:host github - ; :depth 1 - ; :repo "minad/marginalia") - :general - (:keymaps 'minibuffer-local-map - "M-A" #'marginalia-cycle) - :custom - (marginalia-max-relative-age 0) - (marginalia-align #'center) - :init - (marginalia-mode)) + (use-package marginalia + ; :ensure (:host github + ; :depth 1 + ; :repo "minad/marginalia") + :general + (:keymaps 'minibuffer-local-map + "M-A" #'marginalia-cycle) + :custom + (marginalia-max-relative-age 0) + (marginalia-align #'center) + :init + (marginalia-mode)) #+end_src ** Completion Icons - #+begin_src emacs-lisp -(use-package kind-icon - :ensure t - :after corfu nerd-icons - :custom - (kind-icon-use-icons nil) - (kind-icon-default-face 'corfu-default) ; to compute blended backgrounds correctly - (kind-icon-mapping - `( - (array ,(nerd-icons-codicon "nf-cod-symbol_array") :face font-lock-type-face) - (boolean ,(nerd-icons-codicon "nf-cod-symbol_boolean") :face font-lock-builtin-face) - (class ,(nerd-icons-codicon "nf-cod-symbol_class") :face font-lock-type-face) - (color ,(nerd-icons-codicon "nf-cod-symbol_color") :face success) - (command ,(nerd-icons-codicon "nf-cod-terminal") :face default) - (constant ,(nerd-icons-codicon "nf-cod-symbol_constant") :face font-lock-constant-face) - (constructor ,(nerd-icons-codicon "nf-cod-triangle_right") :face font-lock-function-name-face) - (enummember ,(nerd-icons-codicon "nf-cod-symbol_enum_member") :face font-lock-builtin-face) - (enum-member ,(nerd-icons-codicon "nf-cod-symbol_enum_member") :face font-lock-builtin-face) - (enum ,(nerd-icons-codicon "nf-cod-symbol_enum") :face font-lock-builtin-face) - (event ,(nerd-icons-codicon "nf-cod-symbol_event") :face font-lock-warning-face) - (field ,(nerd-icons-codicon "nf-cod-symbol_field") :face font-lock-variable-name-face) - (file ,(nerd-icons-codicon "nf-cod-symbol_file") :face font-lock-string-face) - (folder ,(nerd-icons-codicon "nf-cod-folder") :face font-lock-doc-face) - (interface ,(nerd-icons-codicon "nf-cod-symbol_interface") :face font-lock-type-face) - (keyword ,(nerd-icons-codicon "nf-cod-symbol_keyword") :face font-lock-keyword-face) - (macro ,(nerd-icons-codicon "nf-cod-symbol_misc") :face font-lock-keyword-face) - (magic ,(nerd-icons-codicon "nf-cod-wand") :face font-lock-builtin-face) - (method ,(nerd-icons-codicon "nf-cod-symbol_method") :face font-lock-function-name-face) - (function ,(nerd-icons-codicon "nf-cod-symbol_method") :face font-lock-function-name-face) - (module ,(nerd-icons-codicon "nf-cod-file_submodule") :face font-lock-preprocessor-face) - (numeric ,(nerd-icons-codicon "nf-cod-symbol_numeric") :face font-lock-builtin-face) - (operator ,(nerd-icons-codicon "nf-cod-symbol_operator") :face font-lock-comment-delimiter-face) - (param ,(nerd-icons-codicon "nf-cod-symbol_parameter") :face default) - (property ,(nerd-icons-codicon "nf-cod-symbol_property") :face font-lock-variable-name-face) - (reference ,(nerd-icons-codicon "nf-cod-references") :face font-lock-variable-name-face) - (snippet ,(nerd-icons-codicon "nf-cod-symbol_snippet") :face font-lock-string-face) - (string ,(nerd-icons-codicon "nf-cod-symbol_string") :face font-lock-string-face) - (struct ,(nerd-icons-codicon "nf-cod-symbol_structure") :face font-lock-variable-name-face) - (text ,(nerd-icons-codicon "nf-cod-text_size") :face font-lock-doc-face) - (typeparameter ,(nerd-icons-codicon "nf-cod-list_unordered") :face font-lock-type-face) - (type-parameter ,(nerd-icons-codicon "nf-cod-list_unordered") :face font-lock-type-face) - (unit ,(nerd-icons-codicon "nf-cod-symbol_ruler") :face font-lock-constant-face) - (value ,(nerd-icons-codicon "nf-cod-symbol_field") :face font-lock-builtin-face) - (variable ,(nerd-icons-codicon "nf-cod-symbol_variable") :face font-lock-variable-name-face) - (t ,(nerd-icons-codicon "nf-cod-code") :face font-lock-warning-face))) - :config - (add-to-list 'corfu-margin-formatters #'kind-icon-margin-formatter)) + (use-package kind-icon + :ensure t + :after corfu nerd-icons + :custom + (kind-icon-use-icons nil) + (kind-icon-default-face 'corfu-default) ; to compute blended backgrounds correctly + (kind-icon-mapping + `( + (array ,(nerd-icons-codicon "nf-cod-symbol_array") :face font-lock-type-face) + (boolean ,(nerd-icons-codicon "nf-cod-symbol_boolean") :face font-lock-builtin-face) + (class ,(nerd-icons-codicon "nf-cod-symbol_class") :face font-lock-type-face) + (color ,(nerd-icons-codicon "nf-cod-symbol_color") :face success) + (command ,(nerd-icons-codicon "nf-cod-terminal") :face default) + (constant ,(nerd-icons-codicon "nf-cod-symbol_constant") :face font-lock-constant-face) + (constructor ,(nerd-icons-codicon "nf-cod-triangle_right") :face font-lock-function-name-face) + (enummember ,(nerd-icons-codicon "nf-cod-symbol_enum_member") :face font-lock-builtin-face) + (enum-member ,(nerd-icons-codicon "nf-cod-symbol_enum_member") :face font-lock-builtin-face) + (enum ,(nerd-icons-codicon "nf-cod-symbol_enum") :face font-lock-builtin-face) + (event ,(nerd-icons-codicon "nf-cod-symbol_event") :face font-lock-warning-face) + (field ,(nerd-icons-codicon "nf-cod-symbol_field") :face font-lock-variable-name-face) + (file ,(nerd-icons-codicon "nf-cod-symbol_file") :face font-lock-string-face) + (folder ,(nerd-icons-codicon "nf-cod-folder") :face font-lock-doc-face) + (interface ,(nerd-icons-codicon "nf-cod-symbol_interface") :face font-lock-type-face) + (keyword ,(nerd-icons-codicon "nf-cod-symbol_keyword") :face font-lock-keyword-face) + (macro ,(nerd-icons-codicon "nf-cod-symbol_misc") :face font-lock-keyword-face) + (magic ,(nerd-icons-codicon "nf-cod-wand") :face font-lock-builtin-face) + (method ,(nerd-icons-codicon "nf-cod-symbol_method") :face font-lock-function-name-face) + (function ,(nerd-icons-codicon "nf-cod-symbol_method") :face font-lock-function-name-face) + (module ,(nerd-icons-codicon "nf-cod-file_submodule") :face font-lock-preprocessor-face) + (numeric ,(nerd-icons-codicon "nf-cod-symbol_numeric") :face font-lock-builtin-face) + (operator ,(nerd-icons-codicon "nf-cod-symbol_operator") :face font-lock-comment-delimiter-face) + (param ,(nerd-icons-codicon "nf-cod-symbol_parameter") :face default) + (property ,(nerd-icons-codicon "nf-cod-symbol_property") :face font-lock-variable-name-face) + (reference ,(nerd-icons-codicon "nf-cod-references") :face font-lock-variable-name-face) + (snippet ,(nerd-icons-codicon "nf-cod-symbol_snippet") :face font-lock-string-face) + (string ,(nerd-icons-codicon "nf-cod-symbol_string") :face font-lock-string-face) + (struct ,(nerd-icons-codicon "nf-cod-symbol_structure") :face font-lock-variable-name-face) + (text ,(nerd-icons-codicon "nf-cod-text_size") :face font-lock-doc-face) + (typeparameter ,(nerd-icons-codicon "nf-cod-list_unordered") :face font-lock-type-face) + (type-parameter ,(nerd-icons-codicon "nf-cod-list_unordered") :face font-lock-type-face) + (unit ,(nerd-icons-codicon "nf-cod-symbol_ruler") :face font-lock-constant-face) + (value ,(nerd-icons-codicon "nf-cod-symbol_field") :face font-lock-builtin-face) + (variable ,(nerd-icons-codicon "nf-cod-symbol_variable") :face font-lock-variable-name-face) + (t ,(nerd-icons-codicon "nf-cod-code") :face font-lock-warning-face))) + :config + (add-to-list 'corfu-margin-formatters #'kind-icon-margin-formatter)) -(use-package nerd-icons-completion - :after marginalia - :config - (nerd-icons-completion-mode) - (add-hook 'marginalia-mode-hook #'nerd-icons-completion-marginalia-setup)) + (use-package nerd-icons-completion + :after marginalia + :config + (nerd-icons-completion-mode) + (add-hook 'marginalia-mode-hook #'nerd-icons-completion-marginalia-setup)) #+end_src ** Vertico - #+begin_src emacs-lisp -(use-package vertico - :general - (:keymaps '(normal insert visual motion) - "M-." #'vertico-repeat) ; Perfectly return to the state of the last Vertico minibuffer usage - (:keymaps 'vertico-map - "C-" #'vertico-insert - "M-s" #'vertico-next-group - "M-a" #'vertico-previous-group - "TAB" #'vertico-next - [tab] #'vertico-next - "S-TAB" #'vertico-previous - [backtab] #'vertico-previous - "" #'vertico-directory-delete-char - "C-" #'vertico-directory-delete-word - "" #'vertico-directory-enter - "M-j" #'vertico-quick-insert) - :hook (minibuffer-setup . vertico-repeat-save) ; Make sure vertico state is saved for `vertico-repeat' - :custom - (vertico-count 15) - (vertico-resize t) - (vertico-cycle nil) - (enable-recursive-minibuffers t) - (vertico-grid-lookahead 50) - (vertico-buffer-display-action '(display-buffer-reuse-window)) - (vertico-multiform-categories - '((file reverse) - (consult-ripgrep buffer) - (consult-location) - (imenu buffer) - (library reverse indexed) - (org-roam-node reverse indexed) - (t reverse))) - (vertico-multiform-commands - '(("flyspell-correct-*" grid reverse) - (org-refile grid reverse indexed) - (consult-yank-pop indexed) - (consult-lsp-diagnostics) - )) - :init - (defun crm-indicator (args) - (cons (format "[CRM%s] %s" - (replace-regexp-in-string - "\\`\\[.*?]\\*\\|\\[.*?]\\*\\'" "" - crm-separator) - (car args)) - (cdr args))) - (advice-add #'completing-read-multiple :filter-args #'crm-indicator) + (use-package vertico + :general + (:keymaps '(normal insert visual motion) + "M-." #'vertico-repeat) ; Perfectly return to the state of the last Vertico minibuffer usage + (:keymaps 'vertico-map + "C-" #'vertico-insert + "M-s" #'vertico-next-group + "M-a" #'vertico-previous-group + "TAB" #'vertico-next + [tab] #'vertico-next + "S-TAB" #'vertico-previous + [backtab] #'vertico-previous + "" #'vertico-directory-delete-char + "C-" #'vertico-directory-delete-word + "" #'vertico-directory-enter + "M-j" #'vertico-quick-insert) + :hook (minibuffer-setup . vertico-repeat-save) ; Make sure vertico state is saved for `vertico-repeat' + :custom + (vertico-count 15) + (vertico-resize t) + (vertico-cycle nil) + (enable-recursive-minibuffers t) + (vertico-grid-lookahead 50) + (vertico-buffer-display-action '(display-buffer-reuse-window)) + (vertico-multiform-categories + '((file reverse) + (consult-ripgrep buffer) + (consult-location) + (imenu buffer) + (library reverse indexed) + (org-roam-node reverse indexed) + (t reverse))) + (vertico-multiform-commands + '(("flyspell-correct-*" grid reverse) + (org-refile grid reverse indexed) + (consult-yank-pop indexed) + (consult-lsp-diagnostics) + )) + :init + (defun crm-indicator (args) + (cons (format "[CRM%s] %s" + (replace-regexp-in-string + "\\`\\[.*?]\\*\\|\\[.*?]\\*\\'" "" + crm-separator) + (car args)) + (cdr args))) + (advice-add #'completing-read-multiple :filter-args #'crm-indicator) - ;; Do not allow the cursor in the minibuffer prompt - (setq minibuffer-prompt-properties - '(read-only t cursor-intangible t face minibuffer-prompt)) - (add-hook 'minibuffer-setup-hook #'cursor-intangible-mode) + ;; Do not allow the cursor in the minibuffer prompt + (setq minibuffer-prompt-properties + '(read-only t cursor-intangible t face minibuffer-prompt)) + (add-hook 'minibuffer-setup-hook #'cursor-intangible-mode) + + (setq read-extended-command-predicate + #'command-completion-default-include-p) + (vertico-mode) + (vertico-mouse-mode)) +#+end_src + +** Consult +#+begin_src emacs-lisp + (use-package consult + :init + (advice-add #'register-preview :override #'consult-register-window) + (setq register-preview-delay 0.5 + register-preview-function #'consult-register-format + xref-show-xrefs-function #'consult-xref + xref-show-definitions-function #'consult-xref + consult-narrow-key "<" + completion-in-region-function #'consult-completion-in-region) + :general + (key-leader + :states 'normal + "c" '(nil :which-key "Consult") + "c b" '(consult-buffer :which-key "Consult: Buffers") + "c f" '(consult-fd :which-key "Consult: Find File") + "c r" '(consult-recent-file :which-key "Consult: Recent Files"))) - (setq read-extended-command-predicate - #'command-completion-default-include-p) - (vertico-mode) - (vertico-mouse-mode)) #+end_src * Modeline - #+begin_src emacs-lisp -(use-package doom-modeline - :custom - (doom-modeline-height 25) - (doom-modeline-bar-width 5) - (doom-modeline-icon t) - (doom-modeline-major-mode-icon t) - (doom-modeline-major-mode-color-icon t) - (doom-modeline-buffer-file-name-style 'truncate-upto-project) - (doom-modeline-buffer-state-icon t) - (doom-modeline-buffer-modification-icon t) - (doom-modeline-minor-modes nil) - (doom-modeline-enable-word-count nil) - (doom-modeline-buffer-encoding t) - (doom-modeline-indent-info nil) - (doom-modeline-checker-simple-format t) - (doom-modeline-vcs-max-length 12) - (doom-modeline-env-version t) - (doom-modeline-irc-stylize 'identity) - (doom-modeline-github-timer nil) - (doom-modeline-gnus-timer nil) - :config - (doom-modeline-mode)) + (use-package doom-modeline + :custom + (doom-modeline-height 25) + (doom-modeline-bar-width 5) + (doom-modeline-icon t) + (doom-modeline-major-mode-icon t) + (doom-modeline-major-mode-color-icon t) + (doom-modeline-buffer-file-name-style 'truncate-upto-project) + (doom-modeline-buffer-state-icon t) + (doom-modeline-buffer-modification-icon t) + (doom-modeline-minor-modes nil) + (doom-modeline-enable-word-count nil) + (doom-modeline-buffer-encoding t) + (doom-modeline-indent-info nil) + (doom-modeline-checker-simple-format t) + (doom-modeline-vcs-max-length 12) + (doom-modeline-env-version t) + (doom-modeline-irc-stylize 'identity) + (doom-modeline-github-timer nil) + (doom-modeline-gnus-timer nil) + :config + (doom-modeline-mode)) +#+end_src + +* Save Hist +#+begin_src emacs-lisp +(use-package savehist + :ensure nil + :init + (savehist-mode)) #+end_src * Org Mode #+begin_src emacs-lisp -(use-package org - :hook (org-mode . org-indent-mode) - :ensure nil - :defer nil - :general - (key-leader - :states 'normal - "o" '(nil :which-key "Org")) - :custom - (org-agenda-files '("~/Notes" "~/Git/College")) - (org-hide-emphasis-markers t)) + (use-package org + :hook (org-mode . org-indent-mode) + :ensure nil + :defer nil + :general + (key-leader + :states 'normal + "o" '(nil :which-key "Org")) + :custom + (org-agenda-files '("~/Notes" "~/Git/College")) + (org-hide-emphasis-markers t)) -(use-package org-modern - :after org - :config - (global-org-modern-mode)) + (use-package org-modern + :after org + :config + (global-org-modern-mode)) #+end_src