Added declarative abstraction for loading module

This commit is contained in:
Fabio Scotto di Santolo
2025-12-23 13:33:57 +01:00
parent c375986e05
commit 049c76c04a

View File

@@ -1,34 +1,59 @@
(message "Welcome to Emacs") (message "Welcome to Emacs")
(message "Loading user configuration...") (message "Loading user configuration...")
;;=====================================================================================
;; Define loader functions
;;=====================================================================================
(defconst fscotto/modules-dir
(expand-file-name "lisp" user-emacs-directory))
(defun fscotto/load-module (module)
"Load a module from symbol"
(let* ((module-name (symbol-name module))
(path (expand-file-name
(concat (replace-regexp-in-string "/" "/" module-name)
".el")
fscotto/modules-dir)))
(unless (file-exists-p path)
(error "Module not found: %s" path))
(load path nil 'nomessage)))
(defun fscotto/load-modules (&rest modules)
(mapc #'fscotto/load-module modules))
;;=====================================================================================
;; Load modules
;;=====================================================================================
(fscotto/load-modules
;; Core ;; Core
(load "~/.emacs.d/lisp/core/packages.el") 'core/packages
(load "~/.emacs.d/lisp/core/ui.el") 'core/ui
(load "~/.emacs.d/lisp/core/performance.el") 'core/performance
(load "~/.emacs.d/lisp/core/editor.el") 'core/editor
(load "~/.emacs.d/lisp/core/keybindings.el") 'core/keybindings
;; Tools ;; Tools
(load "~/.emacs.d/lisp/tools/completion.el") 'tools/completion
(load "~/.emacs.d/lisp/tools/project.el") 'tools/project
(load "~/.emacs.d/lisp/tools/lsp.el") 'tools/lsp
(load "~/.emacs.d/lisp/tools/dap.el") 'tools/dap
;; Languages ;; Languages
(load "~/.emacs.d/lisp/lang/c.el") 'lang/c
(load "~/.emacs.d/lisp/lang/golang.el") 'lang/golang
(load "~/.emacs.d/lisp/lang/shell.el") 'lang/shell
;; Misc ;; Misc
(load "~/.emacs.d/lisp/misc/custom-functions.el") 'misc/custom-functions
(load "~/.emacs.d/lisp/misc/doom-modeline.el") 'misc/doom-modeline
(load "~/.emacs.d/lisp/misc/which-key.el") 'misc/which-key
(load "~/.emacs.d/lisp/misc/email.el") 'misc/email
(load "~/.emacs.d/lisp/misc/rss.el") 'misc/rss
(load "~/.emacs.d/lisp/misc/terminal.el") 'misc/terminal
(load "~/.emacs.d/lisp/misc/vcs.el") 'misc/vcs
;; (load "~/.emacs.d/lisp/misc/pdf.el") ;; FIXME PDF viewer with annotations
(load "~/.emacs.d/lisp/misc/epub.el") ;; 'misc/pdf
(load "~/.emacs.d/lisp/misc/i3-config.el") 'misc/epub
'misc/i3-config)
(message "...user configuration loaded") (message "...user configuration loaded")