aboutsummaryrefslogtreecommitdiff
path: root/modules/org-refile-config.el
diff options
context:
space:
mode:
authorCraig Jennings <c@cjennings.net>2026-05-15 02:13:37 -0500
committerCraig Jennings <c@cjennings.net>2026-05-15 02:13:37 -0500
commitc3420106b57b999db6526c62c1ce0e33c28ef121 (patch)
treedd5886f3f690680a7b7fd4420181f875abb283c0 /modules/org-refile-config.el
parent4d8f979948d5349404a36fe335eb77955d068a8d (diff)
downloaddotemacs-c3420106b57b999db6526c62c1ce0e33c28ef121.tar.gz
dotemacs-c3420106b57b999db6526c62c1ce0e33c28ef121.zip
test(architecture): guard top-level timers + add startup-contract smoke test
Add a tiny source-level architecture suite at tests/test-architecture-startup-contracts.el with two checks: - Only keybindings.el may globally own the exact C-; prefix. Catches accidental cross-module rebinding before it ships. - Top-level timer scheduling (run-with-timer / run-at-time / run-with-idle-timer) must be guarded by (unless noninteractive ...) so requiring a module in batch / test mode does not schedule startup timers. Timer calls inside defuns are exempt -- the test only rejects forms that execute their body when the module loads. Four modules had unguarded top-level timer scheduling and would have tripped the new test. Wrap their startup hooks/timers in (unless noninteractive ...): - modules/org-agenda-config.el: 10s idle cache build - modules/org-refile-config.el: 5s idle cache build - modules/quick-video-capture.el: after-init-hook + 2s fallback - modules/wrap-up.el: emacs-startup-hook bury-buffers delay The contract being protected is "requiring a module in batch should not start a clock running." Test failures will now point straight at the offending file/form.
Diffstat (limited to 'modules/org-refile-config.el')
-rw-r--r--modules/org-refile-config.el15
1 files changed, 8 insertions, 7 deletions
diff --git a/modules/org-refile-config.el b/modules/org-refile-config.el
index 63343e9f..16b37bf9 100644
--- a/modules/org-refile-config.el
+++ b/modules/org-refile-config.el
@@ -101,13 +101,14 @@ so caching improves performance from 15-20 seconds to instant."
(- (float-time) (float-time start-time)))))))
(setq org-refile-targets targets)))
-;; Build cache asynchronously after startup to avoid blocking Emacs
-(run-with-idle-timer
- 5 ; Wait 5 seconds after Emacs is idle
- nil ; Don't repeat
- (lambda ()
- (cj/log-silently "Building org-refile targets cache in background...")
- (cj/build-org-refile-targets)))
+;; Build cache asynchronously after startup to avoid blocking Emacs.
+(unless noninteractive
+ (run-with-idle-timer
+ 5 ; Wait 5 seconds after Emacs is idle
+ nil ; Don't repeat
+ (lambda ()
+ (cj/log-silently "Building org-refile targets cache in background...")
+ (cj/build-org-refile-targets))))
(defun cj/org-refile-refresh-targets ()
"Force rebuild of refile targets cache.