v0.8.0: tangle to XDG (~/.local/share/cl-tty/), remove stale memex .lisp files
This commit is contained in:
@@ -72,7 +72,7 @@ to a string stream instead of writing to the real terminal. This helper
|
||||
creates a ~modern-backend~ with a ~string-output-stream~ and returns
|
||||
both, so tests can inspect what was rendered.
|
||||
|
||||
#+BEGIN_SRC lisp :tangle ../src/components/render-tests.lisp
|
||||
#+BEGIN_SRC lisp :tangle ~/.local/share/cl-tty/src/components/render-tests.lisp
|
||||
(in-package :cl-tty-box-test)
|
||||
(in-suite box-suite)
|
||||
|
||||
@@ -90,7 +90,7 @@ generic dispatch works for the box type and that the border rendering
|
||||
pipeline is intact. A regression here would mean ~render-box~ is not
|
||||
being called or produces no output.
|
||||
|
||||
#+BEGIN_SRC lisp :tangle ../src/components/render-tests.lisp
|
||||
#+BEGIN_SRC lisp :tangle ~/.local/share/cl-tty/src/components/render-tests.lisp
|
||||
(test render-generic-dispatches-box
|
||||
"render dispatches to render-box for box instances"
|
||||
(multiple-value-bind (b s) (make-capturing-backend)
|
||||
@@ -108,7 +108,7 @@ dispatch works for the text type and that text content is correctly
|
||||
emitted to the backend. A regression would mean ~render-text~ is not
|
||||
being called.
|
||||
|
||||
#+BEGIN_SRC lisp :tangle ../src/components/render-tests.lisp
|
||||
#+BEGIN_SRC lisp :tangle ~/.local/share/cl-tty/src/components/render-tests.lisp
|
||||
(test render-generic-dispatches-text
|
||||
"render dispatches to render-text for text instances"
|
||||
(multiple-value-bind (b s) (make-capturing-backend)
|
||||
@@ -127,7 +127,7 @@ return a ~layout-node~ instance from their ~component-layout-node~
|
||||
method. A failure here means a component type is missing its method or
|
||||
the slot accessor is wrong.
|
||||
|
||||
#+BEGIN_SRC lisp :tangle ../src/components/render-tests.lisp
|
||||
#+BEGIN_SRC lisp :tangle ~/.local/share/cl-tty/src/components/render-tests.lisp
|
||||
(test component-layout-node-works
|
||||
"component-layout-node returns the right slot for each type"
|
||||
(let ((bx (make-box)) (tx (make-text "")))
|
||||
@@ -143,7 +143,7 @@ nor text accidentally inherits or defines a method that returns
|
||||
non-nil, which would break the tree-walk in ~render-node~ by causing
|
||||
infinite recursion or rendering phantom children.
|
||||
|
||||
#+BEGIN_SRC lisp :tangle ../src/components/render-tests.lisp
|
||||
#+BEGIN_SRC lisp :tangle ~/.local/share/cl-tty/src/components/render-tests.lisp
|
||||
(test component-children-returns-nil
|
||||
"Leaf components have no children"
|
||||
(let ((bx (make-box)) (tx (make-text "")))
|
||||
@@ -160,7 +160,7 @@ test verifies that calling ~propagate-dirty~ on a clean component sets
|
||||
it dirty. Without this, components that mutate would never trigger a
|
||||
re-render and the display would become stale.
|
||||
|
||||
#+BEGIN_SRC lisp :tangle ../src/components/render-tests.lisp
|
||||
#+BEGIN_SRC lisp :tangle ~/.local/share/cl-tty/src/components/render-tests.lisp
|
||||
(test propagate-dirty-marks-component
|
||||
"propagate-dirty marks the component dirty"
|
||||
(let ((c (make-box)))
|
||||
@@ -180,7 +180,7 @@ computation. This matters because container components use
|
||||
~available-width~ to position children — getting a sensible default
|
||||
prevents division-by-zero or garbled layouts during initialization.
|
||||
|
||||
#+BEGIN_SRC lisp :tangle ../src/components/render-tests.lisp
|
||||
#+BEGIN_SRC lisp :tangle ~/.local/share/cl-tty/src/components/render-tests.lisp
|
||||
(test available-width-defaults
|
||||
"available-width returns 0 for components without explicit width"
|
||||
(let ((c (make-box)))
|
||||
@@ -203,7 +203,7 @@ rendering must have a layout node — it stores the computed position and
|
||||
size after layout passes. The generic is defined with two specific
|
||||
methods for the built-in component types.
|
||||
|
||||
#+BEGIN_SRC lisp :tangle ../src/components/render.lisp
|
||||
#+BEGIN_SRC lisp :tangle ~/.local/share/cl-tty/src/components/render.lisp
|
||||
(in-package :cl-tty.box)
|
||||
|
||||
;; ── Component Protocol ────────────────────────────────────────
|
||||
@@ -215,7 +215,7 @@ methods for the built-in component types.
|
||||
Each component type returns its internal layout node slot. This method
|
||||
specializes on ~box~ and returns the ~box-layout-node~ slot value.
|
||||
|
||||
#+BEGIN_SRC lisp :tangle ../src/components/render.lisp
|
||||
#+BEGIN_SRC lisp :tangle ~/.local/share/cl-tty/src/components/render.lisp
|
||||
(defmethod component-layout-node ((bx box))
|
||||
(box-layout-node bx))
|
||||
#+END_SRC
|
||||
@@ -224,7 +224,7 @@ The ~text~ component stores its layout node in the ~text-layout-node~
|
||||
slot. Both methods return the same type (~layout-node~), so the layout
|
||||
engine can operate uniformly regardless of component type.
|
||||
|
||||
#+BEGIN_SRC lisp :tangle ../src/components/render.lisp
|
||||
#+BEGIN_SRC lisp :tangle ~/.local/share/cl-tty/src/components/render.lisp
|
||||
(defmethod component-layout-node ((tx text))
|
||||
(text-layout-node tx))
|
||||
#+END_SRC
|
||||
@@ -236,7 +236,7 @@ Leaf components (~box~, ~text~) have no children. Container components
|
||||
default method on ~t~ returns ~nil~, so new component types are
|
||||
automatically treated as leaves unless they explicitly override.
|
||||
|
||||
#+BEGIN_SRC lisp :tangle ../src/components/render.lisp
|
||||
#+BEGIN_SRC lisp :tangle ~/.local/share/cl-tty/src/components/render.lisp
|
||||
(defgeneric component-children (component)
|
||||
(:documentation "Return the children of COMPONENT, or nil.")
|
||||
(:method ((c t)) nil))
|
||||
@@ -250,7 +250,7 @@ used by ~propagate-dirty~ to walk up the tree. The default method on
|
||||
recursive dirty walk — when ~component-parent~ returns ~nil~, we've
|
||||
reached the root.
|
||||
|
||||
#+BEGIN_SRC lisp :tangle ../src/components/render.lisp
|
||||
#+BEGIN_SRC lisp :tangle ~/.local/share/cl-tty/src/components/render.lisp
|
||||
(defgeneric component-parent (component)
|
||||
(:documentation "Return the parent of COMPONENT, or nil.")
|
||||
(:method ((c t)) nil))
|
||||
@@ -266,7 +266,7 @@ pipeline. Every component type that can be drawn defines a method on
|
||||
objects (or components still under development) don't cause errors
|
||||
when the tree walk reaches them.
|
||||
|
||||
#+BEGIN_SRC lisp :tangle ../src/components/render.lisp
|
||||
#+BEGIN_SRC lisp :tangle ~/.local/share/cl-tty/src/components/render.lisp
|
||||
;; ── Rendering Pipeline ────────────────────────────────────────
|
||||
|
||||
(defgeneric render (component backend)
|
||||
@@ -282,7 +282,7 @@ Boxes are rendered with border characters. The ~render~ method
|
||||
delegates to the ~render-box~ function defined in ~box.lisp~, which
|
||||
handles the actual drawing of border lines and corners.
|
||||
|
||||
#+BEGIN_SRC lisp :tangle ../src/components/render.lisp
|
||||
#+BEGIN_SRC lisp :tangle ~/.local/share/cl-tty/src/components/render.lisp
|
||||
(defmethod render ((bx box) backend)
|
||||
(render-box bx backend))
|
||||
#+END_SRC
|
||||
@@ -293,7 +293,7 @@ Text components render their content string at the computed position.
|
||||
The ~render~ method delegates to ~render-text~ from ~text.lisp~, which
|
||||
writes the string with appropriate escape sequences for positioning.
|
||||
|
||||
#+BEGIN_SRC lisp :tangle ../src/components/render.lisp
|
||||
#+BEGIN_SRC lisp :tangle ~/.local/share/cl-tty/src/components/render.lisp
|
||||
(defmethod render ((tx text) backend)
|
||||
(render-text tx backend))
|
||||
#+END_SRC
|
||||
@@ -313,7 +313,7 @@ The pipeline is: (1) query backend pixel/dimension size, (2) begin
|
||||
sync, (3) compute layout at the root, (4) walk the tree rendering each
|
||||
node, (5) end sync.
|
||||
|
||||
#+BEGIN_SRC lisp :tangle ../src/components/render.lisp
|
||||
#+BEGIN_SRC lisp :tangle ~/.local/share/cl-tty/src/components/render.lisp
|
||||
(defun render-screen (root backend)
|
||||
"Render the component tree ROOT using BACKEND.
|
||||
Computes layout at the root level, then traverses children
|
||||
@@ -334,7 +334,7 @@ are available from its ~layout-node~. The recursion is depth-first:
|
||||
parents are drawn before children, which matters for z-ordering (the
|
||||
parent's background is drawn first, children overlay on top).
|
||||
|
||||
#+BEGIN_SRC lisp :tangle ../src/components/render.lisp
|
||||
#+BEGIN_SRC lisp :tangle ~/.local/share/cl-tty/src/components/render.lisp
|
||||
(defun render-node (node backend)
|
||||
"Render a component NODE and its children.
|
||||
Layout is computed once at the root by render-screen, so children
|
||||
@@ -354,7 +354,7 @@ reflects the actual allocated space — not the requested width. The
|
||||
fallback of 80 matches the default terminal width when no layout node
|
||||
exists (during initialization or testing without a backend).
|
||||
|
||||
#+BEGIN_SRC lisp :tangle ../src/components/render.lisp
|
||||
#+BEGIN_SRC lisp :tangle ~/.local/share/cl-tty/src/components/render.lisp
|
||||
(defun available-width (component)
|
||||
"Return the available width for COMPONENT (or 80 as default)."
|
||||
(let ((ln (component-layout-node component)))
|
||||
@@ -369,7 +369,7 @@ fallback of 24 matches the default terminal height. These accessors
|
||||
provide a clean API for components that need to know their allocated
|
||||
space during rendering, avoiding direct access to layout nodes.
|
||||
|
||||
#+BEGIN_SRC lisp :tangle ../src/components/render.lisp
|
||||
#+BEGIN_SRC lisp :tangle ~/.local/share/cl-tty/src/components/render.lisp
|
||||
(defun available-height (component)
|
||||
"Return the available height for COMPONENT (or 24 as default)."
|
||||
(let ((ln (component-layout-node component)))
|
||||
@@ -391,7 +391,7 @@ immediately for clean components (handled in each component's render,
|
||||
not here). The recursion terminates when ~component-parent~ returns
|
||||
~nil~ (the root component has no parent).
|
||||
|
||||
#+BEGIN_SRC lisp :tangle ../src/components/render.lisp
|
||||
#+BEGIN_SRC lisp :tangle ~/.local/share/cl-tty/src/components/render.lisp
|
||||
;; ── Dirty Propagation ─────────────────────────────────────────
|
||||
|
||||
(defun propagate-dirty (component)
|
||||
|
||||
Reference in New Issue
Block a user