aboutsummaryrefslogtreecommitdiff
path: root/modules/system-utils.el
diff options
context:
space:
mode:
authorCraig Jennings <c@cjennings.net>2026-06-15 23:29:35 -0500
committerCraig Jennings <c@cjennings.net>2026-06-15 23:29:35 -0500
commit88afca633f997d92af891d4d1908832f7b60639c (patch)
treeeb83597d8bc31b8c4e80cea07d2ef07321b9d63f /modules/system-utils.el
parent889a291223b2f2b663256c9393efae67ac5415c0 (diff)
downloaddotemacs-88afca633f997d92af891d4d1908832f7b60639c.tar.gz
dotemacs-88afca633f997d92af891d4d1908832f7b60639c.zip
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.
Diffstat (limited to 'modules/system-utils.el')
-rw-r--r--modules/system-utils.el31
1 files changed, 29 insertions, 2 deletions
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 --------------------------------