Подскажите утилитку для форматирования исходников С++

solambo

Нужно пройтись по файлам в С++ проекте и заменить отступы из 2 пробелов на табуляцию, при этом не портить выравнивания вроде таких (всё пробелами):
pBackgroundLoader.reset(new BackgroundLoader(boost::bind(BackgroundLoaderFinish, this, _1, _2
boost::bind(MongoOutputCallback, this, _1, _2
boost::bind(NodeOutputCallback, this, _1, _2;

doublemother

astyle

solambo

astyle
Спасибо! Похоже на то, что нужно.

Maurog

Похоже на то, что нужно.
если не трудно, отпишись о результатах
интересно знать:
1) как быстро освоил
2) как быстро и точно настроил
3) какие фрагменты кода починила и какие наоборот поломала \ не осилила
4) решил ли свою задачу в итоге

solambo

отпишись о результатах
1) Скачал, запустил (не выдало help при запуске без опций полез на сайт в Usage. Вычитал нужную мне опцию, запустил на тестовом файле, запустил на всём проекте. Минут 10-15 суммарно.
2) Ещё минут 15 игрался с опциями по поводу работы со скобками. Не нашёл, как сохранить if else в моём любимом стиле. Но это было не критично, так что забил.
3) Все отступы стали как надо. Дополнительные опции отключил, чтобы не трогала ничего.
4) Да, решил.

Maurog

спасибо, надо будет тоже тогда попробовать :grin:

lykas

clang-format, очень настраиваемый и с плагином для vim
http://clang.llvm.org/docs/ClangFormat.html
http://clang.llvm.org/docs/ClangFormatStyleOptions.html

istran

clang-format, очень настраиваемый и с плагином для vim
+1 к clang-format.
Не знаешь есть ли такой плагин для vim, который переформатирует код на лету, а не по запуску команды?

doublemother

Не знаешь есть ли такой плагин для vim, который переформатирует код на лету, а не по запуску команды?
Я себе в вимрц написал вот так:
function! AstyleReformat range
let l:curline = line('.')
let firstline = a:firstline
let endline = a:lastline
exec firstline . "," . endline ."! astyle --style=1tbs -s4lNdk3z2"
call cursor(l:curline, 1)
endfunction

vmap astyle :call AstyleReformat<cr>
nmap astyle :1,$call AstyleReformat<cr>

Для большего автоматизма можно сделать всякие au BufWritePre,InsertLeave …

lykas

Берёшь вот этот скрипт http://llvm.org/svn/llvm-project/cfe/trunk/tools/clang-form... , и делаешь как в нём в самом начале в комментариях сказано. Работает форматирование в визуальном режиме, ещё работает undo с форматированием, как и с любым другим действием.
Хотя если ты имел в виду на лету - совсем на лету, думаю, что такого не бывает, хотя бы потому что код по мере ввода не всегда бывает (на самом деле, почти всегда не бывает) синтаксически корректным.
Оставить комментарий
Имя или ник:
Комментарий: