|
311 | 311 | [#:else (format-#%app doc)])) |
312 | 312 |
|
313 | 313 | ;; try to fit in one line if the body has exactly one form, |
314 | | -;; else will be multiple lines |
| 314 | +;; else will be multiple lines. if #:force-linebreak? is true, |
| 315 | +;; the one line form is never allowed. |
315 | 316 | #;(define-values (xxxxxxxxxxx yyyyyyyyyyy) 1) |
316 | 317 | #;(define-values (xxxxxxxxxxx yyyyyyyyyyy) |
317 | 318 | 11111111111111111111111111111111111111111111111111111111111111111111111) |
318 | | -(define-pretty (format-define-like #:head-formatter [format-head #f]) |
| 319 | +(define-pretty (format-define-like #:head-formatter [format-head #f] |
| 320 | + #:force-linebreak? [force-linebreak? #f]) |
319 | 321 | #:type node? |
320 | 322 | #:default [format-head pretty] |
321 | 323 | (match/extract (node-content doc) #:as unfits tail |
|
325 | 327 | c |
326 | 328 | d |
327 | 329 | e) |
328 | | - (alt ((format-uniform-body/helper 1 #:arg-formatter format-head) doc) |
329 | | - ;; fit in one line case; only when there are either two or three things |
330 | | - #;(define a b) |
331 | | - (pretty-node |
332 | | - #:unfits unfits |
333 | | - (try-indent |
334 | | - #:because-of tail |
335 | | - (flatten |
336 | | - (match tail |
337 | | - ['() (<s> (pretty -define) (format-head -head))] |
338 | | - [(list -e) (<s> (pretty -define) (format-head -head) (pretty -e))] |
339 | | - [_ fail])))))] |
| 330 | + (define general-case ((format-uniform-body/helper 1 #:arg-formatter format-head) doc)) |
| 331 | + ;; fit in one line case; only when there are either two or three things |
| 332 | + #;(define a b) |
| 333 | + (define one-line-case |
| 334 | + (pretty-node |
| 335 | + #:unfits unfits |
| 336 | + (try-indent |
| 337 | + #:because-of tail |
| 338 | + (flatten |
| 339 | + (match tail |
| 340 | + ['() (<s> (pretty -define) (format-head -head))] |
| 341 | + [(list -e) (<s> (pretty -define) (format-head -head) (pretty -e))] |
| 342 | + [_ fail]))))) |
| 343 | + (if force-linebreak? general-case (alt general-case one-line-case))] |
340 | 344 | [#:else (format-#%app doc)])) |
341 | 345 |
|
342 | 346 | ;; this is similar to let*, but because the macro name is so long, |
|
452 | 456 |
|
453 | 457 | [("define") (format-define)] |
454 | 458 | [("define-for-syntax") (format-define-like)] |
455 | | - [("define-syntax-rule") (format-define-like)] |
| 459 | + [("define-syntax-rule") (format-define-like #:force-linebreak? #true)] |
456 | 460 | [("define-syntax") (format-define-like)] |
457 | 461 | [("define-syntax-parameter") (format-define-like)] |
458 | 462 | [("define/public" "define/private" "define/override" "define/augment") (format-define-like)] |
|
0 commit comments