From: rearman Date: Wed, 17 Jun 2026 15:41:12 +0000 (-0400) Subject: Don't use use-package X-Git-Url: https://git.earman.xyz/?a=commitdiff_plain;h=467dddd9bd064f77c0a3495a99a39f4eecb93a5b;p=emacsinit.git Don't use use-package Why not try it this way --- diff --git a/config.org b/config.org index ea70e07..037313d 100644 --- a/config.org +++ b/config.org @@ -24,102 +24,101 @@ Set up the correct lexical binding to avoid screaming compiler (find-alternate-file (concat "/sudo:root@localhost:" buffer-file-name))))) #+END_SRC * Packages -** Add melpa, and reduce the declarations by setting defaults +** Add melpa, initialize #+BEGIN_SRC emacs-lisp (require 'package) (add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/") t) - -(setq use-package-always-ensure t - use-package-always-defer t) +(package-initialize) +#+END_SRC +** Install all packages that are not included +#+BEGIN_SRC emacs-lisp +(defvar *re/packages* + '(corfu + expand-region + page-break-lines + pdf-tools + auctex + csv-mode + markdown-mode + edit-indirect + sly + geiser + geiser-chicken + forth-mode + trashed + org-transclusion)) + +(dolist (pkg *re/packages*) + (unless (package-installed-p pkg) + (package-refresh-contents) + (package-install pkg))) #+END_SRC ** Corfu #+BEGIN_SRC emacs-lisp -(use-package corfu - :demand - t - :custom - (corfu-auto t) - (corfu-auto-delay 0) - (corfu-auto-prefix 1) - :config - (global-corfu-mode)) - -(use-package corfu-popupinfo - :ensure - nil ; part of corfu - :after - corfu - :hook - (corfu-mode . corfu-popupinfo-mode) - :custom - (corfu-popupinfo-delay '(1.0 . 0.01)) ; start after one second, fast refresh once on - (corfu-popupinfo-hide nil) - :config - (corfu-popupinfo-mode)) +(require 'corfu) + +(setq corfu-auto t + corfu-auto-delay 0 + corfu-auto-prefix 1) + +(add-hook 'corfu-mode-hook #'corfu-popupinfo-mode) + +(setq corfu-popupinfo-delay '(1.0 . 0.01) ; start after one second, fast refresh once on + corfu-popupinfo-hide nil) + +(global-corfu-mode) #+END_SRC ** Expand Region #+BEGIN_SRC emacs-lisp -(use-package expand-region - :bind - (("C-=" . er/expand-region))) +(require 'expand-region) + +(keymap-global-set "C-=" #'er/expand-region) #+END_SRC -** Aggressive Indent +** Page Break Lines #+BEGIN_SRC emacs-lisp -(use-package aggressive-indent) +(require 'page-break-lines) +(global-page-break-lines-mode) #+END_SRC -** Magit -No longer needed, since I defer by default. -** Page Break Lines -Needs to be demanded so I don't have to manually load it +** PDFtools +Be sure to run =pdf-tools-install= before first run #+BEGIN_SRC emacs-lisp -(use-package page-break-lines - :demand - t - :config - (global-page-break-lines-mode)) +(add-to-list 'auto-mode-alist '("\\.pdf\\'" . pdf-tools-install)) + +(setq-default pdf-view-display-size 'fit-page) #+END_SRC -** AucTeX and pdftools -Make AucTeX use pdftools, prompt for master file, synctex, etc. Be sure to run =pdf-tools-install= before first use. +** Auctex #+BEGIN_SRC emacs-lisp -(use-package pdf-tools) - -(use-package auctex - :config - (setq-default TeX-master nil) - (add-to-list 'TeX-view-program-selection '(output-pdf "PDF Tools")) - (setq TeX-auto-save t - TeX-parse-self t - TeX-PDF-mode t - TeX-source-correlate-start-server t) - (add-hook 'TeX-after-compilation-finished-functions - #'TeX-revert-document-buffer)) +(setq-default TeX-master nil) + +(setq TeX-auto-save t + TeX-parse-self t + TeX-PDF-mode t + TeX-view-program-selection '((output-pdf "PDF Tools")) + TeX-source-correlate-start-server t) + +(add-hook 'TeX-after-compilation-finished-functions + #'TeX-revert-document-buffer) #+END_SRC ** CSV Mode #+BEGIN_SRC emacs-lisp -(use-package csv-mode - :config - (add-hook 'csv-mode-hook 'csv-align-mode)) +(add-hook 'csv-mode-hook 'csv-align-mode) #+END_SRC ** Markdown Mode Make markdown act more like org when I'm forced to use it #+BEGIN_SRC emacs-lisp -(use-package markdown-mode - :config - (setq markdown-special-ctrl-a/e t) - :bind - (:map markdown-mode-map - ("M-" . markdown-demote) - ("M-" . markdown-promote) - ("M-" . markdown-move-up) - ("M-" . markdown-move-down) - ("C-M-u" . markdown-up-heading) - ("C-M-b" . markdown-outline-previous-same-level) - ("C-M-f" . markdown-outline-next-same-level) - ("C-M-p" . markdown-outline-previous) - ("C-M-n" . markdown-outline-next))) - -(use-package edit-indirect :after 'markdown-mode) +(setq markdown-special-ctrl-a/e t) + +(with-eval-after-load 'markdown-mode + (keymap-set markdown-mode-map "M-" #'markdown-demote) + (keymap-set markdown-mode-map "M-" #'markdown-promote) + (keymap-set markdown-mode-map "M-" #'markdown-move-up) + (keymap-set markdown-mode-map "M-" #'markdown-move-down) + (keymap-set markdown-mode-map "C-M-u" #'markdown-up-heading) + (keymap-set markdown-mode-map "C-M-b" #'markdown-outline-previous-same-level) + (keymap-set markdown-mode-map "C-M-f" #'markdown-outline-next-same-level) + (keymap-set markdown-mode-map "C-M-p" #'markdown-outline-previous) + (keymap-set markdown-mode-map "C-M-n" #'markdown-outline-next)) #+END_SRC ** Sly #+BEGIN_SRC emacs-lisp @@ -138,19 +137,18 @@ Make markdown act more like org when I'm forced to use it (interactive "P") (sly-connect "localhost" 4004)) -(use-package sly - :config - (setq inferior-lisp-program "sbcl" - sly-net-coding-system 'utf-8-unix - sly-command-switch-to-existing-lisp 'always) - (let ((core (expand-file-name "~/sbcl.core-for-sly"))) - (when (file-exists-p core) - (setq sly-lisp-implementations (list `(sbcl ("sbcl" "--core" ,core)))))) - :bind - (:map sly-mrepl-mode-map - (")" . (lambda () (interactive) (re/send-on-close-paren #'sly-mrepl-return))) - ("]" . (lambda () (interactive) (re/balance-and-eval-sexp #'sly-mrepl-return))) - ("C-c q" . re/sly-quit-current-lisp))) +(setq inferior-lisp-program "sbcl" + sly-net-coding-system 'utf-8-unix + sly-command-switch-to-existing-lisp 'always) + +(let ((core (expand-file-name "~/sbcl.core-for-sly"))) + (when (file-exists-p core) + (setq sly-lisp-implementations (list `(sbcl ("sbcl" "--core" ,core)))))) + +(with-eval-after-load 'sly-mrepl + (keymap-set sly-mrepl-mode-map ")" (re/send-on-close-paren #'sly-mrepl-return)) + (keymap-set sly-mrepl-mode-map "]" (re/balance-and-eval-sexp #'sly-mrepl-return)) + (keymap-set sly-mrepl-mode-map "C-c q" #'re/sly-quit-current-lisp)) #+END_SRC *** Eldoc settings Sly really doesn't play well with elodc in the minibuffer, so here are some settings to make it better. @@ -164,58 +162,41 @@ Sly really doesn't play well with elodc in the minibuffer, so here are some sett #+END_SRC ** Geiser #+BEGIN_SRC emacs-lisp -(use-package geiser - :config - (if (equal system-type 'windows-nt) - (setq geiser-chicken-binary '("C:/tools/chicken/bin/csi.exe" "-:c")) - (setq geiser-chicken-binary "csi -:c")) - (setq scheme-program-name geiser-chicken-binary - geiser-active-implementations '(chicken)) - (add-hook 'scheme-mode-hook 'geiser-mode) - :bind - (:map geiser-repl-mode-map - (")" . (lambda () (interactive) (re/send-on-close-paren #'geiser-repl-maybe-send))) - ("]" . (lambda () (interactive) (re/balance-and-eval-sexp #'geiser-repl-maybe-send))))) - -(use-package geiser-chicken :after 'geiser) +(if (equal system-type 'windows-nt) + (setq geiser-chicken-binary '("C:/tools/chicken/bin/csi.exe" "-:c")) + (setq geiser-chicken-binary "csi -:c")) + +(setq scheme-program-name geiser-chicken-binary + geiser-active-implementations '(chicken)) + +(add-hook 'scheme-mode-hook 'geiser-mode) + +(with-eval-after-load 'geiser-repl + (keymap-set geiser-repl-mode-map ")" (re/send-on-close-paren #'geiser-repl-maybe-send)) + (keymap-set geiser-repl-mode-map "]" (re/balance-and-eval-sexp #'geiser-repl-maybe-send))) #+END_SRC ** Forth -*** TODO Try out this mode for gforth -#+BEGIN_SRC emacs-lisp -(use-package forth-mode) -#+END_SRC +*** TODO Try out forth-mode for gforth ** ORG -*** Load in the package and set bindings +*** Set bindings, things that have to happen after loading #+BEGIN_SRC emacs-lisp -(use-package org - :config - (require 'org-mouse) - (add-to-list 'org-export-backends 'md) - :bind - (("C-c l" . org-store-link) - ("C-c a" . org-agenda) - ("C-c c" . org-capture) - :map org-mode-map - ("M-" . org-shiftmetaright) - ("M-" . org-shiftmetaleft) - ("M-S-" . org-metaright) - ("M-S-" . org-metaleft) - ("C-M-h" . org-mark-subtree) - ("C-M-u" . org-up-element) - ("C-M-d" . org-down-element) - ("C-M-b" . org-backward-heading-same-level) - ("C-M-f" . org-forward-heading-same-level) - ("C-M-p" . org-previous-visible-heading) - ("C-M-n" . org-next-visible-heading))) - -(use-package org-transclusion - :after - org - :bind - (("C-c t" . org-transclusion-mode))) +(with-eval-after-load 'org + (require 'org-mouse) + (add-to-list 'org-export-backends 'md) + (keymap-set org-mode-map "C-M-h" #'org-mark-subtree) + (keymap-set org-mode-map "C-M-u" #'org-up-element) + (keymap-set org-mode-map "C-M-d" #'org-down-element) + (keymap-set org-mode-map "C-M-b" #'org-backward-heading-same-level) + (keymap-set org-mode-map "C-M-f" #'org-forward-heading-same-level) + (keymap-set org-mode-map "C-M-p" #'org-previous-visible-heading) + (keymap-set org-mode-map "C-M-n" #'org-next-visible-heading) + (keymap-set org-mode-map "C-c t" #'org-transclusion-mode)) + +(keymap-global-set "C-c l" #'org-store-link) +(keymap-global-set "C-c a" #'org-agenda) +(keymap-global-set "C-c c" #'org-capture) #+END_SRC -*** Configuration -**** General options +*** General options #+BEGIN_SRC emacs-lisp (setq org-M-RET-may-split-line nil org-cycle-inline-images-display t @@ -243,7 +224,7 @@ Sly really doesn't play well with elodc in the minibuffer, so here are some sett org-yank-adjusted-subtrees t org-startup-indented t) #+END_SRC -**** Time Clocking +*** Time Clocking #+BEGIN_SRC emacs-lisp (org-clock-persistence-insinuate) (setq org-clock-in-resume t @@ -253,8 +234,8 @@ Sly really doesn't play well with elodc in the minibuffer, so here are some sett org-clock-report-include-clocking-task t org-time-stamp-rounding-minutes '(1 1)) #+END_SRC -**** Agenda and Capture -***** Agenda settings +*** Agenda and Capture +**** Agenda settings #+BEGIN_SRC emacs-lisp (setq org-agenda-files (append '("~/org/") (file-expand-wildcards "~/projects/*/") @@ -299,7 +280,7 @@ Sly really doesn't play well with elodc in the minibuffer, so here are some sett org-log-done 'time org-log-state-notes-insert-after-drawers t) #+END_SRC -***** Custom Agendas +**** Custom Agendas #+BEGIN_SRC emacs-lisp (defvar *re/org-agenda-inbox* '(tags "CATEGORY=\"inbox\"" ((org-agenda-overriding-header "INBOX:")))) @@ -324,7 +305,7 @@ Sly really doesn't play well with elodc in the minibuffer, so here are some sett ,,*re/org-agenda-waiting* ,,*re/org-agenda-undertakings*)))) #+END_SRC -***** Capture Templates +**** Capture Templates #+BEGIN_SRC emacs-lisp (setq org-capture-templates '(("i" "Inbox" entry (file "inbox.org") @@ -351,7 +332,7 @@ Sly really doesn't play well with elodc in the minibuffer, so here are some sett "* %^{Description}\n%U\n%?" :prepend t))) #+END_SRC -**** IDs +*** IDs #+BEGIN_SRC emacs-lisp (setq org-id-link-to-org-use-id 'create-if-interactive-and-no-custom-id org-id-method 'ts @@ -370,14 +351,14 @@ Sly really doesn't play well with elodc in the minibuffer, so here are some sett (advice-add 'org-refile :after (lambda (&rest _) (re/org-save-all))) #+END_SRC -**** Archiving +*** Archiving #+BEGIN_SRC emacs-lisp (setq org-archive-location (concat "~/org/old.org_keep::datetree/") org-agenda-text-search-extra-files '(agenda-archives)) (add-to-list 'auto-mode-alist '("\\.org_keep\\'" . org-mode)) #+END_SRC -**** Converting markdown to org +*** Converting markdown to org #+BEGIN_SRC emacs-lisp (defun re/markdown-to-org-region (start end) "Convert Markdown formatted text in region (START, END) to Org. @@ -388,7 +369,7 @@ installed." start end "pandoc -f markdown -t org --wrap=preserve" t t)) #+END_SRC -**** Converting org to markdown +*** Converting org to markdown #+BEGIN_SRC emacs-lisp (defun re/org-to-markdown-region (start end) "Convert Org formatted text in region (START, END) to Markdown. @@ -402,19 +383,18 @@ installed." ** Trashed Shows the trash file as a dired buffer #+BEGIN_SRC emacs-lisp -(use-package trashed - :config - (setq trashed-action-confirmer 'y-or-n-p +(setq trashed-action-confirmer 'y-or-n-p trashed-use-header-line t trashed-sort-key '("Date deleted" . t) - trashed-date-format "%Y-%m-%d %H:%M:%S")) + trashed-date-format "%Y-%m-%d %H:%M:%S") #+END_SRC ** Use mu4e on my home pcs #+BEGIN_SRC emacs-lisp (unless (equal system-type 'windows-nt) - (use-package mu4e - :ensure nil - :config + (unless (package-installed-p 'mu4e) + (package-refresh-contents) + (package-install 'mu4e)) + (with-eval-after-load 'mu4e (setq mail-user-agent 'message-user-agent message-send-mail-function 'smtpmail-send-it message-citation-line-format "Quoth %f :\n" @@ -443,7 +423,6 @@ Shows the trash file as a dired buffer (:maildir "/Sent" :key ?s) (:maildir "/Trash" :key ?t) (:maildir "/Drafts" :key ?d))))) - #+END_SRC * Load libraries Libraries Not from the package manager @@ -559,7 +538,6 @@ I want *TABS*, not spaces, dammit. Globally overwrite the tab key to insert the #+END_SRC * Buffer dealiŋ #+BEGIN_SRC emacs-lisp -;; Buffer dealiŋ (setq-default indicate-empty-lines t truncate-lines t fill-column 78) @@ -871,41 +849,18 @@ Stolen from https://www.masteringemacs.org/article/fixing-mark-commands-transien (add-hook 'dired-mode-hook (lambda () - (progn - (keymap-set dired-mode-map - "o" - #'re/dired-display-direction) - ;; Rename r,R+M(mv), chmod M>c, compress-to c>z - (keymap-set dired-mode-map - "z" - #'dired-do-compress-to) - (keymap-set dired-mode-map - "c" - #'dired-do-chmod) - (keymap-set dired-mode-map - "r" - #'dired-do-rename) - (keymap-set dired-mode-map - "M" - #'dired-do-rename) - ;; My add-on defuns - (keymap-set dired-mode-map - "s" - #'re/dired-sort) - (keymap-set dired-mode-map - "F" - #'re/dired-find-marked-files) - (keymap-set dired-mode-map - "M-C" - #'re/copy-with-mod-time) - (keymap-set dired-mode-map - "b" - #'re/dired-open-externally) - (keymap-set dired-mode-map - "B" - #'re/dired-open-marked-externally) - (dired-hide-details-mode t) - (hl-line-mode)))) + (keymap-set dired-mode-map "o" #'re/dired-display-direction) + (keymap-set dired-mode-map "z" #'dired-do-compress-to) + (keymap-set dired-mode-map "c" #'dired-do-chmod) + (keymap-set dired-mode-map "r" #'dired-do-rename) + (keymap-set dired-mode-map "M" #'dired-do-rename) + (keymap-set dired-mode-map "s" #'re/dired-sort) + (keymap-set dired-mode-map "F" #'re/dired-find-marked-files) + (keymap-set dired-mode-map "M-C" #'re/copy-with-mod-time) + (keymap-set dired-mode-map "b" #'re/dired-open-externally) + (keymap-set dired-mode-map "B" #'re/dired-open-marked-externally) + (dired-hide-details-mode t) + (hl-line-mode))) #+END_SRC * Bookmarks #+BEGIN_SRC emacs-lisp @@ -1443,8 +1398,7 @@ Stolen from https://depp.brause.cc/dotemacs" (setq save-abbrevs 'silently) -(dolist (hook '(org-mode-hook howm-mode-hook)) - (add-hook hook #'abbrev-mode)) +(add-hook 'org-mode-hook #'abbrev-mode) #+END_SRC * Customization Framework Disable it by making it save to a temp file (stolen from prot)