From 918f8a6ed5f74f49b9b80a4521f8667e9d818a81 Mon Sep 17 00:00:00 2001 From: js0ny Date: Fri, 14 Mar 2025 16:06:52 +0000 Subject: [PATCH] feat(emacs): Change vanilla emacs to straight.el --- tools/emacs.d/early-init.el | 1 + tools/emacs.d/init.el | 12 +++++++ tools/emacs.d/lisp/init-basic.el | 10 ------ tools/emacs.d/lisp/init-org.el | 6 ++-- tools/emacs.d/lisp/init-package.el | 58 ++++++++++++------------------ 5 files changed, 38 insertions(+), 49 deletions(-) create mode 100644 tools/emacs.d/early-init.el diff --git a/tools/emacs.d/early-init.el b/tools/emacs.d/early-init.el new file mode 100644 index 0000000..512068a --- /dev/null +++ b/tools/emacs.d/early-init.el @@ -0,0 +1 @@ +(setq package-enable-at-startup nil) diff --git a/tools/emacs.d/init.el b/tools/emacs.d/init.el index 636e55c..30284e8 100644 --- a/tools/emacs.d/init.el +++ b/tools/emacs.d/init.el @@ -16,6 +16,18 @@ ;; Store the auto-generated custom config to `custom.el` (setq custom-file (expand-file-name ".custom.el" user-emacs-directory)) + +(defvar xdg-data-home + (or (getenv "XDG_DATA_HOME") + (expand-file-name "~/.local/share"))) + +(defvar xdg-cache-home + (or (getenv "XDG_CACHE_HOME") + (expand-file-name "~/.local/cache"))) + +(defvar user-emacs-data (expand-file-name "emacs" xdg-data-home)) +(defvar user-emacs-cache (expand-file-name "emacs" xdg-cache-home)) + ;; Load each modules (require 'init-package) ; package manager should be loaded first (require 'init-basic) diff --git a/tools/emacs.d/lisp/init-basic.el b/tools/emacs.d/lisp/init-basic.el index 4ad405e..ba09d49 100644 --- a/tools/emacs.d/lisp/init-basic.el +++ b/tools/emacs.d/lisp/init-basic.el @@ -14,16 +14,6 @@ :hook (prog-mode . display-line-numbers-mode)) -(defvar xdg-data-home - (or (getenv "XDG_DATA_HOME") - (expand-file-name "~/.local/share"))) - -(defvar xdg-cache-home - (or (getenv "XDG_CACHE_HOME") - (expand-file-name "~/.local/cache"))) - -(defvar user-emacs-data (expand-file-name "emacs" xdg-data-home)) -(defvar user-emacs-cache (expand-file-name "emacs" xdg-cache-home)) ;; https://book.emacs-china.org/#orgcfd105e Open with Emacs diff --git a/tools/emacs.d/lisp/init-org.el b/tools/emacs.d/lisp/init-org.el index 0f332d1..66c8165 100644 --- a/tools/emacs.d/lisp/init-org.el +++ b/tools/emacs.d/lisp/init-org.el @@ -6,7 +6,7 @@ ;; Org General (use-package org - :ensure nil ;; Use Emacs built-in Org Mode + :straight (:type built-in) ;; Tell straight to not install org :config (setq org-log-done 'time) (setq org-startup-indented nil) @@ -161,11 +161,11 @@ ;; Run source block with C-c C-c ;; Add supports for non-elisp langs (use-package ob-python - :ensure nil ; Part of Org Mode + :straight (:type built-in) ; Part of Org Mode :after org) (use-package ob-C ;; C++ support is integrated in ob-C - :ensure nil ; Part of Org Mode + :straight (:type built-in) ; Part of Org Mode :after org) (org-babel-do-load-languages diff --git a/tools/emacs.d/lisp/init-package.el b/tools/emacs.d/lisp/init-package.el index 2203dd7..e072935 100644 --- a/tools/emacs.d/lisp/init-package.el +++ b/tools/emacs.d/lisp/init-package.el @@ -1,45 +1,31 @@ -;;; init-package.el +;;; init-package.el --- Package management setup using straight.el -*- lexical-binding: t -*- -;; Initialise the package sources -(require 'package) -; Add sources -;; (setq gnutls-algorithm-priority "NORMAL:-VERS-TLS1.3") -(setq package-archives '(("melpa" . "https://melpa.org/packages/") - ("org" . "https://orgmode.org/elpa/") - ("gnu" . "https://elpa.gnu.org/packages/"))) -;; Initialise the package management system -(package-initialize) +(setq straight-base-dir (expand-file-name "straight" user-emacs-data)) -;; Ensure the package list is up-to-date -(unless package-archive-contents - (package-refresh-contents)) +;; Bootstrap straight.el +(defvar bootstrap-version) +(let ((bootstrap-file + (expand-file-name + "straight/repos/straight.el/bootstrap.el" + (or (bound-and-true-p straight-base-dir) + user-emacs-directory))) + (bootstrap-version 7)) + (unless (file-exists-p bootstrap-file) + (with-current-buffer + (url-retrieve-synchronously + "https://raw.githubusercontent.com/radian-software/straight.el/develop/install.el" + 'silent 'inhibit-cookies) + (goto-char (point-max)) + (eval-print-last-sexp))) + (load bootstrap-file nil 'nomessage)) -;; Ensure use-package is installed -(unless (package-installed-p 'use-package) -; (package-refresh-contents) Move to above - (package-install 'use-package)) - -;; Use `use-package` for plugin management -(eval-when-compile - (require 'use-package)) -(setq use-package-always-ensure t) - -;; use-package offers many syntax sugar. -;; :bind -> bindkeys -;; :config -> `(progn do sth) -;; :init -> (progn do sth) -;; :after -> (when (featurep 'package)do sth) -;; :hook -> (add-hook 'some-hook #'some-mode) - -;; This part initialse the GPG Keyring -; Disable signature first -(setq package-check-signature nil) +;; Use straight.el with use-package +(straight-use-package 'use-package) +(setq straight-use-package-by-default t) ;; Automatically use straight for all packages +;; Ensure gnu-elpa-keyring-update (equivalent to your previous keyring update logic) (use-package gnu-elpa-keyring-update) -; Re-enable signature -(setq package-check-signature 'allow-unsigned) - ;; Which Key - Prompt available commands (use-package which-key