v0.12.0: Terminal capability detection, GPL 3.0 license, roadmap rewrite
LICENSE: - Added GNU General Public License v3.0 - Updated README.org to reflect GPL 3.0 ROADMAP: - Complete rewrite to reflect actual project state - Removed croatoan/ncurses/Yoga FFI references - Marked all 11 existing versions DONE - Added v0.12.0-0.14.0 for new features (detection, pipeline, mouse) DETECTION (v0.12.0): - detect-backend: auto-detect modern vs simple backend - detect-backend-by-env: check COLORTERM env var - detect-backend-by-tty: check interactive-stream-p - detect-backend-by-da1: query terminal via ESC[c (best-effort) - *detected-backend* cache for zero-cost subsequent calls - Added detection.lisp to ASDF and package exports - Added 2 new tests (360 total, all passing) - demo.lisp updated to use detect-backend ORG BACKPORT (pre-existing fixes synced): - dialog.org: render-dialog/render-toast fixes, class initforms - scrollbox-tabbar.org: background-element -> bright-black, remove duplicate render - select.org: remove duplicate render export - text-input.org: remove duplicate %split-string, undo overflow fix - layout-engine.org: quoted-literal -> list constructors, normalize-box rewrite - mouse.org: add missing exports, fix test
This commit is contained in:
@@ -337,11 +337,11 @@ means a full Yoga FFI binding is unnecessary — ~200 lines of CL math.
|
||||
(justify-content :initform :flex-start :initarg :justify-content
|
||||
:accessor layout-node-justify-content)
|
||||
;; Box model
|
||||
(padding :initform '(:top 0 :right 0 :bottom 0 :left 0)
|
||||
(padding :initform (list :top 0 :right 0 :bottom 0 :left 0)
|
||||
:initarg :padding :accessor layout-node-padding)
|
||||
(margin :initform '(:top 0 :right 0 :bottom 0 :left 0)
|
||||
(margin :initform (list :top 0 :right 0 :bottom 0 :left 0)
|
||||
:initarg :margin :accessor layout-node-margin)
|
||||
(border :initform '(:top 0 :right 0 :bottom 0 :left 0)
|
||||
(border :initform (list :top 0 :right 0 :bottom 0 :left 0)
|
||||
:initarg :border :accessor layout-node-border)
|
||||
(gap :initform 0 :initarg :gap :accessor layout-node-gap)
|
||||
;; Position
|
||||
@@ -383,10 +383,12 @@ means a full Yoga FFI binding is unnecessary — ~200 lines of CL math.
|
||||
|
||||
(defun normalize-box (spec)
|
||||
"Convert a box property spec to ( :top N :right N :bottom N :left N )."
|
||||
(cond ((null spec) '(:top 0 :right 0 :bottom 0 :left 0))
|
||||
((numberp spec) `(:top ,spec :right ,spec :bottom ,spec :left ,spec))
|
||||
((getf spec :top) spec)
|
||||
(t `(:top 0 :right 0 :bottom 0 :left 0))))
|
||||
(cond ((null spec) (list :top 0 :right 0 :bottom 0 :left 0))
|
||||
((numberp spec) (list :top spec :right spec :bottom spec :left spec))
|
||||
(t (loop with result = (list :top 0 :right 0 :bottom 0 :left 0)
|
||||
for (key val) on spec by #'cddr
|
||||
do (setf (getf result key) val)
|
||||
finally (return result)))))
|
||||
#+END_SRC
|
||||
|
||||
*** Tree Manipulation
|
||||
|
||||
Reference in New Issue
Block a user