[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Выравнивания



On Thu, Sep 25, 2008 at 10:37:47AM +0400, Artem Chuprina wrote:
>  DA> (defmacro save-variables (vars &rest body)
>  DA>   "Protect values of global vars from changes by body."
>  DA>   (declare (indent 1))
         ^^^^^^^^^^^^^^^^^^^^
     Это указывает, как форматировать исходник при _использовании_ этого
     макро.
>  DA>   (let ((save-pairs (loop for var in vars
>  DA>                           collect (cons var (make-symbol "tmp")))))
                                 ^
                        Тут выравнивание зависит от синтаксиса
>  DA>     (let ((save-form (loop for pair in save-pairs
           ^
     Отступ этой скобочки -- 1/2 от предыдущего let, а не от предыдущей
     строки.
>  DA>                            collect `(,(cdr pair) ,(car pair))))
>  DA>           (restore-form (loop for pair in save-pairs
                 ^
           Тут две скобочки друг под другом
>  DA>                               collect `(setq ,(car pair) ,(cdr pair)))))
>  DA>           
>  DA>       `(let (,@save-form)
             ^
      Тут отступ 1/2 от предыдущего let, а не от предыдущей строки
>  DA>          (unwind-protect
>  DA>              (progn ,@body)
                    ^
         Это с отступом 1 -- тело unwind-protect
>  DA>            ,@restore-form)))))
                  ^
           Это с отступом 1/2 от unwind-protect -- finally.
> 
> И чо?  Табуляция в 2em спасла бы смертельно раненого кота.  Нет, я вижу,
> что в конце там в одном месте используется смещение на три позиции от
> начала.  Но склонен расценить это как баг, а не как фичу.

Вот и чо. Табуляция в 2em не спасла бы -- правила отступов и
выравниваний несколько посложнее будут. Или вы смотрите этот текст
немоноширинными шрифтами? Ну, тогда у вас естественно все поплыло, и
сути вы не уловили.

Давайте сыграем в игру: вы формулируете формальные правила действий
редактора/просмотрщика, когда он встречает символ табуляции, а я привожу
вам пример реально существующих (и работающих) правил выравнивания,
которые не работают по вашим правилам.

> Табуляции достаточно.  А тот, кто использует пробел для форматирования,
> суть секретутка независимо от типа первичных половых признаков.  Пробел
> - это межсловный (в языке программирования - межтокенный) промежуток.

Ну-ну.

-- 
Dmitry


Reply to: