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: