From c0c6e72684387f990fda1096e842f1f100ddb3e5 Mon Sep 17 00:00:00 2001 From: Craig Jennings Date: Mon, 15 Jun 2026 23:29:35 -0500 Subject: feat(system-utils): tint the *scratch* background a shade lighter A buffer-local face remap lightens the *scratch* default background by cj/scratch-background-lighten percent (default 5) so it reads as the scratch buffer, applied on emacs-startup-hook. The colour math is display-dependent (verified live); the pure helper's guard contract is unit-tested. --- modules/system-utils.el | 31 +++++++++++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) (limited to 'modules/system-utils.el') diff --git a/modules/system-utils.el b/modules/system-utils.el index 7cf958674..b3e038ef0 100644 --- a/modules/system-utils.el +++ b/modules/system-utils.el @@ -157,12 +157,39 @@ detached from Emacs." ;; Set scratch buffer to org-mode (setopt initial-major-mode 'org-mode) -;; Move cursor to end of scratch buffer on startup +;; Tint the *scratch* background a shade lighter than the default so it reads +;; as the scratch buffer at a glance. Buffer-local face remap, recomputed from +;; whatever theme is loaded. +(require 'color) + +(defcustom cj/scratch-background-lighten 5 + "Percent to lighten the *scratch* background above the default background. +Aesthetic; tune to taste." + :type 'integer + :group 'convenience) + +(defun cj/--scratch-lightened-background (bg) + "Return BG lightened by `cj/scratch-background-lighten' percent. +Return nil when BG is not a usable color string (e.g. `unspecified')." + (when (and (stringp bg) (color-name-to-rgb bg)) + (color-lighten-name bg cj/scratch-background-lighten))) + +(defun cj/scratch-apply-background () + "Remap the *scratch* buffer background a shade lighter than the default." + (when (get-buffer "*scratch*") + (with-current-buffer "*scratch*" + (let ((lighter (cj/--scratch-lightened-background + (face-attribute 'default :background nil t)))) + (when lighter + (face-remap-add-relative 'default :background lighter)))))) + +;; Move cursor to end of scratch buffer on startup, and tint its background (add-hook 'emacs-startup-hook (lambda () (when (get-buffer "*scratch*") (with-current-buffer "*scratch*" - (goto-char (point-max)))))) + (goto-char (point-max)))) + (cj/scratch-apply-background))) ;;; --------------------------------- Dictionary -------------------------------- -- cgit v1.2.3