git.fiddlerwoaroof.com
Browse code

feat: adjust indent formatter to word-wrap and indent nicely

Edward Langley authored on 23/10/2022 23:02:35
Showing 1 changed files
... ...
@@ -45,13 +45,26 @@
45 45
   ((%level :initarg :level :accessor level :initform 0)))
46 46
 
47 47
 (defmethod format-title ((formatter indent-formatter) (title string))
48
-  (format nil "+ Title: ~a" title))
48
+  (format nil "~v,1,0,'*a Title: ~a" (1+ (level formatter)) "" title))
49 49
 
50 50
 (defmethod format-link ((formatter indent-formatter) (link string))
51
-  (format nil "  Link: ~a" link))
51
+  (format nil "~vt Link: ~a" (1+ (level formatter)) link))
52
+
53
+
54
+(defun pp-fill (stream string &optional (colon? t) atsign?)
55
+  (declare (ignore atsign?))
56
+  (pprint-logical-block (stream (tokens string)
57
+                                :prefix (if colon? "(" "")
58
+                                :suffix (if colon? ")" ""))
59
+    (pprint-exit-if-list-exhausted)
60
+    (loop
61
+      (princ (pprint-pop) stream)
62
+      (pprint-exit-if-list-exhausted)
63
+      (write-char #\space stream)
64
+      (pprint-newline :fill stream))))
52 65
 
53 66
 (defmethod format-paragraph ((formatter indent-formatter) (paragraph string))
54
-  (format nil "~&~v,4@t  ~a~%" (level formatter) paragraph))
67
+  (format nil "~&~v,4@t  ~/alimenta.format::pp-fill/~%" (level formatter) paragraph))
55 68
 
56 69
 (defmethod format-paragraph ((formatter indent-formatter) (paragraph list))
57 70
   (format nil "~&~{  ~a~%~}" paragraph))