Split init.el into seperate modules

This commit is contained in:
Jens Luedicke
2025-09-08 12:14:12 +02:00
parent 39d5bafe42
commit e3a5872218
25 changed files with 2306 additions and 783 deletions

66
lisp/init-compile.el Normal file
View File

@@ -0,0 +1,66 @@
;;; init-compile.el --- Byte compilation utilities -*- lexical-binding: t -*-
;;; Commentary:
;;; Functions to byte-compile configuration files for faster loading
;;; Code:
(defun byte-compile-init-files ()
"Byte compile all init files in the lisp directory."
(interactive)
(let ((lisp-dir (expand-file-name "lisp" user-emacs-directory)))
(byte-recompile-directory lisp-dir 0 t)
(message "All init files byte-compiled")))
(defun byte-compile-config ()
"Byte compile the entire Emacs configuration."
(interactive)
(byte-compile-file (expand-file-name "init.el" user-emacs-directory))
(byte-compile-file (expand-file-name "early-init.el" user-emacs-directory))
(byte-compile-init-files)
(message "Configuration byte-compiled successfully"))
(defun clean-byte-compiled-files ()
"Remove all byte-compiled files from configuration."
(interactive)
(let ((lisp-dir (expand-file-name "lisp" user-emacs-directory)))
;; Remove .elc files from lisp directory
(dolist (file (directory-files lisp-dir t "\\.elc$"))
(delete-file file))
;; Remove main init.elc and early-init.elc
(let ((init-elc (expand-file-name "init.elc" user-emacs-directory))
(early-elc (expand-file-name "early-init.elc" user-emacs-directory)))
(when (file-exists-p init-elc) (delete-file init-elc))
(when (file-exists-p early-elc) (delete-file early-elc)))
(message "All byte-compiled files removed")))
;; Auto-compile on save if enabled
(defvar auto-compile-on-save nil
"If non-nil, automatically byte-compile init files when saved.")
(defun maybe-byte-compile-file ()
"Byte compile the current file if it's an init file and auto-compile is enabled."
(when (and auto-compile-on-save
(string-match-p "\\(init\\|early-init\\).*\\.el$" buffer-file-name)
(not (string-match-p "\\.elc$" buffer-file-name)))
(byte-compile-file buffer-file-name)))
(add-hook 'after-save-hook #'maybe-byte-compile-file)
;; Byte compile configuration after packages are installed
(defun byte-compile-after-package-install ()
"Byte compile configuration after new packages are installed."
(when (and (boundp 'package-alist)
(> (length package-alist) 0))
(byte-compile-config)))
;; Add startup message about byte compilation
(add-hook 'emacs-startup-hook
(lambda ()
(let ((init-elc (expand-file-name "init.elc" user-emacs-directory)))
(if (file-exists-p init-elc)
(message "Running byte-compiled configuration")
(message "Running interpreted configuration (use M-x byte-compile-config for faster startup)"))))
90)
(provide 'init-compile)
;;; init-compile.el ends here