dotfiles

Personal dotfiles.
git clone git://vcs.sapka.me/dotfiles
Log | Files | Refs | Submodules

commit 7df89d3b1e7de8ea3a6aaa4c551d45d6dd491c23
parent 9821562b9925d3c73346cf003a97a94838d6054d
Author: MichaƂ M. Sapka <michal@sapka.me>
Date:   Tue, 13 Jun 2023 11:57:34 +0200

feat: Migrate to Elpaca

Diffstat:
Memacs/.emacs.d/config.org | 142+++++++++++++++++++++++++++++++++++++++++++++----------------------------------
Aemacs/.emacs.d/early-init.el | 9+++++++++
Memacs/.emacs.d/init.el | 1+
3 files changed, 91 insertions(+), 61 deletions(-)

diff --git a/emacs/.emacs.d/config.org b/emacs/.emacs.d/config.org @@ -59,40 +59,59 @@ ** Package management #+BEGIN_SRC emacs-lisp - (require 'package) + (defvar elpaca-installer-version 0.4) + (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 + :files (:defaults (:exclude "extensions")) + :build (:not elpaca--activate-package))) + (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 (call-process "git" nil buffer t "clone" + (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))) + (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) + (load "./elpaca-autoloads"))) + (add-hook 'after-init-hook #'elpaca-process-queues) + (elpaca `(,@elpaca-order)) + + - (setq package-archives '(("melpa" . "https://melpa.org/packages/") - ("org" . "https://orgmode.org/elpa/") - ("elpa" . "https://elpa.gnu.org/packages/"))) - (package-initialize) - (unless package-archive-contents (package-refresh-contents)) - - ;; Initialize use-package on non-Linux platforms - (unless (package-installed-p 'use-package) - (package-install 'use-package)) - - (require 'use-package) #+end_src - #+RESULTS: - : use-package - -Auto-update packages. #+begin_src emacs-lisp - (use-package auto-package-update - :ensure t - :custom - (auto-package-update-interval 7) - (auto-package-update-prompt-before-update t) - (auto-package-update-hide-results t) - :config - (auto-package-update-maybe) - (auto-package-update-at-time "09:00")) -#+END_SRC + (elpaca elpaca-use-package + ;; Enable :elpaca use-package keyword. + (elpaca-use-package-mode) + ;; Assume :elpaca t unless otherwise specified. + (setq elpaca-use-package-by-default t)) +#+end_src -#+RESULTS: -: t +#+begin_src emacs-lisp + (elpaca-wait) +#+end_src ** Encoding @@ -193,7 +212,7 @@ so we'll see. #+begin_src emacs-lisp (use-package marginalia - :ensure t + :elpaca t ;; Bind `marginalia-cycle' locally in the minibuffer. To make the binding ;; available in the *Completions* buffer, add it to the ;; `completion-list-mode-map'. @@ -207,7 +226,7 @@ so we'll see. #+begin_src emacs-lisp (use-package savehist - :ensure t + :elpaca nil :init (savehist-mode)) #+end_src @@ -228,12 +247,12 @@ I don't get Tree Sitter but it makes syntax coloring more accurate. #+BEGIN_SRC emacs-lisp (use-package tree-sitter - :ensure t + :elpaca t :config (global-tree-sitter-mode)) (use-package tree-sitter-langs - :ensure t + :elpaca t :after tree-sitter) #+END_SRC @@ -250,7 +269,7 @@ Essential package. An automatic cheat sheet for keyboard bindings. (which-key-setup-side-window-bottom) (set-face-attribute 'which-key-local-map-description-face nil :weight 'bold) - :ensure t) + :elpaca t) #+END_SRC ** Tramp @@ -293,7 +312,7 @@ They say it's the best UI for Git. I can't disagree. *** Magit #+BEGIN_SRC emacs-lisp (use-package magit - :ensure t + :elpaca t :bind ("C-x g" . magit-status) :config (setq magit-save-repository-buffers nil)) @@ -303,7 +322,7 @@ They say it's the best UI for Git. I can't disagree. #+begin_src emacs-lisp (use-package forge - :ensure t + :elpaca t :after magit) #+end_src @@ -313,7 +332,7 @@ Show changed lines in the gutter #+BEGIN_SRC emacs-lisp (use-package git-gutter - :ensure t + :elpaca t :hook (prog-mode . git-gutter-mode) :config (setq git-gutter:update-interval 0.02)) @@ -322,24 +341,25 @@ Show changed lines in the gutter *** Diff #+begin_src emacs-lisp -(use-package ediff - :config - (setq ediff-split-window-function 'split-window-horizontally) - (setq ediff-window-setup-function 'ediff-setup-windows-plain) - (defun my/command-line-diff (switch) - (setq initial-buffer-choice nil) - (let ((file1 (pop command-line-args-left)) - (file2 (pop command-line-args-left))) - (ediff file1 file2))) - ;; show the ediff command buffer in the same frame - (add-to-list 'command-switch-alist '("-diff" . my/command-line-diff))) + (use-package ediff + :elpaca nil + :config + (setq ediff-split-window-function 'split-window-horizontally) + (setq ediff-window-setup-function 'ediff-setup-windows-plain) + (defun my/command-line-diff (switch) + (setq initial-buffer-choice nil) + (let ((file1 (pop command-line-args-left)) + (file2 (pop command-line-args-left))) + (ediff file1 file2))) + ;; show the ediff command buffer in the same frame + (add-to-list 'command-switch-alist '("-diff" . my/command-line-diff))) #+end_src ** Flycheck #+BEGIN_SRC emacs-lisp (use-package flycheck - :ensure t + :elpaca t :init (global-flycheck-mode)) (setq flycheck-command-wrapper-function @@ -372,7 +392,7 @@ Yeah, force indentation :config (global-aggressive-indent-mode 1) (add-to-list 'aggressive-indent-excluded-modes 'org-mode) - :ensure t) + :elpaca t) #+END_SRC ** Ripgrep @@ -381,7 +401,7 @@ A much faster Grep #+BEGIN_SRC emacs-lisp (use-package rg - :ensure t + :elpaca t :config (rg-enable-default-bindings)) #+END_SRC @@ -390,7 +410,7 @@ A much faster Grep #+BEGIN_SRC emacs-lisp (use-package lsp-mode - :ensure t + :elpaca t :init ;; set prefix for lsp-command-keymap (few alternatives - "C-l", "C-c l") (setq lsp-keymap-prefix "C-c l") @@ -400,7 +420,7 @@ A much faster Grep (lsp-enable-which-key-integration t)) (use-package lsp-ltex - :ensure t + :elpaca t :hook (text-mode . (lambda () (require 'lsp-ltex) (lsp))) ; or lsp-deferred @@ -409,7 +429,7 @@ A much faster Grep ;; optionally (use-package lsp-ui - :ensure t + :elpaca t :commands lsp-ui-mode) #+END_SRC @@ -423,7 +443,7 @@ A much faster Grep #+BEGIN_SRC emacs-lisp (use-package notmuch - :ensure t + :elpaca t :commands notmuch-hello :bind (("C-c m" . notmuch-hello))) #+END_SRC @@ -434,7 +454,7 @@ You can find me at https://emacs.ch/@ms #+BEGIN_SRC emacs-lisp (use-package mastodon - :ensure t + :elpaca t :config (setq mastodon-instance-url "https://emacs.ch/" mastodon-active-user "ms")) @@ -446,7 +466,7 @@ You can find me at https://emacs.ch/@ms #+BEGIN_SRC emacs-lisp (use-package elfeed - :ensure t + :elpaca t :config (defface important-elfeed-entry '((t :foreground "#f77")) @@ -472,7 +492,7 @@ REF: https://michal.sapka.me/2023/elfeed-literate-config/ #+BEGIN_SRC emacs-lisp (use-package elfeed-org - :ensure t + :elpaca t :config (setq rmh-elfeed-org-files (list "~/.emacs.d/config.org")) (elfeed-org)) @@ -559,7 +579,7 @@ Epub in Emacs? Why not! #+BEGIN_SRC emacs-lisp (use-package nov - :ensure t + :elpaca t :config (add-to-list 'auto-mode-alist '("\\.epub\\'" . nov-mode))) #+END_SRC @@ -569,7 +589,7 @@ Epub in Emacs? Why not! ** Org-mode #+BEGIN_SRC emacs-lisp (use-package org - :ensure t + :elpaca t :init (setq org-directory (expand-file-name "~/org")) (unless (file-exists-p org-directory) @@ -583,7 +603,7 @@ A cool package which adds table of contents. Ref: [[https://github.com/snosov1/t #+BEGIN_SRC emacs-lisp (use-package toc-org - :ensure t + :elpaca t :config (add-hook 'org-mode-hook 'toc-org-mode) ) @@ -623,7 +643,7 @@ I'd love to keep bibligraphy in a managable way. Grown ups seem to agree that bi #+begin_src emacs-lisp (use-package ebib - :ensure t) + :elpaca t) #+end_src #+RESULTS: diff --git a/emacs/.emacs.d/early-init.el b/emacs/.emacs.d/early-init.el @@ -0,0 +1,9 @@ +;; Example Elpaca early-init.el -*- lexical-binding: t; -*- + +(setq package-enable-at-startup nil) + +;; Local Variables: +;; no-byte-compile: t +;; no-native-compile: t +;; no-update-autoloads: t +;; End: diff --git a/emacs/.emacs.d/init.el b/emacs/.emacs.d/init.el @@ -1 +1,2 @@ (org-babel-load-file "~/.emacs.d/config.org") +