diff options
Diffstat (limited to 'modules')
| -rw-r--r-- | modules/mail-config.el | 19 | ||||
| -rw-r--r-- | modules/system-lib.el | 19 |
2 files changed, 24 insertions, 14 deletions
diff --git a/modules/mail-config.el b/modules/mail-config.el index f19adf80..7a41e942 100644 --- a/modules/mail-config.el +++ b/modules/mail-config.el @@ -25,6 +25,7 @@ ;;; Code: (require 'user-constants) +(require 'system-lib) ;; cj/custom-keymap's real binding is in keybindings.el, which init.el loads ;; first. The use-package org-msg :preface below wraps in eval-and-compile, so @@ -63,27 +64,17 @@ transport details in debug buffers." (interactive) (cj/set-smtpmail-debug (not smtpmail-debug-info))) -(defun cj/mail--executable-or-warn (program feature) - "Return PROGRAM's executable path, or warn that FEATURE is unavailable." - (or (executable-find program) - (progn - (display-warning - 'mail-config - (format "%s not found; %s unavailable" program feature) - :warning) - nil))) - (defun cj/mail--mbsync-command () "Return the mu4e mail sync command, or nil if mbsync is unavailable." - (when-let ((mbsync (cj/mail--executable-or-warn - "mbsync" "mu4e mail synchronization"))) + (when-let ((mbsync (cj/executable-find-or-warn + "mbsync" "mu4e mail synchronization" 'mail-config))) (concat (shell-quote-argument mbsync) " -a"))) (defun cj/mail-configure-smtpmail () "Configure SMTP mail transport when msmtp is available." (setq smtpmail-debug-info cj/smtpmail-debug-enabled) - (if-let ((msmtp (cj/mail--executable-or-warn - "msmtp" "SMTP mail sending"))) + (if-let ((msmtp (cj/executable-find-or-warn + "msmtp" "SMTP mail sending" 'mail-config))) (setq sendmail-program msmtp send-mail-function 'message-send-mail-with-sendmail message-send-mail-function 'message-send-mail-with-sendmail diff --git a/modules/system-lib.el b/modules/system-lib.el index 4c2f17ef..f932353f 100644 --- a/modules/system-lib.el +++ b/modules/system-lib.el @@ -17,6 +17,25 @@ PROGRAM should be a string naming an executable program." (not (string-empty-p program)) (executable-find program))) +(defun cj/executable-find-or-warn (program feature &optional group) + "Return PROGRAM's executable path, or warn that FEATURE is unavailable. + +When PROGRAM is in PATH, return its absolute path. When it isn't, +emit a `display-warning' naming PROGRAM and FEATURE so the user gets +a clear hint about what won't work, and return nil. + +GROUP is the symbol passed to `display-warning' for filtering and +defaults to `cj/system-lib'. Callers should pass their own module +symbol (for example `mail-config') so per-feature warning filters +keep working." + (or (executable-find program) + (progn + (display-warning + (or group 'cj/system-lib) + (format "%s not found; %s unavailable" program feature) + :warning) + nil))) + (defun cj/log-silently (format-string &rest args) "Append formatted message (FORMAT-STRING with ARGS) to *Messages* buffer. This does so without echoing in the minibuffer." |
