v1.0.0 review fixes: dialog, textarea, scrollbox, demo, ASDF, layout
Fixes from subagent code review (15 findings): CRITICAL runtime bugs: - dialog.lisp: backend-write calls -> draw-rect/draw-text (wrong arg count) - dialog.lisp: removed undefined render-component call - dialog.lisp: toast render backend-write -> draw-text MAJOR data loss / silent failures: - textarea.lisp: undo overflow now drops oldest entry instead of wiping stack - scrollbox.lisp: :background-element -> :bright-black (theme keyword never resolved) ASDF completeness: - modern-tests.lisp wired as component and test-op suite - layout tests added to test-op suite list - markdown suite lookup now uses keyword (was looking up wrong string) - test runner updated to match API cleanup: - container-package: removed duplicate render export - select-package: removed duplicate render export - markdown.lisp: #\Escape -> #\Esc for consistency - textarea.lisp: removed duplicate %split-string defn Demo robustness: - Added unwind-protect for guaranteed terminal cleanup - Uses make-modern-backend constructor - Uses set-raw-mode/restore-terminal-state Layout: - normalize-box handles partial padding specs (was returning all zeros)
This commit is contained in:
@@ -1,16 +1,5 @@
|
||||
(in-package #:cl-tty.input)
|
||||
|
||||
;;; ---------------------------------------------------------------------------
|
||||
;;; Utility: split string (local copy for dependency-free operation)
|
||||
;;; ---------------------------------------------------------------------------
|
||||
(defun %split-string (string separator)
|
||||
"Split STRING at each occurrence of SEPARATOR. Returns list of strings."
|
||||
(loop with start = 0
|
||||
for pos = (position separator string :start start)
|
||||
collect (subseq string start pos)
|
||||
while pos
|
||||
do (setf start (1+ pos))))
|
||||
|
||||
;;; ---------------------------------------------------------------------------
|
||||
;;; Textarea class
|
||||
;;; ---------------------------------------------------------------------------
|
||||
@@ -169,10 +158,10 @@
|
||||
"Save current value on undo stack."
|
||||
(let ((stack (textarea-undo-stack ta)))
|
||||
(when (>= (length stack) (array-total-size stack))
|
||||
(setf (textarea-undo-stack ta)
|
||||
(make-array 100 :fill-pointer 0)))
|
||||
(loop for i from 1 below (length stack)
|
||||
do (setf (aref stack (1- i)) (aref stack i)))
|
||||
(decf (fill-pointer stack)))
|
||||
(vector-push (textarea-value ta) stack)
|
||||
;; Clear redo stack on new action
|
||||
(setf (fill-pointer (textarea-redo-stack ta)) 0)))
|
||||
|
||||
(defun textarea-undo (ta)
|
||||
|
||||
Reference in New Issue
Block a user