diff --git a/init.el b/init.el index e47b1ca..da8e3e0 100644 --- a/init.el +++ b/init.el @@ -10,6 +10,7 @@ (package-initialize)) (use-package delight + :if (package-installed-p 'delight) :demand t) (setq user-full-name "Evie Litherland-Smith" @@ -47,19 +48,23 @@ (scroll-bar-mode -1) (use-package nerd-icons + :if (package-installed-p 'nerd-icons) :demand t) (use-package nerd-icons-dired + :if (package-installed-p 'nerd-icons-dired) :after (nerd-icons dired) :commands nerd-icons-dired-mode :hook (dired-mode . (lambda () (nerd-icons-dired-mode +1)))) (use-package nerd-icons-ibuffer + :if (package-installed-p 'nerd-icons-ibuffer) :after nerd-icons :commands nerd-icons-ibuffer-mode :hook (ibuffer-mode . (lambda () (nerd-icons-ibuffer-mode +1)))) (use-package nerd-icons-corfu + :if (package-installed-p 'nerd-icons-corfu) :after nerd-icons) (setopt mode-line-compact 'long) @@ -132,6 +137,7 @@ (window-parameters . ((no-delete-other-windows . t)))))) (use-package khalel + :if (package-installed-p 'khalel) :after (appt org) :commands (khalel-run-vdirsyncer khalel-import-events khalel-add-capture-template) :custom @@ -157,15 +163,16 @@ (message-auto-save-directory nil) (message-kill-buffer-on-exit t)) -(setq mail-user-agent 'mu4e-user-agent - read-mail-command 'mu4e) - (use-package mu4e + :if (package-installed-p 'mu4e) :bind (("C-c m" . mu4e) :map mu4e-view-mode-map ("o n" . mu4e-org-store-and-capture)) :hook ((mu4e-main-mode mu4e-headers-mode) . (lambda () (visual-line-mode -1))) + :init + (setq mail-user-agent 'mu4e-user-agent + read-mail-command 'mu4e) :custom (mu4e-read-option-use-builtin nil) (mu4e-completing-read-function #'completing-read) @@ -555,6 +562,7 @@ tab-mark))) (use-package diff-hl + :if (package-installed-p 'diff-hl) :functions (diff-hl-magit-pre-refresh diff-hl-magit-post-refresh global-diff-hl-mode) @@ -685,6 +693,7 @@ (khalel-add-capture-template)) (use-package org-roam + :if (package-installed-p 'org-roam) :after org :defines org-roam-directory :functions org-roam-db-autosync-mode @@ -723,6 +732,7 @@ ;; :target (file+datetree "journal.org" week))))) (use-package org-journal + :if (package-installed-p 'org-journal) :after org :demand :bind ("C-c n d" . org-journal-new-entry) @@ -799,6 +809,7 @@ (org-icalendar-combined-description "Emacs org-mode combined export")) (use-package org-noter + :if (package-installed-p 'org-noter) :after (org doc-view citar) :commands org-noter :custom @@ -813,6 +824,7 @@ (org-noter-prefer-root-as-file-level nil)) (use-package citar + :if (package-installed-p 'citar) :defines (citar-bibliography citar-indicators) :functions (citar-indicator-create @@ -885,6 +897,7 @@ (setq org-preview-latex-default-process 'dvisvgm) (use-package vertico + :if (package-installed-p 'vertico) :functions vertico-mode :custom (vertico-cycle t) @@ -894,6 +907,7 @@ (require 'vertico-directory)) (use-package marginalia + :if (package-installed-p 'marginalia) :functions marginalia-mode :custom (marginalia-annotators '(marginalia-annotators-heavy @@ -904,6 +918,7 @@ :config (marginalia-mode +1)) (use-package orderless + :if (package-installed-p 'orderless) :custom (completion-styles '(orderless basic)) (completion-category-defaults nil) @@ -912,6 +927,7 @@ (eglot-capf (styles orderless))))) (use-package corfu + :if (package-installed-p 'corfu) :defines (corfu-map corfu-mode-map corfu-margin-formatters) @@ -963,10 +979,12 @@ (corfu-popupinfo-delay 0.3)) (use-package corfu-terminal + :if (package-installed-p 'corfu-terminal) :after corfu :functions corfu-terminal-mode) (use-package cape + :if (package-installed-p 'cape) :after corfu :functions (cape-emoji cape-file @@ -980,6 +998,7 @@ (cape-dabbrev-min-length (+ corfu-auto-prefix 1))) (use-package consult + :if (package-installed-p 'consult) :functions (consult-org-heading consult-history) :bind ((" " . consult-imenu) @@ -997,10 +1016,12 @@ (" " . consult-history))) (use-package consult-eglot + :if (package-installed-p 'consult-eglot) :after (consult eglot) :bind (("C-c c s" . consult-eglot-symbols))) (use-package tempel + :if (package-installed-p 'tempel) :defines tempel-path :functions (tempel-expand tempel-abbrev-mode) @@ -1011,6 +1032,7 @@ (tempel-trigger-prefix "+")) (use-package tempel-collection + :if (package-installed-p 'tempel-collection) :after tempel) (require 'tramp) @@ -1034,9 +1056,11 @@ ))) (use-package rainbow-delimiters + :if (package-installed-p 'rainbow-delimiters) :hook (prog-mode)) (use-package envrc + :if (package-installed-p 'envrc) :hook (after-init . envrc-global-mode) :custom (envrc-show-summary-in-minibuffer t)) @@ -1052,6 +1076,7 @@ (treesit-font-lock-level 3)) (use-package treesit-auto + :if (package-installed-p 'treesit-auto) :after treesit :functions (treesit-auto-add-to-auto-mode-alist global-treesit-auto-mode) @@ -1113,6 +1138,7 @@ ) (use-package apheleia + :if (package-installed-p 'apheleia) :delight apheleia-mode :defines (apheleia-formatters apheleia-mode-alist) @@ -1129,26 +1155,28 @@ :hook ((prog-mode yaml-ts-mode) . (lambda () (flymake-mode +1)))) (use-package flymake-shellcheck - :disabled t + :if (package-installed-p 'flymake-shellcheck) :functions flymake-shellcheck-load :after flymake :hook (sh-mode . (lambda () (if (executable-find "shellcheck" t) (flymake-shellcheck-load))))) (use-package flymake-yamllint + :if (package-installed-p 'flymake-yamllint) :functions flymake-yamllint-setup :after flymake :hook (yaml-ts-mode . (lambda () (if (executable-find "yamllint" t) (flymake-yamllint-setup))))) (use-package flymake-clippy - :disabled t + :if (package-installed-p 'flymake-clippy) :functions flymake-clippy-setup-backend :after flymake :hook (rust-mode . (lambda () (if (executable-find "clippy" t) (flymake-clippy-setup-backend))))) (use-package flymake-eslint + :if (package-installed-p 'flymake-eslint) :functions flymake-eslint-enable :after flymake :hook ((js-base-mode typescript-ts-base-mode) . (lambda () (if (executable-find "eslint" t) @@ -1179,6 +1207,7 @@ )) (use-package magit + :if (package-installed-p 'magit) :bind (("C-c g" . magit-status) :map project-prefix-map ("m" . magit-project-status)) @@ -1199,9 +1228,11 @@ ("\\`\\(?:gitea:\\|gt:\\)\\([^:]+\\)\\'" "git.xenia.me.uk" "gitea.user")))) (use-package forge + :if (package-installed-p 'forge) :after magit) (use-package nix-mode + :if (package-installed-p 'nix-mode) :mode "\\.nix\\'" :functions nix-prettify-global-mode :config @@ -1212,6 +1243,7 @@ (nix-prettify-global-mode +1)) (use-package lua-mode + :if (package-installed-p 'lua-mode) :mode "\\.lua\\'") (defun my/enable-fill-column (col) @@ -1244,9 +1276,11 @@ (setq python-ts-mode-hook python-mode-hook)) (use-package python-docstring + :if (package-installed-p 'python-docstring) :hook python-base-mode) (use-package python-pytest + :if (package-installed-p 'python-pytest) :defer t) (use-package files @@ -1265,9 +1299,11 @@ (doc-view-scale-internally t)) (use-package auctex + :if (package-installed-p 'auctex) :defer t) (use-package markdown-mode + :if (package-installed-p 'markdown-mode) :custom (markdown-enable-math t) (markdown-enable-html t) @@ -1279,6 +1315,7 @@ (set-face-attribute 'markdown-comment-face nil :inherit 'variable-pitch)) (use-package pandoc-mode + :if (package-installed-p 'pandoc-mode) :after (markdown-mode) :hook (markdown-mode . conditionally-turn-on-pandoc)) @@ -1293,11 +1330,18 @@ (eww-browse-url-new-window-is-tab nil)) (use-package scad-mode + :if (package-installed-p 'scad-mode) :defer t) ;; Scratch buffer shortcut (keymap-global-set "C-c w x" #'scratch-buffer) +(defun my/open-init-file () + "Open `user-init-file'." + (interactive) + (find-file user-init-file)) +(keymap-global-set "C-c w i" #'my/open-init-file) + ;; Org shortcuts (defun my/open-org-directory () "Open base `org-mode' directory in Dired."