| git.druid.rocks | index | druid520 | radium | init.el |
init.el
;;; init.el, entry point: cp -r this dir to ~/.emacs.d and start emacs -*- lexical-binding: t; -*-
;;
;; every module here is self-contained and ends in (provide 'radium-x),
;; so this file only has to put itself on load-path and require them
;; in the one order that actually matters: bootstrap (package.el +
;; use-package) before anything that uses use-package, and defaults
;; (radium-header-guard-name) before autoinsert/macros, which call it.
;; everything past that is order-independent.
;;
;; each require is wrapped so one module's failure (e.g. no network
;; route to melpa for a use-package'd mode) reports itself and moves
;; on, instead of aborting every module still queued behind it - see
;; *messages* for anything that didn't load.
(add-to-list 'load-path user-emacs-directory)
(defun radium-require (feature)
(condition-case err
(require feature)
(error (message "err: %s failed to load: %s" feature (error-message-string err)))))
(radium-require 'radium-bootstrap)
(radium-require 'radium-defaults)
(dolist (feature '(radium-autoinsert
radium-binary
radium-build
radium-checkonsave
radium-completion
radium-conf
radium-editing
radium-git
radium-gptel
radium-ipc
radium-keys
radium-lang-ada
radium-lang-asm
radium-lang-btf
radium-lang-c
radium-lang-cron
radium-lang-elisp
radium-lang-forth
radium-lang-kona
radium-lang-latex
radium-lang-lisp
radium-lang-nsc
radium-lang-perl
radium-lang-python
radium-lang-scheme
radium-lang-sh
radium-macros
radium-man
radium-nav
radium-org
radium-project
radium-proto
radium-qemu
radium-sc
radium-shell
radium-stub
radium-tags
radium-vc-dired
radium-yasnippet
radium-sign
radium-server))
(radium-require feature))
;; ~/.radium.el: my own local config, not tracked in this repo at all
;; (a real personal machine's own settings - an api key path, a font
;; size, a package i want on this box and nowhere else - don't belong
;; in git). loaded dead last, after every radium-* module and its own
;; hooks are already in place, so it can freely override anything
;; above (a keybinding, a face, a hook) rather than racing module load
;; order to win. same one-bad-thing-doesn't-abort-everything shape as
;; radium-require above: a typo in here reports itself rather than
;; crashing the daemon - every module above has already finished
;; loading regardless, this only risks the rest of ~/.radium.el itself.
(let ((f (expand-file-name ".radium.el" "~")))
(when (file-exists-p f)
(condition-case err
(load f)
(error (message "err: ~/.radium.el failed to load: %s" (error-message-string err))))))