diff options
| author | Craig Jennings <c@cjennings.net> | 2025-11-16 22:10:58 -0600 |
|---|---|---|
| committer | Craig Jennings <c@cjennings.net> | 2025-11-16 22:10:58 -0600 |
| commit | eb261131bd8652ee8565526f68bd922e7b60c70f (patch) | |
| tree | c0cf3a99669300f9272f8305e14e65d84b8cd402 /modules | |
| parent | 94b4241d6cd4e38cab9581a30fffa23b616aa469 (diff) | |
refactor: Use cj/log-silently for debug messages
Converted debug/informational messages to use cj/log-silently instead of
message across multiple modules. These are automatic initialization or
background task messages that don't need minibuffer display but should
still be logged to *Messages* buffer.
Changes:
- org-agenda-config.el: Cache build/hit messages (4 messages)
- org-refile-config.el: Cache build/hit + mode switching (5 messages)
- org-export-config.el: reveal.js download message (1 message)
- auth-config.el: oauth2-auto cache fix message (1 message)
- quick-video-capture.el: initialization message (1 message)
All modules now require system-lib for cj/log-silently function.
Keeps UI clean while maintaining debuggability.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Diffstat (limited to 'modules')
| -rw-r--r-- | modules/auth-config.el | 3 | ||||
| -rw-r--r-- | modules/org-agenda-config.el | 27 | ||||
| -rw-r--r-- | modules/org-export-config.el | 4 | ||||
| -rw-r--r-- | modules/org-refile-config.el | 51 | ||||
| -rw-r--r-- | modules/quick-video-capture.el | 4 |
5 files changed, 65 insertions, 24 deletions
diff --git a/modules/auth-config.el b/modules/auth-config.el index 52032c2a..83a7e2d0 100644 --- a/modules/auth-config.el +++ b/modules/auth-config.el @@ -23,6 +23,7 @@ ;;; Code: +(require 'system-lib) (eval-when-compile (require 'user-constants)) ;; defines authinfo-file location ;; -------------------------------- Auth Sources ------------------------------- @@ -95,7 +96,7 @@ This function re-implements the intended behavior with cache enabled." ;; Apply the fix via advice (survives package updates) (with-eval-after-load 'oauth2-auto (advice-add 'oauth2-auto--plstore-read :override #'cj/oauth2-auto--plstore-read-fixed) - (message "✓ oauth2-auto cache fix applied via advice")) + (cj/log-silently "✓ oauth2-auto cache fix applied via advice")) ;; ------------------------ Authentication Reset Utility ----------------------- diff --git a/modules/org-agenda-config.el b/modules/org-agenda-config.el index e0b5ebf8..de8a89c8 100644 --- a/modules/org-agenda-config.el +++ b/modules/org-agenda-config.el @@ -39,6 +39,7 @@ ;;; Code: (require 'user-constants) +(require 'system-lib) ;; Load debug functions if enabled (when (or (eq cj/debug-modules t) @@ -129,12 +130,12 @@ improves performance from several seconds to instant." ;; Use cached file list (instant) (progn (setq org-agenda-files cj/org-agenda-files-cache) - (when (called-interactively-p 'interactive) - (message "Using cached agenda files (%d files)" - (length org-agenda-files)))) + ;; Always show cache-hit message (interactive or background) + (cj/log-silently "Using cached agenda files (%d files)" + (length org-agenda-files))) ;; Check if async build is in progress (when cj/org-agenda-files-building - (message "Waiting for background agenda build to complete...")) + (cj/log-silently "Waiting for background agenda build to complete...")) ;; Rebuild from scratch (slow - scans projects directory) (unwind-protect (progn @@ -150,10 +151,10 @@ improves performance from several seconds to instant." (setq cj/org-agenda-files-cache org-agenda-files) (setq cj/org-agenda-files-cache-time (float-time)) - (when (called-interactively-p 'interactive) - (message "Built agenda files: %d files in %.3f sec" - (length org-agenda-files) - (float-time-since start-time))))) + ;; Always show completion message (interactive or background) + (cj/log-silently "Built agenda files: %d files in %.3f sec" + (length org-agenda-files) + (- (float-time) (float-time start-time))))) ;; Always clear the building flag, even if build fails (setq cj/org-agenda-files-building nil))))) @@ -162,7 +163,7 @@ improves performance from several seconds to instant." 10 ; Wait 10 seconds after Emacs is idle nil ; Don't repeat (lambda () - (message "Building org-agenda files cache in background...") + (cj/log-silently "Building org-agenda files cache in background...") (cj/build-org-agenda-list))) (defun cj/org-agenda-refresh-files () @@ -332,13 +333,17 @@ This allows a line to show in an agenda without being scheduled or a deadline." :ensure nil ;; using local version :load-path "~/code/chime.el" :init + ;; Initialize org-agenda-files with base files before chime loads + ;; The full list will be built asynchronously later + (setq org-agenda-files (list inbox-file schedule-file gcal-file)) + ;; Debug mode (keep set to nil, but available for troubleshooting) (setq chime-debug nil) :bind ("C-c A" . chime-check) :config - ;; Polling interval: check every 30 seconds - (setq chime-check-interval 30) + ;; Polling interval: check every minute + (setq chime-check-interval 60) ;; Alert intervals: 5 minutes before and at event time ;; All notifications use medium urgency diff --git a/modules/org-export-config.el b/modules/org-export-config.el index 43329cc3..612b80cb 100644 --- a/modules/org-export-config.el +++ b/modules/org-export-config.el @@ -24,6 +24,8 @@ ;; ;;; Code: +(require 'system-lib) + ;; --------------------------------- Org Export -------------------------------- (use-package ox @@ -112,7 +114,7 @@ (variable . "transition=slide") (variable . "slideNumber=true")))) (unless (file-exists-p reveal-dir) - (message "Downloading reveal.js...") + (cj/log-silently "Downloading reveal.js...") (shell-command (format "git clone https://github.com/hakimel/reveal.js.git %s" reveal-dir))) (org-pandoc-export-to-revealjs))) diff --git a/modules/org-refile-config.el b/modules/org-refile-config.el index b8312877..1cf976d4 100644 --- a/modules/org-refile-config.el +++ b/modules/org-refile-config.el @@ -13,6 +13,8 @@ ;;; Code: +(require 'system-lib) + ;; ----------------------------- Org Refile Targets ---------------------------- ;; sets refile targets ;; - adds project files in org-roam to the refile targets @@ -32,6 +34,25 @@ Set to nil to invalidate cache.") "Non-nil when refile targets are being built asynchronously. Prevents duplicate builds if user refiles before async build completes.") +(defun cj/org-refile-ensure-org-mode (file) + "Ensure FILE is a .org file and its buffer is in org-mode. +Returns the buffer visiting FILE, switching it to org-mode if needed. +Signals an error if FILE doesn't have a .org extension. + +This prevents issues where: +1. Buffers get stuck in fundamental-mode (e.g., opened before org loaded) +2. Non-.org files are accidentally added to refile targets" + (unless (string-match-p "\\.org\\'" file) + (error "Refile target \"%s\" is not a .org file" file)) + + (let ((buf (org-get-agenda-file-buffer file))) + (with-current-buffer buf + (unless (derived-mode-p 'org-mode) + (cj/log-silently "Switching %s to org-mode (was in %s)" + (buffer-name) major-mode) + (org-mode))) + buf)) + (defun cj/build-org-refile-targets (&optional force-rebuild) "Build =org-refile-targets= with caching. @@ -51,12 +72,12 @@ so caching improves performance from 15-20 seconds to instant." ;; Use cached targets (instant) (progn (setq org-refile-targets cj/org-refile-targets-cache) - (when (called-interactively-p 'interactive) - (message "Using cached refile targets (%d files)" - (length org-refile-targets)))) + ;; Always show cache-hit message (interactive or background) + (cj/log-silently "Using cached refile targets (%d files)" + (length org-refile-targets))) ;; Check if async build is in progress (when cj/org-refile-targets-building - (message "Waiting for background cache build to complete...")) + (cj/log-silently "Waiting for background cache build to complete...")) ;; Rebuild from scratch (slow - scans 34,000+ files) (unwind-protect (progn @@ -94,10 +115,10 @@ so caching improves performance from 15-20 seconds to instant." (setq cj/org-refile-targets-cache new-files) (setq cj/org-refile-targets-cache-time (float-time)) - (when (called-interactively-p 'interactive) - (message "Built refile targets: %d files in %.2f seconds" - (length org-refile-targets) - (float-time-since start-time))))) + ;; Always show completion message (interactive or background) + (cj/log-silently "Built refile targets: %d files in %.2f seconds" + (length org-refile-targets) + (- (float-time) (float-time start-time))))) ;; Always clear the building flag, even if build fails (setq cj/org-refile-targets-building nil))))) @@ -106,7 +127,7 @@ so caching improves performance from 15-20 seconds to instant." 5 ; Wait 5 seconds after Emacs is idle nil ; Don't repeat (lambda () - (message "Building org-refile targets cache in background...") + (cj/log-silently "Building org-refile targets cache in background...") (cj/build-org-refile-targets))) (defun cj/org-refile-refresh-targets () @@ -156,7 +177,17 @@ ARG DEFAULT-BUFFER RFLOC and MSG parameters passed to org-refile." ;; save all open org buffers after a refile is complete (advice-add 'org-refile :after (lambda (&rest _) - (org-save-all-org-buffers)))) + (org-save-all-org-buffers))) + + ;; Ensure refile target buffers are in org-mode before processing + ;; Fixes issue where buffers opened before org loaded get stuck in fundamental-mode + (advice-add 'org-refile-get-targets :before + (lambda (&rest _) + "Ensure all refile target buffers are in org-mode." + (dolist (target org-refile-targets) + (let ((file (car target))) + (when (stringp file) + (cj/org-refile-ensure-org-mode file))))))) (provide 'org-refile-config) ;;; org-refile-config.el ends here. diff --git a/modules/quick-video-capture.el b/modules/quick-video-capture.el index 100cf04a..4e62309e 100644 --- a/modules/quick-video-capture.el +++ b/modules/quick-video-capture.el @@ -20,6 +20,8 @@ ;;; Code: +(require 'system-lib) + ;; Declare external functions to avoid warnings (declare-function org-capture "org-capture" (&optional goto keys)) (declare-function org-protocol-check-filename-for-protocol "org-protocol" (fname restoffiles client)) @@ -99,7 +101,7 @@ It's designed to be idempotent - safe to call multiple times." :jump-to-captured nil))) (setq cj/video-download-initialized t) - (message "Video download functionality initialized"))) + (cj/log-silently "Video download functionality initialized"))) (defun cj/video-download-bookmarklet-instructions () "Display instructions for setting up the browser bookmarklet." |
