Макет кода Ada с запросом gnatpp

Я пытаюсь использовать gnatpp для улучшения макета некоторого кода ada, однако при переформатировании вызовов процедур он помещает именованные параметры в одну строку, а не в отдельные строки, как я предпочитаю. Переключатели, которые я использую:

gnatpp $(INCLUDES) -A0 -aM -c0 -kL -nD -M128 -rf test.adb

Я понимаю, что -A0 должен отключить все проблемы с выравниванием...

Любая идея, как я неправильно их читаю?


person NWS    schedule 12.01.2011    source источник
comment
Я не возился с gnatpp, всегда просто используя настройки по умолчанию, вызываемые GPS, но после быстрого прочтения Руководства пользователя вы пробовали -A4: Align =› в ассоциациях? Просто предположение с моей стороны...   -  person Marc C    schedule 12.01.2011
comment
Спасибо, Марк, я попробую это, когда в следующий раз вернусь к этой проблеме, но я понимаю, что -A0 не должен ничего делать с выравниванием (и просто оставить код как есть!, а не параметры выравнивания или удаления!)   -  person NWS    schedule 12.01.2011
comment
Верно... вот почему предлагается вместо этого попробовать -A4.   -  person T.E.D.    schedule 12.01.2011


Ответы (1)


Я думаю, что язык в параметрах выравнивания может вас немного сбить с толку.

Документы для параметров выравнивания говорят:

Программы могут быть проще для чтения, если определенные конструкции выровнены по вертикали. По умолчанию все выравнивания включены. С помощью переключателя -A0 вы можете сбросить значение по умолчанию на OFF, а затем использовать один или несколько других переключателей -An, чтобы активировать выравнивание для определенных конструкций.

-A0 Установить все выравнивания на OFF

Здесь вы должны понимать, что текст пытается описать, что эти переключатели делают с gnatpp, а не с вашим собственным исходным кодом.

То, что вы делаете, устанавливая -A0, не «отключает все проблемы с выравниванием» в вашем исходном коде, а скорее вы отключаете весь код в gnatpp, который в противном случае просматривал бы и исправлял ваш исходный код. выравнивание кода.

-A0 на самом деле вы говорите gnatpp: «Пожалуйста, не трогайте выравнивание моего исходного кода. Мне он нравится таким, какой он есть».

Уберите оттуда -A0 и посмотрите, нравится ли вам результат больше.

person T.E.D.    schedule 12.01.2011
comment
Я пробовал все перестановки A0 и A4, и всегда это дает мне неправильный вывод - он не выравнивает по вертикали '=>' - person NWS; 14.01.2011
comment
@NWS - Хм. Тогда это просто выравнивание левой стороны строк аргументов? Это может быть лучшее, что gratpp сделает для вас. - person T.E.D.; 14.01.2011
comment
Нет, он помещает их в одну строку: % more main.adb с ошибкой; процедура Main is begin Wrong.Xxx (A => 0, B => 1, C => 2, D => 9, E => 6); конец основного; %gnatpp -A0 -A4 -pipe main.adb с ошибкой; процедура Main is begin Wrong.Xxx (A => 0, b => 1, c => 2, d => 9, e => 6); конец основного; - person NWS; 17.01.2011
comment
Хм. Это примеры имен параметров? (Боже, я на это надеюсь!) Причина, по которой я спрашиваю, заключается в том, что они все такие короткие, и я понимаю, почему он хочет держать их всех на одной линии. Если бы были какие-то длинные, его пришлось бы разделить. Тогда мне было бы любопытно, как это было сделано. - person T.E.D.; 17.01.2011
comment
Да, это примеры ;) -- я не из тех, кто выкладывает коммерческое ПО в сеть! Да, если имена достаточно длинные, чтобы нарушить ограничение длины строки, достаточное их количество помещается в отдельные строки, но не так, чтобы в каждой строке было строго 1 и выровнено :( - person NWS; 18.01.2011