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

Re: Нужен ли bash



Dmitry Fedorov wrote:
> Правильный табстоп - это механический флажок на пишущей машинке или
> перфораторе, выставляемый в некую позицию строки, останавливающий
> каретку, быстро двигающуюся после нажатия клавиши табуляции.
> Очевидно, придуман для экономии времени оператора
> пишмашинки/перфоратора при вводе таблиц.
Правильная метафора.
А если представить, что таких табстопов может быть несколько; что они
могут быть выставлены в произвольные места в строке, а не только с
фиксированным шагом; и более того, что они могут выставляться не
вручную, а автоматически/динамически, создавая наиболее визуально
приятное выделение отступаемых блоков кода - вот тогда мы получим
"правильный табстоп для программистского редактора". Этакая комбинация
чисто визуальных "флажков" из OOo/MSO, и в то же время ориентированности
на программистские задачи, в которых до сих пор приходится форматировать
"псевдотаблицы" (например, пытаясь выровнять друг под другом список
аргументов).

Как могли бы, например, работать такие табстопы, если бы кто-нибудь
задался целью реализовать табуляционный алгоритм, удобный для
программистов, и при этом не привязанный к квадратно-гнездовым методам
печати (пример на том же Питоне):
def my_cool_function (<tab-1>argument_1,
<tab-1a>argument_2,
<tab-1b>argument_3):

<tab-2>print (<tab-3>argument_1 + argument_2,
<tab-2a><tab-3a>argument_2 + argument_3)

tab-1 (появившись в середине текста, а не в начале строки) в таком
случае формирует новый "флажок", находящийся на некотором расстоянии от
скобки (например, на 1 em/2 en в случае пропорциональных шрифтов, или на
парочку пробелов в случае моноширинных); tab-1a и tab-1b догадываются,
что свой текст они должны выровнять под уже имеющийся флажок, и
выравнивают argument_2 и argument_3 под argument_1 соответственно.

Но помимо флажков, необходим какой-то метод сдвинуть всё левое поле в
целом, так, чтобы это не посчитали за попытку подравнять текст под
имеющийся флажок. Тогда можно пойти на допущение и решить, что пустая
строка сбрасывает настройки "флажков". Поэтому tab-2 сделает привычный
"абзацный отступ" (в парочку пропорциональных em/штуки 4 en, или в 4
моноширинных пробела) в начале строки; tab-3, т.к. в середине строки,
сформирует новый "флажок" на 1 em от скобки; tab-2a сдвинет текст на
уровень начала слова print, а tab-3a - на уровень "флажка".

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


Alex Myodov


Reply to: