v0.8.0: tangle to XDG (~/.local/share/cl-tty/), remove stale memex .lisp files
This commit is contained in:
@@ -107,7 +107,7 @@ FiveAM requires a test package with :use of :fiveam and the system
|
||||
under test. The suite name ~backend-suite~ is referenced by the
|
||||
multi-suite runner in ~run-all-tests.lisp~.
|
||||
|
||||
#+BEGIN_SRC lisp :tangle ../src/backend/tests.lisp
|
||||
#+BEGIN_SRC lisp :tangle ~/.local/share/cl-tty/src/backend/tests.lisp
|
||||
(defpackage :cl-tty-backend-test
|
||||
(:use :cl :fiveam :cl-tty.backend)
|
||||
(:export #:run-tests))
|
||||
@@ -124,7 +124,7 @@ creates a simple-backend pointed at a string output stream and
|
||||
returns both the backend and the stream. The test can then call
|
||||
~get-output-stream-string~ after the operation.
|
||||
|
||||
#+BEGIN_SRC lisp :tangle ../src/backend/tests.lisp
|
||||
#+BEGIN_SRC lisp :tangle ~/.local/share/cl-tty/src/backend/tests.lisp
|
||||
(defun make-capturing-backend ()
|
||||
"Create a simple-backend that writes to a string stream."
|
||||
(let* ((s (make-string-output-stream))
|
||||
@@ -138,7 +138,7 @@ The ~run-tests~ function is an alternative entry point for
|
||||
interactive use or for downstream scripts that want to run only the
|
||||
backend suite. It prints results with FiveAM's explainer.
|
||||
|
||||
#+BEGIN_SRC lisp :tangle ../src/backend/tests.lisp
|
||||
#+BEGIN_SRC lisp :tangle ~/.local/share/cl-tty/src/backend/tests.lisp
|
||||
(defun run-tests ()
|
||||
"Run all backend tests."
|
||||
(let ((result (run 'backend-suite)))
|
||||
@@ -153,7 +153,7 @@ shut down without errors. Also confirms that the capability query
|
||||
returns nil for truecolor — the defining characteristic of the
|
||||
simple backend.
|
||||
|
||||
#+BEGIN_SRC lisp :tangle ../src/backend/tests.lisp
|
||||
#+BEGIN_SRC lisp :tangle ~/.local/share/cl-tty/src/backend/tests.lisp
|
||||
(test simple-backend-lifecycle
|
||||
"simple-backend can be created and shut down"
|
||||
(let ((b (make-simple-backend)))
|
||||
@@ -172,7 +172,7 @@ and position. It merely appends the text string to the output stream.
|
||||
This test confirms that passing style keywords does not change the
|
||||
output — the captured stream should contain exactly the string "hello".
|
||||
|
||||
#+BEGIN_SRC lisp :tangle ../src/backend/tests.lisp
|
||||
#+BEGIN_SRC lisp :tangle ~/.local/share/cl-tty/src/backend/tests.lisp
|
||||
(test simple-backend-draw-text
|
||||
"simple-backend renders text at position, ignoring style"
|
||||
(multiple-value-bind (b s) (make-capturing-backend)
|
||||
@@ -190,7 +190,7 @@ Border rendering on the simple backend uses ASCII characters:
|
||||
This test checks that the top edge contains "+---+" and a middle
|
||||
row shows "| |" with pipe-separated empty space.
|
||||
|
||||
#+BEGIN_SRC lisp :tangle ../src/backend/tests.lisp
|
||||
#+BEGIN_SRC lisp :tangle ~/.local/share/cl-tty/src/backend/tests.lisp
|
||||
(test simple-backend-draw-border
|
||||
"simple-backend draws ASCII border with +-| characters"
|
||||
(multiple-value-bind (b s) (make-capturing-backend)
|
||||
@@ -209,7 +209,7 @@ falls back to the same ASCII characters. This test verifies that
|
||||
requesting ~:rounded~ produces the same output as ~:single~,
|
||||
confirming the graceful fallback.
|
||||
|
||||
#+BEGIN_SRC lisp :tangle ../src/backend/tests.lisp
|
||||
#+BEGIN_SRC lisp :tangle ~/.local/share/cl-tty/src/backend/tests.lisp
|
||||
(test simple-backend-draw-rounded
|
||||
"simple-backend falls back to straight edges for rounded style"
|
||||
(multiple-value-bind (b s) (make-capturing-backend)
|
||||
@@ -227,7 +227,7 @@ Hyperlinks are meaningless on a simple terminal output. The simple
|
||||
backend's ~draw-link~ should output only the visible text and
|
||||
completely ignore the URL parameter.
|
||||
|
||||
#+BEGIN_SRC lisp :tangle ../src/backend/tests.lisp
|
||||
#+BEGIN_SRC lisp :tangle ~/.local/share/cl-tty/src/backend/tests.lisp
|
||||
(test simple-backend-draw-link
|
||||
"simple-backend renders link as plain text"
|
||||
(multiple-value-bind (b s) (make-capturing-backend)
|
||||
@@ -244,7 +244,7 @@ Truncation markers are rendered as three literal dots on the simple
|
||||
backend. This test checks that ~draw-ellipsis~ outputs exactly "..."
|
||||
at the specified position.
|
||||
|
||||
#+BEGIN_SRC lisp :tangle ../src/backend/tests.lisp
|
||||
#+BEGIN_SRC lisp :tangle ~/.local/share/cl-tty/src/backend/tests.lisp
|
||||
(test simple-backend-draw-ellipsis
|
||||
"simple-backend renders ... for ellipsis"
|
||||
(multiple-value-bind (b s) (make-capturing-backend)
|
||||
@@ -262,7 +262,7 @@ backend. This comprehensive check iterates every feature keyword
|
||||
to ensure the simple backend makes no false claims about its
|
||||
capabilities.
|
||||
|
||||
#+BEGIN_SRC lisp :tangle ../src/backend/tests.lisp
|
||||
#+BEGIN_SRC lisp :tangle ~/.local/share/cl-tty/src/backend/tests.lisp
|
||||
(test capable-p-known-features
|
||||
"capable-p returns nil for all features on simple-backend"
|
||||
(let ((b (make-simple-backend)))
|
||||
@@ -281,7 +281,7 @@ representing columns and lines. This test verifies the return types
|
||||
and a minimum size threshold (10 columns, 3 lines) for any
|
||||
terminal-like environment.
|
||||
|
||||
#+BEGIN_SRC lisp :tangle ../src/backend/tests.lisp
|
||||
#+BEGIN_SRC lisp :tangle ~/.local/share/cl-tty/src/backend/tests.lisp
|
||||
(test backend-size-returns-integers
|
||||
"backend-size returns two integer values"
|
||||
(let ((b (make-simple-backend)))
|
||||
@@ -302,7 +302,7 @@ test calls ~cursor-hide~, ~cursor-show~, ~cursor-style~,
|
||||
~begin-sync~, and ~end-sync~ and confirms none of them produce
|
||||
multiple return values.
|
||||
|
||||
#+BEGIN_SRC lisp :tangle ../src/backend/tests.lisp
|
||||
#+BEGIN_SRC lisp :tangle ~/.local/share/cl-tty/src/backend/tests.lisp
|
||||
(test default-methods-are-no-ops
|
||||
"Default backend methods don't error"
|
||||
(let ((b (make-simple-backend)))
|
||||
@@ -322,7 +322,7 @@ output. This test verifies that wrapping a draw-text call between
|
||||
~begin-sync~ and ~end-sync~ produces exactly the same output as
|
||||
draw-text alone — no extra escape sequences are emitted.
|
||||
|
||||
#+BEGIN_SRC lisp :tangle ../src/backend/tests.lisp
|
||||
#+BEGIN_SRC lisp :tangle ~/.local/share/cl-tty/src/backend/tests.lisp
|
||||
(test sync-is-noop-on-simple
|
||||
"begin-sync and end-sync produce no output on simple-backend"
|
||||
(multiple-value-bind (b s) (make-capturing-backend)
|
||||
@@ -342,7 +342,7 @@ colors. Since the simple backend emits no escape sequences,
|
||||
~draw-rect~ should produce zero output regardless of the fill
|
||||
color requested.
|
||||
|
||||
#+BEGIN_SRC lisp :tangle ../src/backend/tests.lisp
|
||||
#+BEGIN_SRC lisp :tangle ~/.local/share/cl-tty/src/backend/tests.lisp
|
||||
(test draw-rect-fills-area-correctly
|
||||
"draw-rect with background writes nothing to output (simple-backend no-op)"
|
||||
(multiple-value-bind (b s) (make-capturing-backend)
|
||||
@@ -359,7 +359,7 @@ The ~detect-backend~ function must return a backend instance
|
||||
suitable for the current environment. This test verifies that the
|
||||
returned value is of type ~backend~ (satisfying the protocol).
|
||||
|
||||
#+BEGIN_SRC lisp :tangle ../src/backend/tests.lisp
|
||||
#+BEGIN_SRC lisp :tangle ~/.local/share/cl-tty/src/backend/tests.lisp
|
||||
(test detection-returns-backend-instance
|
||||
"detect-backend returns a valid backend instance"
|
||||
(let ((be (cl-tty.backend:detect-backend)))
|
||||
@@ -373,7 +373,7 @@ subsequent calls are cheap. This test clears the cache, calls
|
||||
detect-backend, and verifies that the special variable is no longer
|
||||
nil.
|
||||
|
||||
#+BEGIN_SRC lisp :tangle ../src/backend/tests.lisp
|
||||
#+BEGIN_SRC lisp :tangle ~/.local/share/cl-tty/src/backend/tests.lisp
|
||||
(test detection-caches-result
|
||||
"detect-backend caches the result in *detected-backend*"
|
||||
(let ((*detected-backend* nil))
|
||||
@@ -395,7 +395,7 @@ The package also exports internal symbols (~sgr-fg~, ~hex-to-24bit~,
|
||||
etc.) for testing. These let the test suite verify escape sequence
|
||||
construction without actually rendering to a terminal.
|
||||
|
||||
#+BEGIN_SRC lisp :tangle ../src/backend/package.lisp
|
||||
#+BEGIN_SRC lisp :tangle ~/.local/share/cl-tty/src/backend/package.lisp
|
||||
(defpackage :cl-tty.backend
|
||||
(:use :cl)
|
||||
(:export
|
||||
@@ -445,7 +445,7 @@ actually support.
|
||||
An empty base class. There are no slots because backends manage
|
||||
their own state (e.g., output streams) directly.
|
||||
|
||||
#+BEGIN_SRC lisp :tangle ../src/backend/classes.lisp
|
||||
#+BEGIN_SRC lisp :tangle ~/.local/share/cl-tty/src/backend/classes.lisp
|
||||
(in-package :cl-tty.backend)
|
||||
|
||||
(defclass backend () ())
|
||||
@@ -457,7 +457,7 @@ Sets up terminal raw mode and enables features. The default method
|
||||
returns the backend instance unchanged — subclasses that need setup
|
||||
override this.
|
||||
|
||||
#+BEGIN_SRC lisp :tangle ../src/backend/classes.lisp
|
||||
#+BEGIN_SRC lisp :tangle ~/.local/share/cl-tty/src/backend/classes.lisp
|
||||
(defgeneric initialize-backend (backend)
|
||||
(:method ((b backend)) b))
|
||||
#+END_SRC
|
||||
@@ -468,7 +468,7 @@ Restores terminal to cooked mode, resets colors, shows cursor.
|
||||
Must be called on exit. The default method is a no-op returning
|
||||
multiple values; subclasses with terminal state override this.
|
||||
|
||||
#+BEGIN_SRC lisp :tangle ../src/backend/classes.lisp
|
||||
#+BEGIN_SRC lisp :tangle ~/.local/share/cl-tty/src/backend/classes.lisp
|
||||
(defgeneric shutdown-backend (backend)
|
||||
(:method ((b backend)) (values)))
|
||||
#+END_SRC
|
||||
@@ -478,7 +478,7 @@ multiple values; subclasses with terminal state override this.
|
||||
Returns terminal dimensions as two values: columns and lines.
|
||||
The default of 80x24 is a safe fallback that works everywhere.
|
||||
|
||||
#+BEGIN_SRC lisp :tangle ../src/backend/classes.lisp
|
||||
#+BEGIN_SRC lisp :tangle ~/.local/share/cl-tty/src/backend/classes.lisp
|
||||
(defgeneric backend-size (backend)
|
||||
(:method ((b backend))
|
||||
(values 80 24)))
|
||||
@@ -490,7 +490,7 @@ Writes a raw string to the terminal output. Has no default method
|
||||
because every backend must provide its own output mechanism — there
|
||||
is no reasonable universal behavior.
|
||||
|
||||
#+BEGIN_SRC lisp :tangle ../src/backend/classes.lisp
|
||||
#+BEGIN_SRC lisp :tangle ~/.local/share/cl-tty/src/backend/classes.lisp
|
||||
(defgeneric backend-write (backend string))
|
||||
#+END_SRC
|
||||
|
||||
@@ -500,7 +500,7 @@ Clears the entire screen and resets the cursor to (0,0). The default
|
||||
method sends the ANSI escape sequence ~ESC[2J~ (clear entire screen)
|
||||
followed by ~ESC[H~ (cursor home).
|
||||
|
||||
#+BEGIN_SRC lisp :tangle ../src/backend/classes.lisp
|
||||
#+BEGIN_SRC lisp :tangle ~/.local/share/cl-tty/src/backend/classes.lisp
|
||||
(defgeneric backend-clear (backend)
|
||||
(:method ((b backend))
|
||||
(backend-write b (format nil "~C[2J~C[H" #\Esc #\Esc))))
|
||||
@@ -514,7 +514,7 @@ it lets individual backend methods accept keyword arguments they
|
||||
don't use without signaling an error. The simple backend ignores
|
||||
styles; the modern backend processes them.
|
||||
|
||||
#+BEGIN_SRC lisp :tangle ../src/backend/classes.lisp
|
||||
#+BEGIN_SRC lisp :tangle ~/.local/share/cl-tty/src/backend/classes.lisp
|
||||
(defgeneric draw-text (backend x y string fg bg &key
|
||||
bold italic underline reverse dim blink
|
||||
&allow-other-keys))
|
||||
@@ -526,7 +526,7 @@ Draws a border rectangle with optional title. Style is one of
|
||||
~:single~, ~:double~, or ~:rounded~. The default method has no
|
||||
implementation — each backend provides its own border rendering.
|
||||
|
||||
#+BEGIN_SRC lisp :tangle ../src/backend/classes.lisp
|
||||
#+BEGIN_SRC lisp :tangle ~/.local/share/cl-tty/src/backend/classes.lisp
|
||||
(defgeneric draw-border (backend x y width height
|
||||
&key style fg bg title title-align))
|
||||
#+END_SRC
|
||||
@@ -537,7 +537,7 @@ Fills a rectangular area with a background color. On the simple
|
||||
backend this is a no-op; on the modern backend it writes space
|
||||
characters with the appropriate SGR background color.
|
||||
|
||||
#+BEGIN_SRC lisp :tangle ../src/backend/classes.lisp
|
||||
#+BEGIN_SRC lisp :tangle ~/.local/share/cl-tty/src/backend/classes.lisp
|
||||
(defgeneric draw-rect (backend x y width height &key bg))
|
||||
#+END_SRC
|
||||
|
||||
@@ -547,7 +547,7 @@ Renders a clickable hyperlink using OSC 8 escape sequences. The
|
||||
default is a protocol declaration only — modern-backend implements
|
||||
the actual escape sequences, simple-backend falls back to plain text.
|
||||
|
||||
#+BEGIN_SRC lisp :tangle ../src/backend/classes.lisp
|
||||
#+BEGIN_SRC lisp :tangle ~/.local/share/cl-tty/src/backend/classes.lisp
|
||||
(defgeneric draw-link (backend x y string url &key fg bg))
|
||||
#+END_SRC
|
||||
|
||||
@@ -557,7 +557,7 @@ Renders a "..." truncation marker at position (x, y). This is used
|
||||
when text exceeds the available width. Each backend positions the
|
||||
marker according to its own coordinate system.
|
||||
|
||||
#+BEGIN_SRC lisp :tangle ../src/backend/classes.lisp
|
||||
#+BEGIN_SRC lisp :tangle ~/.local/share/cl-tty/src/backend/classes.lisp
|
||||
(defgeneric draw-ellipsis (backend x y width &key fg bg))
|
||||
#+END_SRC
|
||||
|
||||
@@ -566,7 +566,7 @@ marker according to its own coordinate system.
|
||||
Moves the cursor to absolute position (x, y). The default method
|
||||
is a no-op — backends that support cursor positioning override this.
|
||||
|
||||
#+BEGIN_SRC lisp :tangle ../src/backend/classes.lisp
|
||||
#+BEGIN_SRC lisp :tangle ~/.local/share/cl-tty/src/backend/classes.lisp
|
||||
(defgeneric cursor-move (backend x y)
|
||||
(:method ((b backend) x y) (declare (ignore x y)) (values)))
|
||||
#+END_SRC
|
||||
@@ -576,7 +576,7 @@ is a no-op — backends that support cursor positioning override this.
|
||||
Hides the terminal cursor. The default method is a no-op so that
|
||||
backends that lack cursor control still work safely.
|
||||
|
||||
#+BEGIN_SRC lisp :tangle ../src/backend/classes.lisp
|
||||
#+BEGIN_SRC lisp :tangle ~/.local/share/cl-tty/src/backend/classes.lisp
|
||||
(defgeneric cursor-hide (backend)
|
||||
(:method ((b backend)) (values)))
|
||||
#+END_SRC
|
||||
@@ -586,7 +586,7 @@ backends that lack cursor control still work safely.
|
||||
Shows the terminal cursor after a hide. Always paired with
|
||||
~cursor-hide~. Default is a no-op.
|
||||
|
||||
#+BEGIN_SRC lisp :tangle ../src/backend/classes.lisp
|
||||
#+BEGIN_SRC lisp :tangle ~/.local/share/cl-tty/src/backend/classes.lisp
|
||||
(defgeneric cursor-show (backend)
|
||||
(:method ((b backend)) (values)))
|
||||
#+END_SRC
|
||||
@@ -597,7 +597,7 @@ Sets the cursor shape and blink behavior. Shape is ~:block~,
|
||||
~:bar~, or ~:underline~. Default is a no-op for backends that
|
||||
don't support cursor styling.
|
||||
|
||||
#+BEGIN_SRC lisp :tangle ../src/backend/classes.lisp
|
||||
#+BEGIN_SRC lisp :tangle ~/.local/share/cl-tty/src/backend/classes.lisp
|
||||
(defgeneric cursor-style (backend shape &key blink)
|
||||
(:method ((b backend) shape &key blink) (values)))
|
||||
#+END_SRC
|
||||
@@ -607,7 +607,7 @@ don't support cursor styling.
|
||||
Starts a synchronized update (DECICM). All subsequent output is
|
||||
buffered by the terminal until ~end-sync~. Default is a no-op.
|
||||
|
||||
#+BEGIN_SRC lisp :tangle ../src/backend/classes.lisp
|
||||
#+BEGIN_SRC lisp :tangle ~/.local/share/cl-tty/src/backend/classes.lisp
|
||||
(defgeneric begin-sync (backend)
|
||||
(:method ((b backend)) (values)))
|
||||
#+END_SRC
|
||||
@@ -617,7 +617,7 @@ buffered by the terminal until ~end-sync~. Default is a no-op.
|
||||
Flushes the synchronized update buffer so the entire frame appears
|
||||
at once. Always paired with ~begin-sync~. Default is a no-op.
|
||||
|
||||
#+BEGIN_SRC lisp :tangle ../src/backend/classes.lisp
|
||||
#+BEGIN_SRC lisp :tangle ~/.local/share/cl-tty/src/backend/classes.lisp
|
||||
(defgeneric end-sync (backend)
|
||||
(:method ((b backend)) (values)))
|
||||
#+END_SRC
|
||||
@@ -628,7 +628,7 @@ Reads the next input event from the terminal. Blocks until an event
|
||||
arrives or the timeout expires. Returns (values keyword event-data).
|
||||
The default method returns ~(values nil nil)~ — no events available.
|
||||
|
||||
#+BEGIN_SRC lisp :tangle ../src/backend/classes.lisp
|
||||
#+BEGIN_SRC lisp :tangle ~/.local/share/cl-tty/src/backend/classes.lisp
|
||||
(defgeneric read-event (backend &key timeout)
|
||||
(:method ((b backend) &key timeout) (values nil nil)))
|
||||
#+END_SRC
|
||||
@@ -639,7 +639,7 @@ Enables SGR mouse tracking so mouse click and motion events are
|
||||
reported as input. Default is a no-op on backends that don't
|
||||
support mouse input.
|
||||
|
||||
#+BEGIN_SRC lisp :tangle ../src/backend/classes.lisp
|
||||
#+BEGIN_SRC lisp :tangle ~/.local/share/cl-tty/src/backend/classes.lisp
|
||||
(defgeneric enable-mouse (backend)
|
||||
(:method ((b backend)) (values)))
|
||||
#+END_SRC
|
||||
@@ -649,7 +649,7 @@ support mouse input.
|
||||
Enables bracketed paste mode so the application can distinguish
|
||||
pasted text from typed input. Default is a no-op.
|
||||
|
||||
#+BEGIN_SRC lisp :tangle ../src/backend/classes.lisp
|
||||
#+BEGIN_SRC lisp :tangle ~/.local/share/cl-tty/src/backend/classes.lisp
|
||||
(defgeneric enable-bracketed-paste (backend)
|
||||
(:method ((b backend)) (values)))
|
||||
#+END_SRC
|
||||
@@ -661,7 +661,7 @@ keywords include ~:truecolor~, ~:osc8~, ~:sync~, ~:mouse~,
|
||||
~:bracketed-paste~, ~:kitty-keyboard~, ~:sixel~, and
|
||||
~:cursor-style~. The default method returns ~nil~ for all features.
|
||||
|
||||
#+BEGIN_SRC lisp :tangle ../src/backend/classes.lisp
|
||||
#+BEGIN_SRC lisp :tangle ~/.local/share/cl-tty/src/backend/classes.lisp
|
||||
(defgeneric capable-p (backend feature)
|
||||
(:method ((b backend) feature)
|
||||
(declare (ignore feature))
|
||||
@@ -675,7 +675,7 @@ application receives SIGTSTP (suspend) or SIGCONT (resume) signals.
|
||||
The default methods are no-ops; backends with terminal state override
|
||||
these to restore cooked mode on suspend and raw mode on resume.
|
||||
|
||||
#+BEGIN_SRC lisp :tangle ../src/backend/classes.lisp
|
||||
#+BEGIN_SRC lisp :tangle ~/.local/share/cl-tty/src/backend/classes.lisp
|
||||
(in-package :cl-tty.backend)
|
||||
|
||||
(defgeneric suspend-backend (backend)
|
||||
@@ -705,7 +705,7 @@ Arguments:
|
||||
lines captured after initialization.
|
||||
- ~&body body~ — executed with the above bindings.
|
||||
|
||||
#+BEGIN_SRC lisp :tangle ../src/backend/classes.lisp
|
||||
#+BEGIN_SRC lisp :tangle ~/.local/share/cl-tty/src/backend/classes.lisp
|
||||
(in-package :cl-tty.backend)
|
||||
|
||||
(defmacro with-terminal ((backend-var &optional cols-var rows-var)
|
||||
@@ -754,7 +754,7 @@ the ~:output-stream~ initarg — the key extensibility point. Tests
|
||||
use ~make-string-output-stream~ to capture output, while production
|
||||
uses ~*standard-output*~.
|
||||
|
||||
#+BEGIN_SRC lisp :tangle ../src/backend/simple.lisp
|
||||
#+BEGIN_SRC lisp :tangle ~/.local/share/cl-tty/src/backend/simple.lisp
|
||||
(in-package :cl-tty.backend)
|
||||
|
||||
(defclass simple-backend (backend)
|
||||
@@ -770,7 +770,7 @@ Constructor function that creates a ~simple-backend~ instance. Uses
|
||||
~*standard-output*~. This function is exported rather than exposing
|
||||
~make-instance~ directly to provide a stable API surface.
|
||||
|
||||
#+BEGIN_SRC lisp :tangle ../src/backend/simple.lisp
|
||||
#+BEGIN_SRC lisp :tangle ~/.local/share/cl-tty/src/backend/simple.lisp
|
||||
(defun make-simple-backend (&key output-stream)
|
||||
(make-instance 'simple-backend
|
||||
:output-stream (or output-stream *standard-output*)))
|
||||
@@ -782,7 +782,7 @@ Simple backend initialization is a no-op — there is no terminal
|
||||
state to configure. Returns the backend instance to satisfy the
|
||||
protocol contract.
|
||||
|
||||
#+BEGIN_SRC lisp :tangle ../src/backend/simple.lisp
|
||||
#+BEGIN_SRC lisp :tangle ~/.local/share/cl-tty/src/backend/simple.lisp
|
||||
(defmethod initialize-backend ((b simple-backend))
|
||||
b)
|
||||
#+END_SRC
|
||||
@@ -792,7 +792,7 @@ protocol contract.
|
||||
Simple backend shutdown is a no-op — there is no terminal state to
|
||||
restore. Returns multiple values to satisfy the protocol contract.
|
||||
|
||||
#+BEGIN_SRC lisp :tangle ../src/backend/simple.lisp
|
||||
#+BEGIN_SRC lisp :tangle ~/.local/share/cl-tty/src/backend/simple.lisp
|
||||
(defmethod shutdown-backend ((b simple-backend))
|
||||
(values))
|
||||
#+END_SRC
|
||||
@@ -801,7 +801,7 @@ restore. Returns multiple values to satisfy the protocol contract.
|
||||
|
||||
No-op — simple backend has no terminal state to save.
|
||||
|
||||
#+begin_src lisp :tangle ../src/backend/simple.lisp
|
||||
#+begin_src lisp :tangle ~/.local/share/cl-tty/src/backend/simple.lisp
|
||||
(defmethod suspend-backend ((b simple-backend))
|
||||
(values))
|
||||
#+end_src
|
||||
@@ -810,7 +810,7 @@ No-op — simple backend has no terminal state to save.
|
||||
|
||||
No-op — simple backend has no terminal state to restore.
|
||||
|
||||
#+begin_src lisp :tangle ../src/backend/simple.lisp
|
||||
#+begin_src lisp :tangle ~/.local/share/cl-tty/src/backend/simple.lisp
|
||||
(defmethod resume-backend ((b simple-backend))
|
||||
(values))
|
||||
#+end_src
|
||||
@@ -825,7 +825,7 @@ a hard-coded 80x24 at the end:
|
||||
3. **ioctl on ~/dev/tty~** — fallback when stdin/stdout are pipes.
|
||||
4. **~(values 80 24)~** — last resort.
|
||||
|
||||
#+BEGIN_SRC lisp :tangle ../src/backend/simple.lisp
|
||||
#+BEGIN_SRC lisp :tangle ~/.local/share/cl-tty/src/backend/simple.lisp
|
||||
(defmethod backend-size ((b simple-backend))
|
||||
;; Try ioctl on fd 0 (stdin), then stdout, then /dev/tty, then 80x24.
|
||||
;; Use multiple-value-bind/values to preserve both cols and rows
|
||||
@@ -883,7 +883,7 @@ Writes a string to the backend's output stream and returns its length.
|
||||
Does NOT flush — explicit sync points (~initialize-backend~,
|
||||
~end-sync~, etc.) call ~finish-output~ as needed.
|
||||
|
||||
#+BEGIN_SRC lisp :tangle ../src/backend/simple.lisp
|
||||
#+BEGIN_SRC lisp :tangle ~/.local/share/cl-tty/src/backend/simple.lisp
|
||||
(defmethod backend-write ((b simple-backend) string)
|
||||
(let ((stream (backend-output-stream b)))
|
||||
(write-string string stream)
|
||||
@@ -897,7 +897,7 @@ completely. It appends only the string content to the output stream.
|
||||
This means simple backends are always a "scroll and dump" mode —
|
||||
no cursor positioning, no escape sequences.
|
||||
|
||||
#+BEGIN_SRC lisp :tangle ../src/backend/simple.lisp
|
||||
#+BEGIN_SRC lisp :tangle ~/.local/share/cl-tty/src/backend/simple.lisp
|
||||
(defmethod draw-text ((b simple-backend) x y string fg bg
|
||||
&key bold italic underline reverse dim blink
|
||||
&allow-other-keys)
|
||||
@@ -912,7 +912,7 @@ corners use ~#\+~, horizontal edges use ~#\-~, and vertical edges
|
||||
use ~#\|~. No style distinction — single, double, and rounded are
|
||||
identical in ASCII output.
|
||||
|
||||
#+BEGIN_SRC lisp :tangle ../src/backend/simple.lisp
|
||||
#+BEGIN_SRC lisp :tangle ~/.local/share/cl-tty/src/backend/simple.lisp
|
||||
(defun %simple-border-char (pos)
|
||||
"Return ASCII border character at POS.
|
||||
POS is :top-left, :top-right, :bottom-left, :bottom-right,
|
||||
@@ -931,7 +931,7 @@ The title rendering supports ~:left~ and ~:center~ alignment,
|
||||
placing the title inside the top border line with horizontal
|
||||
dashes filling the remaining space.
|
||||
|
||||
#+BEGIN_SRC lisp :tangle ../src/backend/simple.lisp
|
||||
#+BEGIN_SRC lisp :tangle ~/.local/share/cl-tty/src/backend/simple.lisp
|
||||
(defmethod draw-border ((b simple-backend) x y width height
|
||||
&key style fg bg title title-align)
|
||||
(declare (ignore style fg bg))
|
||||
@@ -987,7 +987,7 @@ dashes filling the remaining space.
|
||||
Background fill is impossible without escape sequences. This method
|
||||
is a no-op — it discards all arguments and returns ~(values)~.
|
||||
|
||||
#+BEGIN_SRC lisp :tangle ../src/backend/simple.lisp
|
||||
#+BEGIN_SRC lisp :tangle ~/.local/share/cl-tty/src/backend/simple.lisp
|
||||
(defmethod draw-rect ((b simple-backend) x y width height
|
||||
&key bg)
|
||||
(declare (ignore x y width height bg))
|
||||
@@ -1001,7 +1001,7 @@ Hyperlinks fall back to plain text on the simple backend. The URL
|
||||
parameter is discarded entirely; the visible text is rendered via
|
||||
~draw-text~ with no styling.
|
||||
|
||||
#+BEGIN_SRC lisp :tangle ../src/backend/simple.lisp
|
||||
#+BEGIN_SRC lisp :tangle ~/.local/share/cl-tty/src/backend/simple.lisp
|
||||
(defmethod draw-link ((b simple-backend) x y string url
|
||||
&key fg bg)
|
||||
(declare (ignore url fg bg))
|
||||
@@ -1014,7 +1014,7 @@ Renders "..." using the simple backend's positioning pattern:
|
||||
newlines to reach the target row, spaces to reach the target column,
|
||||
then the literal three dots. No escape sequences are used.
|
||||
|
||||
#+BEGIN_SRC lisp :tangle ../src/backend/simple.lisp
|
||||
#+BEGIN_SRC lisp :tangle ~/.local/share/cl-tty/src/backend/simple.lisp
|
||||
(defmethod draw-ellipsis ((b simple-backend) x y width
|
||||
&key fg bg)
|
||||
(declare (ignore width fg bg))
|
||||
|
||||
Reference in New Issue
Block a user