diff --git a/quad/qtest/fark.rkt b/quad/qtest/fark.rkt index f13c5d03..3419f884 100644 --- a/quad/qtest/fark.rkt +++ b/quad/qtest/fark.rkt @@ -1,10 +1,5 @@ #lang qtest/markdown -hello world hello world hello world hello world hello world hello world hello world +hello -> hello world hello world hello world hello world hello world hello world hello world - -``` -hello world hello world -hello world -``` \ No newline at end of file +> world \ No newline at end of file diff --git a/quad/qtest/markdown.rkt b/quad/qtest/markdown.rkt index 570a8635..4c388802 100644 --- a/quad/qtest/markdown.rkt +++ b/quad/qtest/markdown.rkt @@ -233,7 +233,7 @@ (wrap xs (λ (q idx) (- wrap-size (quad-ref q 'inset-left 0) (quad-ref q 'inset-right 0))) - #:nicely #f + #:nicely #t #:hard-break line-break? #:soft-break soft-break-for-line? ;; restart wrap count after each paragraph break @@ -442,7 +442,7 @@ naive approach works but: ;; could do it after, but it would require going back inside each page quad ;; which seems overly interdependent, because `insert-blocks` is used to determine break locations. ;; `page-wrap` should emit quads that are complete. - (wrap xs vertical-height + (wrap #R xs vertical-height #:soft-break (λ (q) #true) #:no-break (λ (q) (quad-ref q 'no-pbr)) #:distance (λ (q dist-so-far wrap-qs) diff --git a/quad/quad/wrap.rkt b/quad/quad/wrap.rkt index bb3f5d86..fc0eb56d 100644 --- a/quad/quad/wrap.rkt +++ b/quad/quad/wrap.rkt @@ -12,15 +12,6 @@ (define (nonprinting-at-end? x) (not (printable? x 'end))) (define (default-finish-wrap-func wrap-qs q0 q idx) (list wrap-qs)) -(define ((make-finish-wrap finish-wrap-func) qs previous-wrap-ender wrap-idx [wrap-triggering-q (car qs)]) - ;; reverse because quads accumulated in reverse - ;; wrap-triggering-q is ordinarily the last accumulated q - ;; unless it's the last wrap, in which case it's #f - ;; but we capture it separately because it's likely to get trimmed away by `nonprinting-at-end?` - ;; note: we don't trim `soft-break?` or `hard-break?` because that's an orthogonal consideration - ;; for instance, a hyphen is `soft-break?` but shouldn't be trimmed. - (finish-wrap-func (reverse (dropf qs nonprinting-at-end?)) previous-wrap-ender wrap-triggering-q wrap-idx)) - (define (finalize-reversed-wraps wraps) (match (append* (reverse wraps)) [(list (list)) (list)] @@ -62,7 +53,15 @@ [(? procedure? proc) proc] [val (λ (q idx) val)])) ; takes quads in wrap, triggering quad, and wrap idx; returns list containing wrap (and maybe other things) - (define finish-wrap (make-finish-wrap finish-wrap-func)) + (define (finish-wrap qs previous-wrap-ender wrap-idx [wrap-triggering-q (car qs)]) + ;; reverse because quads accumulated in reverse + ;; wrap-triggering-q is ordinarily the last accumulated q + ;; unless it's the last wrap, in which case it's #f + ;; but we capture it separately because it's likely to get trimmed away by `nonprinting-at-end?` + ;; note: we don't trim `soft-break?` or `hard-break?` because that's an orthogonal consideration + ;; for instance, a hyphen is `soft-break?` but shouldn't be trimmed. + (finish-wrap-func (reverse (dropf qs nonprinting-at-end?)) previous-wrap-ender wrap-triggering-q wrap-idx)) + (wrap-proc qs max-distance-proc debug hard-break? soft-break? finish-wrap wrap-count distance-func initial-wrap-idx)) (define (wrap-first qs max-distance-proc debug hard-break? soft-break? finish-wrap wrap-count distance-func initial-wrap-idx)