diff options
Diffstat (limited to 'users/wpcarro/emacs')
-rw-r--r-- | users/wpcarro/emacs/ci.el | 44 | ||||
-rw-r--r-- | users/wpcarro/emacs/default.nix | 37 |
2 files changed, 67 insertions, 14 deletions
diff --git a/users/wpcarro/emacs/ci.el b/users/wpcarro/emacs/ci.el new file mode 100644 index 000000000000..da079b64ba5b --- /dev/null +++ b/users/wpcarro/emacs/ci.el @@ -0,0 +1,44 @@ +;; This script initializes Emacs and exits with either a zero or non-zero status +;; depending on whether or not Emacs initialized without logging warnings or +;; encountering errors. +;; +;; This script reads the location of init.el as the last argument in `argv'. + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; Dependencies +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(require 'prelude) +(require 'f) +(require 'dash) +(require 'buffer) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; Script +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(defvar init-el-path (-last-item argv) + "Path to the init.el file that this script attempts to load.") + +(prelude-assert (f-exists? init-el-path)) + +(condition-case err + (load init-el-path) + (error + (message "Encountered an error while attempting to load init.el: %s" err) + (kill-emacs 1))) + +(when (buffer-exists? "*Errors*") + (progn + (with-current-buffer "*Errors*" + (message "Encountered errors in *Errors* buffer: %s" (buffer-string))) + (kill-emacs 1))) + +(when (buffer-exists? "*Warnings*") + (progn + (with-current-buffer "*Warnings*" + (message "Encountered warnings in *Warnings* buffer: %s" (buffer-string))) + (kill-emacs 1))) + +(message "Successfully init'd Emacs without encountering errors or warnings!") +(kill-emacs 0) diff --git a/users/wpcarro/emacs/default.nix b/users/wpcarro/emacs/default.nix index 20ef805dba8a..b8c97ac176da 100644 --- a/users/wpcarro/emacs/default.nix +++ b/users/wpcarro/emacs/default.nix @@ -165,25 +165,34 @@ let --load ${initEl} \ "$@" ''; -in { - inherit initEl withEmacsPath; - # I need to start my Emacs from CI without the call to `--load ${initEl}`. - runScript = { script }: - writeShellScript "run-emacs-script" '' - export PATH="${emacsBinPath}:$PATH" - export EMACSLOADPATH="${wpcDir}:${vendorDir}:${wpcarrosEmacs.deps}/share/emacs/site-lisp" - exec ${wpcarrosEmacs}/bin/emacs \ - --no-site-file \ - --no-site-lisp \ - --no-init-file \ - --script ${script} \ - "$@" + # I need this to start my Emacs from CI without the call to + # `--load ${initEl}`. + runScript = script: writeShellScript "run-emacs-script" '' + export PATH="${emacsBinPath}:$PATH" + export EMACSLOADPATH="${loadPath}" + exec ${wpcarrosEmacs}/bin/emacs \ + --no-site-file \ + --no-site-lisp \ + --no-init-file \ + --script ${script} \ + "$@" ''; +in { + inherit withEmacsPath; + nixos = withEmacsPath { emacsBin = "${wpcarrosEmacs}/bin/emacs"; }; - meta.targets = [ "nixos" ]; + meta = { + targets = [ "nixos" ]; + extraSteps = [ + { + label = ":gnu: initialize Emacs"; + command = "${runScript ./ci.el} ${./.emacs.d/init.el}"; + } + ]; + }; } |