aboutsummaryrefslogtreecommitdiff
path: root/modules/system-lib.el
diff options
context:
space:
mode:
Diffstat (limited to 'modules/system-lib.el')
-rw-r--r--modules/system-lib.el34
1 files changed, 34 insertions, 0 deletions
diff --git a/modules/system-lib.el b/modules/system-lib.el
index 333c15ee2..ed98a476e 100644
--- a/modules/system-lib.el
+++ b/modules/system-lib.el
@@ -130,5 +130,39 @@ Callers that must have a secret layer their own error on top."
(secret (plist-get (car (apply #'auth-source-search spec)) :secret)))
(if (functionp secret) (funcall secret) secret)))
+;; ---------------------------- Strong Confirmation ----------------------------
+
+(defun cj/confirm-strong (prompt)
+ "Ask PROMPT, requiring a full typed \"yes\" or \"no\" answer.
+For irreversible actions -- file destruction, overwrites, power-off. The
+global default makes `yes-or-no-p' a single keystroke (`use-short-answers'
+is t); this binds it to nil for the one call so the prompt demands the
+long-form answer, keeping a stray RET or space from confirming."
+ (let ((use-short-answers nil))
+ (yes-or-no-p prompt)))
+
+(defun cj/--font-lock-global-modes-excluding (current mode)
+ "Return CURRENT `font-lock-global-modes' with MODE added to the exclusion.
+CURRENT has one of three shapes: t (font-lock on in all modes), a
+\(not M...) exclusion list, or an (M...) inclusion list. Pure: returns
+the new value and mutates nothing."
+ (cond
+ ((eq current t) (list 'not mode))
+ ((and (consp current) (eq (car current) 'not))
+ (if (memq mode (cdr current)) current
+ (cons 'not (cons mode (cdr current)))))
+ ((consp current) (delq mode (copy-sequence current)))
+ (t current)))
+
+(defun cj/exclude-from-global-font-lock (&rest modes)
+ "Exclude MODES from `global-font-lock-mode'.
+Some major modes (dashboard, mu4e) paint their buffers with manual `face'
+text properties; global font-lock then strips those, leaving the buffer
+unthemed. Excluding the mode keeps its faces. Additive, so each caller
+contributes its own modes regardless of load order."
+ (dolist (mode modes)
+ (setq font-lock-global-modes
+ (cj/--font-lock-global-modes-excluding font-lock-global-modes mode))))
+
(provide 'system-lib)
;;; system-lib.el ends here