From c5ddcf876f3d100a2f9cd746031a6c7781f84c11 Mon Sep 17 00:00:00 2001 From: William Ball Date: Sat, 13 Sep 2025 09:08:52 -0400 Subject: [PATCH] lots of emacs tweaks --- emacs/.config/emacs/Emacs.org | 110 +++++++++++++++++++++++++++++----- 1 file changed, 94 insertions(+), 16 deletions(-) diff --git a/emacs/.config/emacs/Emacs.org b/emacs/.config/emacs/Emacs.org index db9fa46..f0b5114 100644 --- a/emacs/.config/emacs/Emacs.org +++ b/emacs/.config/emacs/Emacs.org @@ -30,21 +30,67 @@ auto-save-default t) #+end_src * Packages +** Elpaca +Set up variables. +#+begin_src emacs-lisp + (defvar elpaca-installer-version 0.11) + (defvar elpaca-directory (expand-file-name "elpaca/" user-emacs-directory)) + (defvar elpaca-builds-directory (expand-file-name "builds/" elpaca-directory)) + (defvar elpaca-repos-directory (expand-file-name "repos/" elpaca-directory)) + (defvar elpaca-order '(elpaca :repo "https://github.com/progfolio/elpaca.git" + :ref nil :depth 1 :inherit ignore + :files (:defaults "elpaca-test.el" (:exclude "extensions")) + :build (:not elpaca--activate-package))) +#+end_src + +Bootstrap elpaca +#+begin_src emacs-lisp + (let* ((repo (expand-file-name "elpaca/" elpaca-repos-directory)) + (build (expand-file-name "elpaca/" elpaca-builds-directory)) + (order (cdr elpaca-order)) + (default-directory repo)) + (add-to-list 'load-path (if (file-exists-p build) build repo)) + (unless (file-exists-p repo) + (make-directory repo t) + (when (<= emacs-major-version 28) (require 'subr-x)) + (condition-case-unless-debug err + (if-let* ((buffer (pop-to-buffer-same-window "*elpaca-bootstrap*")) + ((zerop (apply #'call-process `("git" nil ,buffer t "clone" + ,@(when-let* ((depth (plist-get order :depth))) + (list (format "--depth=%d" depth) "--no-single-branch")) + ,(plist-get order :repo) ,repo)))) + ((zerop (call-process "git" nil buffer t "checkout" + (or (plist-get order :ref) "--")))) + (emacs (concat invocation-directory invocation-name)) + ((zerop (call-process emacs nil buffer nil "-Q" "-L" "." "--batch" + "--eval" "(byte-recompile-directory \".\" 0 'force)"))) + ((require 'elpaca)) + ((elpaca-generate-autoloads "elpaca" repo))) + (progn (message "%s" (buffer-string)) (kill-buffer buffer)) + (error "%s" (with-current-buffer buffer (buffer-string)))) + ((error) (warn "%s" err) (delete-directory repo 'recursive)))) + (unless (require 'elpaca-autoloads nil t) + (require 'elpaca) + (elpaca-generate-autoloads "elpaca" repo) + (let ((load-source-file-function nil)) (load "./elpaca-autoloads")))) + (add-hook 'after-init-hook #'elpaca-process-queues) + (elpaca `(,@elpaca-order)) +#+end_src + +Enable =use-package= integration +#+begin_src emacs-lisp + (elpaca elpaca-use-package + (elpaca-use-package-mode)) +#+end_src ** use-package #+begin_src emacs-lisp - (require 'use-package) (setq use-package-always-ensure t) - (setq use-package-verbose t) - - (require 'package) - (add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/") t) - (package-initialize) #+end_src ** Set up path correctly #+begin_src emacs-lisp (use-package exec-path-from-shell - :config - (exec-path-from-shell-initialize)) + :config + (exec-path-from-shell-initialize)) #+end_src ** Automatic updates #+begin_src emacs-lisp @@ -103,6 +149,7 @@ *** Modus Themes #+begin_src emacs-lisp (use-package emacs + :ensure nil :config (require-theme 'modus-themes) (setq modus-themes-italic-constructs t @@ -111,18 +158,18 @@ modus-themes-prompts '(bold intense) modus-themes-mode-line '(borderless accented moody) modus-themes-org-blocks 'gray-background - modus-themes-region '(bg-only no-extend))) - ;; (load-theme 'modus-vivendi :no-confirm)) -#+end_src -*** Italic Comments -#+begin_src emacs-lisp - (advice-add #'load-theme :after (lambda (&rest _) (set-face-italic 'font-lock-comment-face t))) + modus-themes-region '(bg-only no-extend)) + (load-theme 'modus-operandi :no-confirm)) #+end_src *** Catpuccin #+begin_src emacs-lisp (use-package catppuccin-theme :init (setq catppuccin-flavor 'mocha) :hook (after-init . (lambda () (load-theme 'catppuccin :no-confirm)))) + +*** Italic Comments +#+begin_src emacs-lisp + (advice-add #'load-theme :after (lambda (&rest _) (set-face-italic 'font-lock-comment-face t))) #+end_src ** Line Numbers #+begin_src emacs-lisp @@ -133,6 +180,9 @@ (use-package doom-modeline :init (doom-modeline-mode 1)) #+end_src +#+begin_src emacs-lisp + (use-package hide-mode-line) +#+end_src ** Smooth Scroll #+begin_src emacs-lisp (use-package ultra-scroll @@ -159,6 +209,7 @@ ** Savehist #+begin_src emacs-lisp (use-package emacs + :ensure nil :init (savehist-mode)) #+end_src ** Orderless @@ -274,6 +325,7 @@ ** eglot #+begin_src emacs-lisp (use-package eglot + :ensure nil :bind (:map eglot-mode-map ("C-c l r" . eglot-rename) ("C-c l f" . eglot-format-buffer) @@ -338,6 +390,22 @@ I don't really use markdown ([[Org Mode]] is a strict improvement imo), but it's #+begin_src emacs-lisp (use-package zig-mode) #+end_src +** C +#+begin_src emacs-lisp + (use-package emacs + :ensure nil + :hook + (c-mode . electric-pair-mode) + :custom + (c-default-style '((java-mode . "java") + (awk-mode . "awk") + (other . "linux")))) +#+end_src +** Perga +#+begin_src emacs-lisp + (use-package perga-mode + :ensure (:repo "https://forgejo.ballcloud.cc/wball/perga-mode.git")) +#+end_src * Latex ** Auctex #+begin_src emacs-lisp @@ -360,7 +428,7 @@ I don't really use markdown ([[Org Mode]] is a strict improvement imo), but it's '(((output-dvi has-no-display-manager) "dvi2tty") ((output-dvi style-pstricks) "dvips and gv") (output-dvi "xdvi") - (output-pdf "Zathura") + (output-pdf "zathura") (output-html "xdg-open")))) #+end_src ** CDLatex @@ -433,6 +501,8 @@ I don't really use markdown ([[Org Mode]] is a strict improvement imo), but it's ** Org itself #+begin_src emacs-lisp (use-package org + :ensure `(org :repo "https://code.tecosaur.net/tec/org-mode.git/" + :branch "dev") :defer :init (setq org-list-allow-alphabetical t) @@ -447,9 +517,11 @@ I don't really use markdown ([[Org Mode]] is a strict improvement imo), but it's (org-agenda-files `(,org-directory)) (org-default-notes-file (mapcar (lambda (x) (concat org-directory x)) '("/todo.org" "/done.org"))) + (org-latex-preview-mode-display-live t) :config (setq org-format-latex-options (plist-put org-format-latex-options :scale 0.6)) (require 'ox-latex) + (require 'ox-beamer) (add-to-list 'org-latex-classes '("myreport" "\\documentclass[11pt]{report}" ("\\chapter{%s}" . "\\chapter*{%s}") ("\\section{%s}" . "\\section*{%s}") @@ -457,7 +529,8 @@ I don't really use markdown ([[Org Mode]] is a strict improvement imo), but it's ("\\subsubsection{%s}" . "\\subsubsection*{%s}"))) :hook (org-mode . visual-line-mode) - (org-mode . flyspell-mode)) + (org-mode . flyspell-mode) + (org-mode . org-latex-preview-mode)) #+end_src ** toki pona support #+begin_src emacs-lisp @@ -477,6 +550,10 @@ I don't really use markdown ([[Org Mode]] is a strict improvement imo), but it's :hook ((org-mode . org-modern-mode) (org-agenda-finalize . org-modern-agenda))) #+end_src +** Simple Presentations +#+begin_src emacs-lisp + (use-package org-present) +#+end_src ** Org Bloggy stuff #+begin_src emacs-lisp (setq org-publish-project-alist @@ -567,6 +644,7 @@ I don't really use markdown ([[Org Mode]] is a strict improvement imo), but it's ** Dired #+begin_src emacs-lisp (use-package emacs + :ensure nil :commands (dired dired-jump) :custom ((dired-listing-switches "-agho --group-directories-first")) :config