dotemacs

My Emacs configuration
git clone git://git.entf.net/dotemacs
Log | Files | Refs | LICENSE

sly-cl-indent-test.txt (18857B)


      1 ;;;; -*- mode: lisp -*-
      2 ;;;;
      3 ;;;; This file is .txt, because it's not meant to be evaluated.
      4 ;;;; common-lisp-run-indentation-tests in sly-cl-ident.el
      5 ;;;; parses this and runs the specified tests.
      6 
      7 ;;; Test: indent-1
      8 
      9 (defun foo ()
     10   t)
     11 
     12 ;;; Test: indent-2
     13 ;;
     14 ;; sly-lisp-lambda-list-keyword-parameter-alignment: nil
     15 ;; sly-lisp-lambda-list-keyword-alignment: nil
     16 
     17 (defun foo (foo &optional opt1
     18                   opt2
     19             &rest rest)
     20   (list foo opt1 opt2
     21         rest))
     22 
     23 ;;; Test: indent-3
     24 ;;
     25 ;; sly-lisp-lambda-list-keyword-parameter-alignment: t
     26 ;; sly-lisp-lambda-list-keyword-alignment: nil
     27 
     28 (defun foo (foo &optional opt1
     29                           opt2
     30             &rest rest)
     31   (list foo opt1 opt2
     32         rest))
     33 
     34 ;;; Test: indent-4
     35 ;;
     36 ;; sly-lisp-lambda-list-keyword-parameter-alignment: nil
     37 ;; sly-lisp-lambda-list-keyword-alignment: t
     38 
     39 (defun foo (foo &optional opt1
     40                   opt2
     41                 &rest rest)
     42   (list foo opt1 opt2
     43         rest))
     44 
     45 ;;; Test: indent-5
     46 ;;
     47 ;; sly-lisp-lambda-list-keyword-parameter-alignment: t
     48 ;; sly-lisp-lambda-list-keyword-alignment: t
     49 
     50 (defun foo (foo &optional opt1
     51                           opt2
     52                 &rest rest)
     53   (list foo opt1 opt2
     54         rest))
     55 
     56 ;;; Test: indent-6
     57 ;;
     58 ;; sly-lisp-lambda-list-keyword-parameter-alignment: nil
     59 ;; sly-lisp-lambda-list-keyword-alignment: nil
     60 
     61 (defmacro foo ((foo &optional opt1
     62                       opt2
     63                 &rest rest))
     64   (list foo opt1 opt2
     65         rest))
     66 
     67 ;;; Test: indent-7
     68 ;;
     69 ;; sly-lisp-lambda-list-keyword-parameter-alignment: t
     70 ;; sly-lisp-lambda-list-keyword-alignment: nil
     71 
     72 (defmacro foo ((foo &optional opt1
     73                               opt2
     74                 &rest rest))
     75   (list foo opt1 opt2
     76         rest))
     77 
     78 ;;; Test: indent-8
     79 ;;
     80 ;; sly-lisp-lambda-list-keyword-parameter-alignment: nil
     81 ;; sly-lisp-lambda-list-keyword-alignment: t
     82 
     83 (defmacro foo ((foo &optional opt1
     84                       opt2
     85                     &rest rest))
     86   (list foo opt1 opt2
     87         rest))
     88 
     89 ;;; Test: indent-9
     90 ;;
     91 ;; sly-lisp-lambda-list-keyword-parameter-alignment: t
     92 ;; sly-lisp-lambda-list-keyword-alignment: t
     93 
     94 (defmacro foo ((foo &optional opt1
     95                               opt2
     96                     &rest rest))
     97   (list foo opt1 opt2
     98         rest))
     99 
    100 ;;; Test: indent-10
    101 
    102 (let ((x y)
    103       (foo #-foo (no-foo)
    104            #+foo (yes-foo))
    105       (bar #-bar
    106            (no-bar)
    107            #+bar
    108            (yes-bar)))
    109   (list foo bar
    110         x))
    111 
    112 ;;; Test: indent-11
    113 ;;
    114 ;; sly-lisp-loop-indent-subclauses: t
    115 
    116 (loop for i from 0 below 2
    117       for j from 0 below 2
    118       when foo
    119         do (fubar)
    120            (bar)
    121            (moo)
    122         and collect cash
    123               into honduras
    124       else do ;; this is the body of the first else
    125               ;; the body is ...
    126               (indented to the above comment)
    127               (ZMACS gets this wrong)
    128            and do this
    129            and do that
    130            and when foo
    131                  do the-other
    132                  and cry
    133       when this-is-a-short-condition do
    134         (body code of the when)
    135       when here's something I used to botch do (here is a body)
    136                                                (rest of body indented same)
    137       do
    138          (exdented loop body)
    139          (I'm not sure I like this but it's compatible)
    140       when funny-predicate do ;; Here's a comment
    141                               (body filled to comment))
    142 
    143 ;;; Test: indent-12
    144 
    145 (defun foo (x)
    146   (tagbody
    147    foo
    148      (bar)
    149    baz
    150      (when (losing)
    151        (with-big-loser
    152            (yow)
    153          ((lambda ()
    154             foo)
    155           big)))
    156      (flet ((foo (bar baz zap)
    157               (zip))
    158             (zot ()
    159               quux))
    160        (do ()
    161            ((lose)
    162             (foo 1))
    163          (quux)
    164         foo
    165          (lose))
    166        (cond ((x)
    167               (win 1 2
    168                    (foo)))
    169              (t
    170               (lose
    171                3))))))
    172 
    173 ;;; Test: indent-13
    174 
    175 (if* (eq t nil)
    176    then ()
    177         ()
    178  elseif (dsf)
    179 thenret x
    180    else (balbkj)
    181         (sdf))
    182 
    183 ;;; Test: indent-14
    184 
    185 (list foo #+foo (foo)
    186           #-foo (no-foo))
    187 
    188 ;;; Test: indent-15
    189 ;;
    190 ;; sly-lisp-loop-indent-subclauses: t
    191 
    192 (loop for x in foo1
    193       for y in quux1
    194       )
    195 
    196 ;;; Test: indent-16
    197 ;;
    198 ;; sly-lisp-loop-indent-subclauses: nil
    199 
    200 (loop for x in foo1
    201       for y in quux1
    202       )
    203 
    204 ;;; Test: indent-17
    205 ;;
    206 ;; sly-lisp-loop-indent-subclauses: nil
    207 ;; sly-lisp-loop-indent-forms-like-keywords: t
    208 
    209 (loop for x in foo
    210       for y in quux
    211       finally (foo)
    212               (fo)
    213               (zoo)
    214       do
    215       (print x)
    216       (print y)
    217       (print 'ok!))
    218 
    219 ;;; Test: indent-18
    220 ;;
    221 ;; sly-lisp-loop-indent-subclauses: nil
    222 ;; sly-lisp-loop-indent-forms-like-keywords: nil
    223 
    224 (loop for x in foo
    225       for y in quux
    226       finally (foo)
    227               (fo)
    228               (zoo)
    229       do
    230          (print x)
    231          (print y)
    232          (print 'ok!))
    233 
    234 ;;; Test: indent-19
    235 ;;
    236 ;; sly-lisp-loop-indent-subclauses: t
    237 ;; sly-lisp-loop-indent-forms-like-keywords: nil
    238 
    239 (loop for x in foo
    240       for y in quux
    241       finally (foo)
    242               (fo)
    243               (zoo)
    244       do
    245          (print x)
    246          (print y)
    247          (print 'ok!))
    248 
    249 ;;; Test: indent-20
    250 ;;
    251 ;; sly-lisp-loop-indent-subclauses: nil
    252 ;; sly-lisp-loop-indent-forms-like-keywords: nil
    253 
    254 (loop for f in files
    255       collect (open f
    256                     :direction :output)
    257       do (foo) (bar)
    258          (quux))
    259 
    260 ;;; Test: indent-21
    261 ;;
    262 ;; sly-lisp-loop-indent-subclauses: t
    263 
    264 (loop for f in files
    265       collect (open f
    266                     :direction :output)
    267       do (foo) (bar)
    268          (quux))
    269 
    270 ;;; Test: indent-22
    271 
    272 (defsetf foo bar
    273   "the doc string")
    274 
    275 ;;; Test: indent-23
    276 
    277 (defsetf foo
    278     bar
    279   "the doc string")
    280 
    281 ;;; Test: indent-24
    282 ;;
    283 ;; sly-lisp-lambda-list-keyword-parameter-alignment: t
    284 
    285 (defsetf foo (x y &optional a
    286                             z)
    287     (a b c)
    288   stuff)
    289 
    290 ;;; Test: indent-25
    291 ;;
    292 ;; sly-lisp-align-keywords-in-calls: t
    293 
    294 (make-instance 'foo :bar t :quux t
    295                     :zot t)
    296 
    297 ;;; Test: indent-26
    298 ;;
    299 ;; sly-lisp-align-keywords-in-calls: nil
    300 
    301 (make-instance 'foo :bar t :quux t
    302                :zot t)
    303 
    304 ;;; Test: indent-27
    305 ;;
    306 ;; sly-lisp-lambda-list-indentation: nil
    307 
    308 (defun example (a b &optional o1 o2
    309                 o3 o4
    310                 &rest r
    311                 &key k1 k2
    312                 k3 k4)
    313   'hello)
    314 
    315 ;;; Test: indent-28
    316 ;;
    317 ;; sly-lisp-lambda-list-keyword-parameter-alignment: t
    318 ;; sly-lisp-lambda-list-keyword-alignment: t
    319 
    320 (destructuring-bind (foo &optional x
    321                                    y
    322                          &key bar
    323                               quux)
    324     foo
    325   body)
    326 
    327 ;;; Test: indent-29
    328 ;;
    329 ;; sly-lisp-lambda-list-keyword-parameter-alignment: t
    330 ;; sly-lisp-lambda-list-keyword-alignment: t
    331 
    332 (named-lambda foo
    333     (x &optional y
    334                  z
    335        &rest more)
    336   body)
    337 
    338 ;;; Test: indent-30
    339 
    340 (foo fii
    341      (or x
    342          y) t
    343      bar)
    344 
    345 ;;; Test: indent-31
    346 
    347 (foo
    348  (bar))
    349 
    350 ;;; Test: indent-32
    351 ;;
    352 ;; comment-indent-function: (lambda () nil)
    353 ;; comment-column: nil
    354 
    355 (unknown (;; KLUDGE: comment-indent hackery to get
    356           ;; the comment right. Otherwise we get a
    357           ;; space before the first ;.
    358           bar quux
    359           zot)
    360          (#|fii|#
    361           zot)
    362          (
    363           quux))
    364 
    365 ;;; Test: indent-33
    366 
    367 (complex-indent.1 ((x z
    368                     f
    369                     ((fox foo
    370                           foo))
    371                     :note (ding bar quux
    372                                 zot)
    373                     :wait (this! is
    374                                  a funcall))
    375                     ;; Not 100% sure this should not be a step left.
    376                     (abbb)
    377                     (abb))
    378   (bodyform)
    379   (another))
    380 
    381 ;;; Test: indent-34
    382 
    383 (complex-indent.2 (bar quux
    384                        zot)
    385     (a b
    386      c d)
    387   (form1)
    388   (form2))
    389 
    390 ;;; Test: indent-35
    391 
    392 (complex-indent.3 (:wait fii
    393                          (this is
    394                                a funcall))
    395   (bodyform)
    396   (another))
    397 
    398 ;;; Test: indent-36
    399 
    400 (defmacro foo (body)
    401   `(let (,@(stuff)
    402          ,(more-stuff)
    403          ,(even-more)
    404          (foo foo))
    405      ,@bofy))
    406 
    407 ;;; Test: indent-37
    408 
    409 (defun foo ()
    410   `(list foo bar
    411          ,@(quux fo
    412                  foo)))
    413 
    414 ;;; Test: indent-38
    415 
    416 (defmacro foofoo (body)
    417   `(foo
    418     `(let (,',@,(stuff)
    419            ,(more-stuff)
    420            ,(even-more)
    421            (foo foo))
    422        ,@bofy)))
    423 
    424 ;;; Test: indent-39
    425 ;;
    426 ;; sly-lisp-lambda-list-keyword-parameter-alignment: t
    427 ;; sly-lisp-lambda-list-keyword-alignment: t
    428 
    429 (defstruct (foo (:constructor make-foo (&optional bar
    430                                                   quux
    431                                         &key zot
    432                                              fii)))
    433   bar
    434   quux
    435   zot
    436   fii)
    437 
    438 ;;; Test: indent-40
    439 ;;
    440 ;; sly-lisp-lambda-list-keyword-parameter-alignment: t
    441 ;; sly-lisp-lambda-list-keyword-alignment: t
    442 
    443 (defmethod foo :around (zot &key x
    444                                  y)
    445   (list zot))
    446 
    447 ;;; Test: indent-41
    448 ;;
    449 ;; sly-lisp-lambda-list-keyword-parameter-alignment: t
    450 ;; sly-lisp-lambda-list-keyword-alignment: t
    451 
    452 (progn
    453   (defmethod foo :around (fii &key x
    454                                    y)
    455     (list fii)))
    456 
    457 ;;; Test: indent-42
    458 ;;
    459 ;; sly-lisp-lambda-list-keyword-parameter-alignment: t
    460 ;; sly-lisp-lambda-list-keyword-alignment: t
    461 
    462 (progn
    463   (defgeneric foo (x y &optional a
    464                                  b)
    465     (:method :around (a b &optional x
    466                                     y)
    467       (list a b x y))))
    468 
    469 ;;; Test: indent-43
    470 ;;
    471 ;; sly-lisp-lambda-list-keyword-parameter-alignment: t
    472 ;; sly-lisp-lambda-list-keyword-alignment: t
    473 
    474 (defgeneric foo (x &optional a b)
    475   (:method (x y &optional a
    476                           b)
    477     (list x y a b)))
    478 
    479 ;;; Test: indent-44
    480 
    481 (let (definer
    482       foo
    483       bar
    484       quux)
    485   ...)
    486 
    487 ;;; Test: indent-45
    488 
    489 (let (definition
    490       foo
    491       bar
    492       quux)
    493   ...)
    494 
    495 ;;; Test: indent-46
    496 
    497 (let (foo bar
    498       quux)
    499   ...)
    500 
    501 ;;; Test: indent-47
    502 
    503 (with-compilation-unit
    504     (:foo t
    505      :quux nil)
    506   ...)
    507 
    508 ;;; Test: indent-48
    509 
    510 (cond
    511   ((> x y) (foo)
    512    ;; This isn't ideal -- I at least would align with (FOO here.
    513    (bar) (quux)
    514    (zot))
    515   (qux (foo)
    516        (bar)
    517        (zot))
    518   (zot
    519    (foo)
    520    (foo2))
    521   (t (foo)
    522      (bar)))
    523 
    524 ;;; Test: indent-49
    525 
    526 (cond ((> x y) (foo)
    527        ;; This isn't ideal -- I at least would align with (FOO here.
    528        (bar))
    529       (qux (foo)
    530            (bar))
    531       (zot
    532        (foo))
    533       (t (foo)
    534          (bar)))
    535 
    536 ;;; Test: indent-50
    537 ;;
    538 ;; sly-lisp-lambda-list-keyword-parameter-alignment: nil
    539 ;; sly-lisp-lambda-list-keyword-alignment: nil
    540 
    541 (defun foo (x &optional opt1
    542                 opt2
    543             &rest rest
    544             &allow-other-keys)
    545   (list opt1 opt2
    546         rest))
    547 
    548 ;;; Test: indent-51
    549 ;;
    550 ;; sly-lisp-lambda-list-keyword-parameter-alignment: t
    551 ;; sly-lisp-lambda-list-keyword-alignment: nil
    552 
    553 (defun foo (x &optional opt1
    554                         opt2
    555             &rest rest
    556             &allow-other-keys)
    557   (list opt1 opt2
    558         rest))
    559 
    560 ;;; Test: indent-52
    561 ;;
    562 ;; sly-lisp-lambda-list-keyword-parameter-alignment: nil
    563 ;; sly-lisp-lambda-list-keyword-alignment: t
    564 
    565 (defun foo (x &optional opt1
    566                 opt2
    567               &rest rest
    568               &allow-other-keys)
    569   (list opt1 opt2
    570         rest))
    571 
    572 ;;; Test: indent-53
    573 ;;
    574 ;; sly-lisp-lambda-list-keyword-parameter-alignment: t
    575 ;; sly-lisp-lambda-list-keyword-alignment: t
    576 
    577 (defun foo (x &optional opt1
    578                         opt2
    579               &rest rest
    580               &allow-other-keys)
    581   (list opt1 opt2
    582         rest))
    583 
    584 ;;; Test: indent-54
    585 ;;
    586 
    587 (loop (foo)
    588       ;; comment
    589       (bar)
    590       (quux))
    591 
    592 ;;; Test: indent-55
    593 ;;
    594 
    595 (loop ;; comment
    596       (foo)
    597       (bar))
    598 
    599 ;;; Test: indent-56
    600 ;;
    601 
    602 (loop
    603   (foo)
    604   ;; comment
    605   (bar))
    606 
    607 
    608 ;;; Test: indent-57
    609 ;;
    610 
    611 (loop
    612   ;; comment
    613   (foo)
    614   (bar))
    615 
    616 ;;; Test: indent-58
    617 ;;
    618 ;; sly-lisp-loop-indent-subclauses: t
    619 
    620 (loop ;; comment at toplevel of the loop
    621       with foo = t
    622       do (foo foo)
    623          (foo))
    624 
    625 ;;; Test: indent-59
    626 ;;
    627 ;; sly-lisp-loop-indent-subclauses: nil
    628 
    629 (loop ;; comment at toplevel of the loop
    630       with foo = t
    631       do (foo foo)
    632          (foo))
    633 
    634 ;;; Test: indent-60
    635 ;;
    636 ;; sly-lisp-loop-indent-subclauses: t
    637 ;; sly-indentation--test-function: indent-region
    638 
    639 (loop
    640   ;; comment at toplevel of the loop
    641   with foo = t
    642   do (foo foo))
    643 
    644 ;;; Test: indent-61
    645 ;;
    646 ;; sly-lisp-loop-indent-subclauses: nil
    647 
    648 (loop
    649   ;; comment at toplevel of the loop
    650   with foo = t
    651   do (foo foo)
    652      (foo))
    653 
    654 ;;; Test: indent-62
    655 ;;
    656 ;; sly-lisp-loop-indent-subclauses: t
    657 
    658 (loop with foo = t
    659       do (foo foo)
    660          ;; comment inside clause
    661          (bar))
    662 
    663 ;;; Test: indent-63
    664 ;;
    665 ;; sly-lisp-loop-indent-subclauses: nil
    666 
    667 (loop with foo = t
    668       do (foo foo)
    669          ;; comment inside clause
    670          (bar))
    671 
    672 
    673 ;;; Test: indent-64
    674 ;;
    675 ;; sly-lisp-lambda-list-keyword-parameter-alignment: t
    676 ;; sly-lisp-lambda-list-keyword-alignment: t
    677 
    678 (defmethod (setf foo) :around (zot &key x
    679                                         y)
    680   (list zot))
    681 
    682 ;;; Test: indent-65
    683 ;;
    684 ;; sly-lisp-lambda-list-keyword-parameter-alignment: t
    685 ;; sly-lisp-lambda-list-keyword-alignment: t
    686 
    687 (defmethod (setf foo)
    688     :around (zot &key x y)
    689   (list zot))
    690 
    691 ;;; Test: indent-66
    692 ;;
    693 
    694 (define-condition
    695       foo
    696     (bar quux
    697      zot)
    698   ()
    699   (:report "foo"))
    700 
    701 ;;; Test: indent-67
    702 ;;
    703 
    704 (defclass
    705       foo
    706     (bar quxx
    707      xoo)
    708   ()
    709   (:metaclass foo-class))
    710 
    711 
    712 ;;; Test: indent-68
    713 ;;
    714 ;; sly-lisp-loop-indent-subclauses: nil
    715 ;; sly-indentation--test-function: indent-region
    716 
    717 (progn
    718   (loop
    719     repeat 1000
    720     do ;; This is the
    721        ;; beginning
    722        (foo))
    723   (loop repeat 100 ;; This too
    724                    ;; is a beginning
    725         do (foo)))
    726 
    727 ;;; Test: indent-69
    728 ;;
    729 ;; sly-lisp-loop-indent-subclauses: t
    730 
    731 (progn
    732   (loop
    733     repeat 1000
    734     do ;; This is the
    735        ;; beginning
    736        (foo))
    737   (loop repeat 100 ;; This too
    738                    ;; is a beginning
    739         do (foo)))
    740 
    741 ;;; Test: indent-70
    742 ;;
    743 ;; sly-lisp-loop-indent-subclauses: nil
    744 
    745 (progn
    746   (loop
    747     :repeat 1000
    748     #:do ;; This is the
    749          ;; beginning
    750        (foo))
    751   (loop #:repeat 100 ;; This too
    752                      ;; is a beginning
    753         :do (foo)))
    754 
    755 ;;; Test: indent-71
    756 ;;
    757 ;; sly-lisp-loop-indent-subclauses: t
    758 
    759 (progn
    760   (loop
    761     #:repeat 1000
    762     #:do ;; This is the
    763          ;; beginning
    764          (foo))
    765   (loop :repeat 100 ;; This too
    766                     ;; is a beginning
    767         #:do (foo)))
    768 
    769 ;;; Test: indent-72
    770 ;;
    771 ;; sly-lisp-lambda-list-keyword-parameter-alignment: nil
    772 ;; sly-lisp-lambda-list-keyword-alignment: nil
    773 
    774 (flet ((foo (foo &optional opt1
    775                    opt2
    776              &rest rest)
    777          (list foo opt1 opt2
    778                rest)))
    779   ...)
    780 
    781 ;;; Test: indent-73
    782 ;;
    783 ;; sly-lisp-lambda-list-keyword-parameter-alignment: t
    784 ;; sly-lisp-lambda-list-keyword-alignment: nil
    785 
    786 (flet ((foo (foo &optional opt1
    787                            opt2
    788              &rest rest)
    789          (list foo opt1 opt2
    790                rest)))
    791   ...)
    792 
    793 ;;; Test: indent-74
    794 ;;
    795 ;; sly-lisp-lambda-list-keyword-parameter-alignment: nil
    796 ;; sly-lisp-lambda-list-keyword-alignment: t
    797 
    798 (flet ((foo (foo &optional opt1
    799                    opt2
    800                  &rest rest)
    801          (list foo opt1 opt2
    802                rest)))
    803   ...)
    804 
    805 ;;; Test: indent-75
    806 ;;
    807 ;; sly-lisp-lambda-list-keyword-parameter-alignment: t
    808 ;; sly-lisp-lambda-list-keyword-alignment: t
    809 
    810 (flet ((foo (foo &optional opt1
    811                            opt2
    812                  &rest rest)
    813          (list foo opt1 opt2
    814                rest)))
    815   ...)
    816 
    817 ;;; Test: indent-76
    818 ;;
    819 ;; sly-lisp-lambda-list-keyword-parameter-alignment: t
    820 ;; sly-lisp-lambda-list-keyword-alignment: t
    821 
    822 (macrolet ((foo
    823                (foo (&optional xopt1
    824                                xopt2
    825                      &rest xrest)
    826                 &optional opt1
    827                           opt2
    828                 &rest rest)
    829              (list foo opt1 opt2
    830                    rest)))
    831   ...)
    832 
    833 ;;; Test: indent-77
    834 ;;
    835 ;; sly-lisp-align-keywords-in-calls: t
    836 
    837 (foo *foo*
    838      :bar t
    839      :quux #+quux t
    840            #-quux nil
    841      :zot t)
    842 
    843 ;;; Test: indent-78
    844 ;;
    845 ;; sly-lisp-align-keywords-in-calls: t
    846 
    847 (foo *foo* :fii t
    848            :bar t
    849            :quux #+quux t
    850                  #+zot nil
    851            :zot t)
    852 
    853 ;;; Test: indent-79
    854 
    855 (foo #+quux :quux #+quux t
    856      #-quux :zoo #-quux t)
    857 
    858 ;;; Test: indent-80
    859 ;;
    860 ;; sly-lisp-align-keywords-in-calls: t
    861 
    862 (foo *foo* :fii t
    863            :bar t
    864            #+quux :quux #+quux t
    865            :zot t)
    866 
    867 ;;; Test: indent-81
    868 ;;
    869 ;; sly-lisp-align-keywords-in-calls: t
    870 
    871 (foo *foo* :fii t
    872            :bar t
    873            #+quux #+quux :quux t
    874            :zot t)
    875 
    876 ;;; Test: indent-82
    877 ;;
    878 ;; sly-lisp-align-keywords-in-calls: t
    879 
    880 (foo *foo* :fii t
    881            :bar t
    882            #+quux
    883            :quux #+quux t
    884            :zot t)
    885 
    886 ;;; Test: indent-83
    887 ;;
    888 ;; sly-lisp-align-keywords-in-calls: t
    889 
    890 (foo *foo* :fii t
    891            :bar t
    892            #+quux #+quux
    893            :quux t
    894            :zot t)
    895 
    896 ;;; Test: indent-84
    897 
    898 (and ;; Foo
    899      (something)
    900      ;; Quux
    901      (more))
    902 
    903 ;;; Test: indent-85
    904 
    905 (and      ;; Foo
    906      (something)
    907      ;; Quux
    908      (more))
    909 
    910 ;;; Test: indent-86
    911 
    912 (foo (
    913       bar quux
    914       zor))
    915 
    916 ;;; Test: indent-87
    917 ;;
    918 ;; sly-lisp-lambda-list-keyword-parameter-alignment: t
    919 ;; sly-lisp-lambda-list-keyword-alignment: t
    920 
    921 (defmacro foo ((foo &optional (opt1 (or (this)
    922                                         (that)))
    923                               (opt2 (the-default)
    924                                     opt2-p)
    925                               (opt3
    926                                (the-default (foo)
    927                                             (bar)))
    928                     &rest rest))
    929   (list foo opt1 opt2
    930         rest))
    931 
    932 ;;; Test: indent-88
    933 
    934 (defstruct (foo
    935             (:constructor make-foo
    936                 (bar &aux (quux (quux-from-bar bar
    937                                                :for 'foo)))))
    938   bar
    939   quux)
    940 
    941 ;;; Test: indent-89
    942 
    943 (define-tentative-thing foo
    944     (bar)
    945   quux)
    946 
    947 ;;; Test: indent-90
    948 
    949 (define-tentative-thing foo
    950   bar
    951   quux)
    952 
    953 ;;; Test: indent-91
    954 ;;
    955 ;; sly-lisp-loop-indent-body-forms-relative-to-loop-start: t
    956 
    957 (loop for foo in bar
    958       do
    959    (progn foo
    960           bar
    961           baz))
    962 
    963 ;;; Test: indent-92
    964 ;;
    965 ;; sly-lisp-loop-indent-body-forms-relative-to-loop-start: t
    966 ;; sly-lisp-loop-clauses-indentation: 4
    967 
    968 (loop
    969     for foo in bar
    970     do
    971    (progn foo
    972           bar
    973           baz))
    974 
    975 ;;; Test: indent-93
    976 ;;
    977 ;; sly-lisp-loop-clauses-indentation: 4
    978 
    979 (loop
    980     for foo in bar
    981     doing
    982        (progn foo
    983               bar
    984               baz))
    985 
    986 ;;; Test: indent-94
    987 ;;
    988 ;; sly-lisp-loop-clauses-indentation: 4
    989 ;; sly-lisp-loop-body-forms-indentation: 1
    990 
    991 (loop
    992     for foo in bar
    993     doing
    994      (list foo
    995            bar
    996            baz))
    997 
    998 ;;; Test: indent-95
    999 ;;
   1000 ;; sly-lisp-loop-body-forms-indentation: 1
   1001 ;; sly-lisp-loop-indent-body-forms-relative-to-loop-start: t
   1002 
   1003 (loop
   1004   for foo in bar
   1005   do
   1006  (list foo
   1007        bar
   1008        baz))