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

Re: Нужен ли bash



Dmitry Azhichakov wrote:
> On Tue, Sep 23, 2008 at 02:23:39PM +0400, Alex Myodov wrote:
>   
>> Десяток писем назад я описал один из возможных алгоритмов, которые могли
>> бы выравнивать подобные группы внутри текста. Всего-то надо перед каждым
>> элементом группы (знаком "равно") ставить какой-нибудь спецсимвол,
>> который бы значил, что знаки "равно" надо выровнять друг под другом. По
>> чистой случайности, таким символом может быть символ табуляции.
>>     
> В ответе на предыдущее письмо этой ветки я привел кусок кода на Emacs
> Lisp. Где и как там надо расставить табуляции, чтобы все нормально
> выравнивалось так, как оно выровнено сейчас?
>   
Не могу сказать, что я полностью понял логику выравнивания в том куске.
Но в том, что я понял, я бы расставил табуляции (буде у меня был
редактор, который бы обрабатывал табуляцию так "умно", как мне хочется),
следующим образом:

(defmacro save-variables (vars &rest body)
<tab>"Protect values of global vars from changes by body."
<tab>(declare (indent 1))
<tab>(let ((save-pairs (loop<tab>for var in vars
<tab><tab><tab>collect (cons var (make-symbol "tmp")))))
<tab><tab>(let (<tab>(save-form (loop<tab>for pair in save-pairs
<tab><tab><tab><tab><tab>collect `(,(cdr pair) ,(car pair))))
<tab><tab><tab><tab>(restore-form (loop for pair in save-pairs

Для каждой строчки придётся помнить предыдущий известный размер левого поля. Если в этой строке табов в начале строки столько же, сколько для левого поля - отступаем на столько же. Если на один таб больше - то делаем поле на один шаг больше. Если на два или более табов больше - отступаем под следующий определённый "флажок". Флажки определяются исключительно табами в "теле" текста.

>   
>> Хотя если выравнивать бездумно пробелами - да, запись расползётся.
>> Разумеется. Про что я и говорю.
>>     
>
> А если выравнивать бездумно табуляциями, придавая им смысл, отличный от
> того, который принят большинством, 
Большинством принято, что символ табуляции... табулирует.
Если же вы имели в виду, что символ табуляции должен отступать на
фиксированные и равномерные расстояния, то как минимум в OpenOffice
думают иначе.

>> появись в каком редакторе адаптивная табуляция, выровнялись бы даже
>> следующие строчки,
>>     
> Но только в этом одном редакторе. Пользователи более других старомодных
> редакторов закидают вас тухлыми яйцами, ведь у них будет далеко не так
> красиво и даже много хуже, чем в варианте с моноширинными шрифтами и
> выравниванием пробелами.
>   
Факт, да.

Поэтому это и не является первостепенной задачей для Мировой Революции.
Надо бы народ для начала приучить хоть в начале строк правильные отступы
делать. И показать, что исходники, представленные пропорциональным
шрифтом, выглядят не так уж и плохо - даже наоборот.
А дальше по ситуации.


Alex Myodov


Reply to: