v0.8.0: Markdown + Code + Diff rendering module

Add cl-tui.markdown package with:
- Markdown parser: headings, paragraphs, bold, italic, inline-code, links,
  code blocks, blockquotes, lists, thematic breaks
- Syntax highlighting: Lisp, Python, JavaScript, Bash with keyword,
  builtin, comment, number, function coloring
- Diff renderer: colorized unified diff (+/-/@ lines)
- Terminal renderer: ANSI escape sequences via backend-style functions
- 67 tests, 100% passing
- All parser helpers use values returns (not cons) for multiple-value-bind

ASDF: v0.7.0 -> v0.8.0, new markdown module + test suite
This commit is contained in:
Hermes
2026-05-11 18:26:34 +00:00
parent e96c338a57
commit 9648c72b85
5 changed files with 1461 additions and 5 deletions

View File

@@ -2,7 +2,7 @@
(asdf:defsystem :cl-tui
:description "Reusable Common Lisp Terminal UI Framework"
:author "Amr Gharbeia"
:version "0.7.0"
:version "0.8.0"
:license "TBD"
:depends-on (:fiveam :sb-posix)
:components
@@ -35,7 +35,10 @@
(:file "tabbar" :depends-on ("container-package" "dirty" "box"))
;; Select widget (v0.7.0)
(:file "select-package" :depends-on ("package" "input-package"))
(:file "select" :depends-on ("select-package" "dirty" "box"))))
(:file "select" :depends-on ("select-package" "dirty" "box"))
;; Markdown + Code + Diff rendering (v0.8.0)
(:file "markdown-package" :depends-on ("package"))
(:file "markdown" :depends-on ("markdown-package"))))
:in-order-to ((test-op (test-op :cl-tui-tests))))
(asdf:defsystem :cl-tui-tests
@@ -56,13 +59,15 @@
(:file "theme-tests")
(:file "input-tests")
(:file "scrollbox-tabbar-tests" :pathname "../../tests/scrollbox-tabbar-tests.lisp")
(:file "select-tests" :pathname "../../tests/select-tests.lisp"))))
(:file "select-tests" :pathname "../../tests/select-tests.lisp")
(:file "markdown-tests" :pathname "../../tests/markdown-tests.lisp"))))
:perform (test-op (o c)
(dolist (suite '((:cl-tui-backend-test "BACKEND-SUITE")
(dolist (suite '((:cl-tui-backend-test "BACKEND-SUITE")
(:cl-tui-box-test "BOX-SUITE")
(:cl-tui-input-test "INPUT-SUITE")
(:cl-tui-scrollbox-test "SCROLLBOX-SUITE")
(:cl-tui-select-test "SELECT-SUITE")))
(:cl-tui-select-test "SELECT-SUITE")
(:cl-tui-markdown-test "MARKDOWN-SUITE")))
(let* ((pkg (find-package (first suite)))
(s (and pkg (find-symbol (second suite) pkg))))
(when s