LINUX.ORG.RU

Indent with tabs, align with spaces

 ,


2

3

Здравствуйте. Нужен совет по настройке vim для редактирования си кода. Для использования табуляции для отступов и пробелов для выравнивание. Попробую изобразить желаемое:

if(condition){
   ->   for (uint64_t counter = some_struct_var->some_field;<cr>
   ->   .....counter < some_struct_var && some_other_condition;<cr>
   ->   .....++counter) {
Читал документацию по autoindent, smartindent, cindent. Искал через поисковик, нашёл рекомендацию использовать плагин Smart Tabs, но он делает того, что хочу я или я не понял как его настроить. Также нашёл схожий вопрос на stackoverflow, но ответ там неутешительный — делать руками. Неужели нет другого способа?

Deleted
Ответ на: комментарий от LamerOk

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

struct mystruct {
    int foo;
    std::string bar;
    std::vector<std::string> baz;
};

читабельнее

struct mystruct {
    int                      foo;
    std::string              bar;
    std::vector<std::string> baz;
};
slovazap ★★★★★
()
Ответ на: комментарий от Deleted

будет смещена на один уровень относительно первой и будет сливаться с телом цикла

А не надо школохакерить с K&R вместо общепринятого Allman/BSD.

LamerOk ★★★★★
()
Ответ на: комментарий от LamerOk

Вижу только брызганье вонючей слюной и набор никак не связанных слов.

Легко читается код, формально отформатированный по строгим правилам самого синтаксиса языка.

И какие же у C++ «строгие правила самого синтаксиса языка» в части пробелов?

Однообразное подчёркивание отступами вторых и третьих строк в аргументах функции везде по коду в разы легче читать, чем художественную резьбу пробелами по случайно выбранной позиции в строке.

Это не аргумент, это пустые слова. Аргумент - это то, что когда вторая и далее строки выровнены по первой, читабельность улучшается. Вот твой вариант, в зависимости от размера таба:

for (very_long_blah-blah-blah;
  very_long_foo > very_very_long_bar;
  somehow_shorter_just_a_bit_bar++)
{
  for_cycle_body_starts...
...
  for_cycle_body_ends...
}
for (very_long_blah-blah-blah;
    very_long_foo > very_very_long_bar;
    somehow_shorter_just_a_bit_bar++)
{
    for_cycle_body_starts...
...
    for_cycle_body_ends...
}
for (very_long_blah-blah-blah;
        very_long_foo > very_very_long_bar;
        somehow_shorter_just_a_bit_bar++)
{
        for_cycle_body_starts...
...
        for_cycle_body_ends...
}

Читабельность во всех случаях одинаково отвратительная, поскольку for визуально распадается.

Здесь же всё хорошо:

for (very_long_blah-blah-blah;
     very_long_foo > very_very_long_bar;
     somehow_shorter_just_a_bit_bar++)
{
        for_cycle_body_starts...
...
        for_cycle_body_ends...
}

Что есть возразить?

slovazap ★★★★★
()
Ответ на: комментарий от slovazap

Есть. Мой вариант выглядит на порядки лучше.

Ничего никуда не «распадается», проверка условия и пред- и пост-инструкции чётко визуально «привязаны» к ключевому слову, тело цикла аккуратно висит отдельно и легко определяется.

Скопируй свой вариант в трёх экземплярах, и увидишь, что он выглядит как говно. А если еще и «выравнивание» на разные случайные числа, то вообще как понос.

LamerOk ★★★★★
()
Ответ на: комментарий от LamerOk

Есть. Мой вариант выглядит на порядки лучше.

То есть нет.

Ничего никуда не «распадается»

То есть ещё и очевидное отрицаем.

выглядит как говно то вообще как понос

Ты просто мерзок.

slovazap ★★★★★
()
Ответ на: комментарий от LamerOk

Ну, и кроме того, в моём варианте тело цикла/условия легко и прозрачно сопоставляется с управляющими инструкциями.

LamerOk ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.