v0.8.0: tangle to XDG (~/.local/share/cl-tty/), remove stale memex .lisp files
This commit is contained in:
@@ -49,7 +49,7 @@ and the backend's ~*theme-colors*~ for SGR resolution.
|
||||
|
||||
Package declaration and test suite registration.
|
||||
|
||||
#+BEGIN_SRC lisp :tangle ../src/components/theme-tests.lisp
|
||||
#+BEGIN_SRC lisp :tangle ~/.local/share/cl-tty/src/components/theme-tests.lisp
|
||||
(in-package :cl-tty-box-test)
|
||||
(in-suite box-suite)
|
||||
#+END_SRC
|
||||
@@ -60,7 +60,7 @@ Verifies basic construction of a theme with default ~:dark~ mode. The
|
||||
~make-theme~ constructor should return an instance of the ~theme~
|
||||
class with ~:dark~ as the initial mode.
|
||||
|
||||
#+BEGIN_SRC lisp :tangle ../src/components/theme-tests.lisp
|
||||
#+BEGIN_SRC lisp :tangle ~/.local/share/cl-tty/src/components/theme-tests.lisp
|
||||
(test theme-create-default
|
||||
"A theme can be created with default mode"
|
||||
(let ((th (make-theme)))
|
||||
@@ -73,7 +73,7 @@ class with ~:dark~ as the initial mode.
|
||||
Verifies explicit ~:light~ mode works. Both modes must produce themes
|
||||
ready to accept color role assignments.
|
||||
|
||||
#+BEGIN_SRC lisp :tangle ../src/components/theme-tests.lisp
|
||||
#+BEGIN_SRC lisp :tangle ~/.local/share/cl-tty/src/components/theme-tests.lisp
|
||||
(test theme-create-light
|
||||
"A theme can be created in light mode"
|
||||
(let ((th (make-theme :mode :light)))
|
||||
@@ -86,7 +86,7 @@ Confirms ~setf~ on ~theme-color~ stores a value and that reading it
|
||||
back returns the same string. This is the core read/write contract
|
||||
for the theme's role map.
|
||||
|
||||
#+BEGIN_SRC lisp :tangle ../src/components/theme-tests.lisp
|
||||
#+BEGIN_SRC lisp :tangle ~/.local/share/cl-tty/src/components/theme-tests.lisp
|
||||
(test theme-color-set-and-get
|
||||
"theme-color setf/get works"
|
||||
(let ((th (make-theme)))
|
||||
@@ -100,7 +100,7 @@ Unassigned roles must return ~nil~ rather than signaling an error.
|
||||
This allows components to degrade gracefully when a theme doesn't
|
||||
define every possible role.
|
||||
|
||||
#+BEGIN_SRC lisp :tangle ../src/components/theme-tests.lisp
|
||||
#+BEGIN_SRC lisp :tangle ~/.local/share/cl-tty/src/components/theme-tests.lisp
|
||||
(test theme-color-unknown-returns-nil
|
||||
"Unknown roles return nil"
|
||||
(let ((th (make-theme)))
|
||||
@@ -113,7 +113,7 @@ Loading the ~:default~ preset in ~:dark~ mode must populate a set of
|
||||
expected roles with their documented hex values. We spot-check
|
||||
~:primary~, ~:background~, and ~:error~.
|
||||
|
||||
#+BEGIN_SRC lisp :tangle ../src/components/theme-tests.lisp
|
||||
#+BEGIN_SRC lisp :tangle ~/.local/share/cl-tty/src/components/theme-tests.lisp
|
||||
(test load-default-dark-preset
|
||||
"Loading the default dark preset populates roles"
|
||||
(let ((th (make-theme :mode :dark)))
|
||||
@@ -129,7 +129,7 @@ The light variant of ~:default~ must produce different values (warm
|
||||
tones on near-white). This validates the mode dispatch inside
|
||||
~load-preset~.
|
||||
|
||||
#+BEGIN_SRC lisp :tangle ../src/components/theme-tests.lisp
|
||||
#+BEGIN_SRC lisp :tangle ~/.local/share/cl-tty/src/components/theme-tests.lisp
|
||||
(test load-default-light-preset
|
||||
"Light variant has different colors"
|
||||
(let ((th (make-theme :mode :light)))
|
||||
@@ -144,7 +144,7 @@ The ~:nord~ preset must produce a distinct cool-blue palette,
|
||||
different from the ~:default~ gold scheme. This validates independent
|
||||
preset data.
|
||||
|
||||
#+BEGIN_SRC lisp :tangle ../src/components/theme-tests.lisp
|
||||
#+BEGIN_SRC lisp :tangle ~/.local/share/cl-tty/src/components/theme-tests.lisp
|
||||
(test load-nord-preset
|
||||
"Nord preset has different colors than default"
|
||||
(let ((th (make-theme :mode :dark)))
|
||||
@@ -159,7 +159,7 @@ An unknown preset name must signal a ~warning~ (not an ~error~) and
|
||||
leave the theme's roles unpopulated. This ensures graceful degradation
|
||||
when a preset is missing.
|
||||
|
||||
#+BEGIN_SRC lisp :tangle ../src/components/theme-tests.lisp
|
||||
#+BEGIN_SRC lisp :tangle ~/.local/share/cl-tty/src/components/theme-tests.lisp
|
||||
(test load-preset-unknown-warns
|
||||
"Unknown preset warns but doesn't error"
|
||||
(let ((th (make-theme)))
|
||||
@@ -173,7 +173,7 @@ Switching the mode at runtime and re-loading the same preset must
|
||||
produce the other variant's colors. This validates that ~load-preset~
|
||||
reads the current ~theme-mode~ each time, not a cached value.
|
||||
|
||||
#+BEGIN_SRC lisp :tangle ../src/components/theme-tests.lisp
|
||||
#+BEGIN_SRC lisp :tangle ~/.local/share/cl-tty/src/components/theme-tests.lisp
|
||||
(test preset-switch-mode
|
||||
"Switching mode and reloading changes colors"
|
||||
(let ((th (make-theme :mode :dark)))
|
||||
@@ -200,7 +200,7 @@ table storing role→hex mappings, lazily initialized to an empty
|
||||
hash table). Using ~make-hash-table~ as the ~:initform~ ensures each
|
||||
instance gets its own table instead of sharing one.
|
||||
|
||||
#+BEGIN_SRC lisp :tangle ../src/components/theme.lisp
|
||||
#+BEGIN_SRC lisp :tangle ~/.local/share/cl-tty/src/components/theme.lisp
|
||||
(in-package :cl-tty.box)
|
||||
|
||||
(defclass theme ()
|
||||
@@ -215,7 +215,7 @@ this in a function lets us change the constructor signature without
|
||||
breaking callers. Mode defaults to ~:dark~, suitable for dark-background
|
||||
terminals; callers pass ~:mode :light~ for light backgrounds.
|
||||
|
||||
#+BEGIN_SRC lisp :tangle ../src/components/theme.lisp
|
||||
#+BEGIN_SRC lisp :tangle ~/.local/share/cl-tty/src/components/theme.lisp
|
||||
(defun make-theme (&key (mode :dark))
|
||||
(make-instance 'theme :mode mode))
|
||||
#+END_SRC
|
||||
@@ -229,7 +229,7 @@ Reads a semantic role from the theme's roles hash table. Uses
|
||||
degrade gracefully rather than crashing. The backend treats ~nil~ as
|
||||
"use default."
|
||||
|
||||
#+BEGIN_SRC lisp :tangle ../src/components/theme.lisp
|
||||
#+BEGIN_SRC lisp :tangle ~/.local/share/cl-tty/src/components/theme.lisp
|
||||
(defun theme-color (theme role)
|
||||
"Resolve a semantic ROLE to a hex color string in THEME."
|
||||
(gethash role (theme-roles theme)))
|
||||
@@ -241,7 +241,7 @@ The setter companion to ~theme-color~. Storing via ~setf~ writes
|
||||
directly into the roles hash table. Uses ~setf~ on ~gethash~ which
|
||||
creates the entry if it doesn't exist.
|
||||
|
||||
#+BEGIN_SRC lisp :tangle ../src/components/theme.lisp
|
||||
#+BEGIN_SRC lisp :tangle ~/.local/share/cl-tty/src/components/theme.lisp
|
||||
(defun (setf theme-color) (hex theme role)
|
||||
"Set the hex color for a semantic ROLE in THEME."
|
||||
(setf (gethash role (theme-roles theme)) hex))
|
||||
@@ -258,7 +258,7 @@ table keeps preset data inline and readable.
|
||||
Global storage for preset definitions. The ~eq~ test matches keyword
|
||||
identity, which is the fastest hash test for keywords.
|
||||
|
||||
#+BEGIN_SRC lisp :tangle ../src/components/theme.lisp
|
||||
#+BEGIN_SRC lisp :tangle ~/.local/share/cl-tty/src/components/theme.lisp
|
||||
(defparameter *presets* (make-hash-table :test #'eq))
|
||||
#+END_SRC
|
||||
|
||||
@@ -269,7 +269,7 @@ Registers a preset by name (~keyword~) at macro-expansion time. The
|
||||
~setf~ of ~gethash~, storing a plist of ~:dark~ and ~:light~ variants.
|
||||
Using a quoted list (not an alist or hash) keeps the data compact.
|
||||
|
||||
#+BEGIN_SRC lisp :tangle ../src/components/theme.lisp
|
||||
#+BEGIN_SRC lisp :tangle ~/.local/share/cl-tty/src/components/theme.lisp
|
||||
(defmacro define-preset (name &key dark light)
|
||||
"Define a theme preset with DARK and LIGHT variants.
|
||||
NAME should be a keyword (e.g., :default, :nord)."
|
||||
@@ -292,7 +292,7 @@ pairs, setting both the theme entry and the backend entry. If the
|
||||
preset doesn't exist, ~warn~ is called instead of ~error~ — a missing
|
||||
preset shouldn't crash the application.
|
||||
|
||||
#+BEGIN_SRC lisp :tangle ../src/components/theme.lisp
|
||||
#+BEGIN_SRC lisp :tangle ~/.local/share/cl-tty/src/components/theme.lisp
|
||||
(defun load-preset (theme preset-name)
|
||||
"Load PRESET-NAME colors into THEME.
|
||||
Side-effect: populates cl-tty.backend:*theme-colors* so that semantic
|
||||
@@ -320,7 +320,7 @@ Two presets are built in:
|
||||
Gold/accent palette on dark navy background. The light variant
|
||||
inverts to warm tones on near-white.
|
||||
|
||||
#+BEGIN_SRC lisp :tangle ../src/components/theme.lisp
|
||||
#+BEGIN_SRC lisp :tangle ~/.local/share/cl-tty/src/components/theme.lisp
|
||||
(define-preset :default
|
||||
:dark (:primary "#FFD700" :secondary "#B8860B" :accent "#FFA500"
|
||||
:error "#FF4444" :warning "#FF8800" :success "#44BB44" :info "#4488FF"
|
||||
@@ -351,7 +351,7 @@ inverts to warm tones on near-white.
|
||||
Cool blue palette inspired by Arctic Studio's Nord theme. Softer
|
||||
contrast than default, designed for reduced eye strain.
|
||||
|
||||
#+BEGIN_SRC lisp :tangle ../src/components/theme.lisp
|
||||
#+BEGIN_SRC lisp :tangle ~/.local/share/cl-tty/src/components/theme.lisp
|
||||
(define-preset :nord
|
||||
:dark (:primary "#88C0D0" :secondary "#81A1C1" :accent "#5E81AC"
|
||||
:error "#BF616A" :warning "#D08770" :success "#A3BE8C" :info "#B48EAD"
|
||||
|
||||
Reference in New Issue
Block a user