diff options
| author | Craig Jennings <c@cjennings.net> | 2026-05-25 17:51:17 -0500 |
|---|---|---|
| committer | Craig Jennings <c@cjennings.net> | 2026-05-25 17:51:17 -0500 |
| commit | d665582d6fc19c15a772c6ec24ff822e7e3c37f9 (patch) | |
| tree | 40c44ed42cd4e4805de626221eae88a05ea484d1 /modules/org-reveal-config.el | |
| parent | c414a6346f970f0ac49f92222471efeaf7e922d0 (diff) | |
| download | dotemacs-d665582d6fc19c15a772c6ec24ff822e7e3c37f9.tar.gz dotemacs-d665582d6fc19c15a772c6ec24ff822e7e3c37f9.zip | |
fix(org): guard external-tool assumptions in export and publishing commands
Four export/publishing commands shelled out to external tools without checking they exist, so a missing tool surfaced as an opaque process error — or, for reveal.js, a silently broken presentation. I added a command-time guard to each that names the tool and what's needed:
- zathura, in the pandoc PDF export-and-open command
- the hugo binary and the platform file-manager opener, in hugo-config
- the local reveal.js checkout (run scripts/setup-reveal.sh), shared by the reveal export and preview commands
- pandoc, in the web-clip protocol handler
The checks run only when the command runs, so startup stays quiet. Each guard has a test asserting the user-error fires when the tool is absent, and the existing happy-path tests now stub the lookups so they exercise the real path rather than tripping the new guard.
Diffstat (limited to 'modules/org-reveal-config.el')
| -rw-r--r-- | modules/org-reveal-config.el | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/modules/org-reveal-config.el b/modules/org-reveal-config.el index bc002276..be702bf7 100644 --- a/modules/org-reveal-config.el +++ b/modules/org-reveal-config.el @@ -129,6 +129,15 @@ Returns the number of lines removed." (delete-char 1))) removed)) +(defun cj/--reveal-ensure-root () + "Signal a `user-error' when the local reveal.js checkout is missing. +Export needs the clone at `cj/reveal-root', installed by +scripts/setup-reveal.sh. Without it the exporter produces a broken +presentation, so fail early with an actionable message." + (unless (file-directory-p cj/reveal-root) + (user-error "Local reveal.js not found at %s — run scripts/setup-reveal.sh" + cj/reveal-root))) + (defun cj/--reveal-preview-export-on-save () "Export current org buffer to reveal.js HTML silently. Intended for use as a buffer-local `after-save-hook'." @@ -152,6 +161,7 @@ Intended for use as a buffer-local `after-save-hook'." (interactive) (unless (derived-mode-p 'org-mode) (user-error "Not in an Org buffer")) + (cj/--reveal-ensure-root) (let ((html-file (org-reveal-export-to-html))) (when html-file (browse-url-of-file html-file) @@ -164,6 +174,7 @@ re-export silently; refresh the browser to see changes." (interactive) (unless (derived-mode-p 'org-mode) (user-error "Not in an Org buffer")) + (cj/--reveal-ensure-root) (add-hook 'after-save-hook #'cj/--reveal-preview-export-on-save nil t) (let ((html-file (org-reveal-export-to-html))) (when html-file |
