Russian Qt Forum
Ноябрь 21, 2024, 16:15 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 [2]   Вниз
  Печать  
Автор Тема: Автоматическое форматирование кода  (Прочитано 18012 раз)
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #15 : Сентябрь 28, 2020, 13:17 »

который был хуже существующих (тех же эклипсок или kdevelop)?

Смешно, кроме Эклипса только Хром жрет больше памяти.
КДевелоп уже не тащит половину кедов за собой и работает под маком?

https://www.kdevelop.org/download
Код:
No official pre-built installers available currently
Код:
No official pre-built installers available yet
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #16 : Сентябрь 28, 2020, 13:24 »

чет не понял, Ctrl+I не работает что ли?
не работает и ни когда не работало. Ctrl+I вам расставит отступы/табы, а форматирование не сделает. Скобочки не расставит, новые строки и т.п. не расставит. Попробуйте мой код в первом посте по Ctrl+I. Получиться гэ.  
понял, спасибо
а шланг может (без креатора) все исходные файлы проекта в папке и в подпапаках одной командой переформатировать?
может, но список файлов ему надо скормить (например, через команду find):
Код:
❯ clang-format -h 
OVERVIEW: A tool to format C/C++/Java/JavaScript/Objective-C/Protobuf/C# code.

If no arguments are specified, it formats the code from standard input
and writes the result to the standard output.
If <file>s are given, it reformats the files. If -i is specified
together with <file>s, the files are edited in-place. Otherwise, the
result is written to the standard output.

USAGE: clang-format [options] [<file> ...]

также есть удобная штука git-clang-format, которая форматирует только файлы, добавленные в индекс гита (т.е. в состоянии staged).
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
ViTech
Гипер активный житель
*****
Offline Offline

Сообщений: 858



Просмотр профиля
« Ответ #17 : Сентябрь 28, 2020, 13:36 »

ClangFormat plugin in Qt Creator 4.9 в коробке, вроде как. Я пользуюсь, вполне нормально.

а шланг может (без креатора) все исходные файлы проекта в папке и в подпапаках одной командой переформатировать?

ClangFormat, можно подать на вход несколько файлов. Список файлов в папке/подпапках можно получить другой утилитой, unix-way....
Записан

Пока сам не сделаешь...
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #18 : Сентябрь 28, 2020, 13:38 »


ClangFormat, можно подать на вход несколько файлов. Список файлов в папке/подпапках можно получить другой утилитой, unix-way....

Есть же compilation database и jq. Выцепить файлы проекта задача тривиальная, нет?
Записан
ViTech
Гипер активный житель
*****
Offline Offline

Сообщений: 858



Просмотр профиля
« Ответ #19 : Сентябрь 28, 2020, 13:54 »

Есть же compilation database и jq. Выцепить файлы проекта задача тривиальная, нет?

Как один из вариантов получения списка файлов проекта, может быть и тривиальная. Но в compilation database разве не только *.cpp файлы перечислены? Можно её сгенерировать так, чтобы и *.h тоже там были?
Записан

Пока сам не сделаешь...
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #20 : Сентябрь 28, 2020, 13:58 »

да, о хедерах я не подумал=)
Записан
ViTech
Гипер активный житель
*****
Offline Offline

Сообщений: 858



Просмотр профиля
« Ответ #21 : Сентябрь 28, 2020, 14:16 »

да, о хедерах я не подумал=)

Если проект собирается CMake'ом, то более подробную структуру проекта можно получить с помощью cmake-file-api, там и хидеры и исходники перечислены. Сгенерировать структуру проекта не сложно, но я бы не сказал, что просто и тривиально, одной командой не отделаешься. Проще будет каким-нибудь find'ом в папке проекта список файлов получить.

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

Пока сам не сделаешь...
juvf
Программист
*****
Offline Offline

Сообщений: 570


Просмотр профиля
« Ответ #22 : Сентябрь 30, 2020, 12:09 »

не едут лыжи.
вот фрагмент кода
Код:
void _put_pixel(tContext *pContext, int X, int Y, int sx, int sy, long Es,
                uint8_t color)
{
  if (color)
{
         ...
Что я хочу? Перед if один ТАБ, не пробелы, а ТАБ. На следующей строчке перед фигурной скобкой один ТАБ.
настроил шланг-формат, креатор, горячие клавиши. Убрал галку "автоформатирование при сохранении".
Нажимаю гор.клав. - получаю перед if два пробела, перед { один таб. Нажимаю "Сохранить" файл меняется и стновиться перед if 2 пробела, перед { четыре пробела. Wtf?
Кто разбирается в конфигурировании clang-format? Какую опцию и как настроить?

есть UseTab, указал
UseTab: ForIndentation получаю 2 пробела и 1 таб. а после сохраниния одни пробелы.
указал
UseTab: Always получаю  2 пробела и 1 таб. а после сохраниния одни пробелы.

1) как настроить clang-format на табы?
2) почему говнокреатор при сохранении меняет табы на пробелы?
Записан
juvf
Программист
*****
Offline Offline

Сообщений: 570


Просмотр профиля
« Ответ #23 : Сентябрь 30, 2020, 12:17 »

2-ой вопрос решил, в 2-х местах нужно править
Код:
Tools -> Options -> Text Editor -> Behaviour -> Tabs and Indentation    &    Tools -> Options -> C++ -> Code Styles -> Edit
« Последнее редактирование: Октябрь 23, 2020, 13:13 от juvf » Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #24 : Сентябрь 30, 2020, 12:56 »

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

Эмм.. а clang-format?

ЗЫ: Ах, ты хочешь прям сразу весть проект... Хм.. Ну да, вроде нету такого.

Тут как-бы не все так просто: а какие файлы из проекта должен форматтер форматировать? Т.к. кроме *.h / *.cpp (и их производных), есть и другие, например, какие-нить шаблоны, файлы ассемблера и прочее. Поэтому, наверное и не запилили это.
« Последнее редактирование: Сентябрь 30, 2020, 13:04 от kuzulis » Записан

ArchLinux x86_64 / Win10 64 bit
juvf
Программист
*****
Offline Offline

Сообщений: 570


Просмотр профиля
« Ответ #25 : Сентябрь 30, 2020, 13:13 »

а какие файлы из проекта должен форматтер форматировать? Т.к. кроме *.h / *.cpp
тут всё очень просто. мне нужно *.h, *.c, *.cpp.

1)
IndentWidth:     4
UseTab:          Always
TabWidth:        4

если IndentWidth:     2, то перед if будет два пробела, если 4, то будет 1 таб.
Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #26 : Сентябрь 30, 2020, 13:15 »

Цитировать
мне нужно *.h, *.c, *.cpp.

а кому-то нужно еще что-то и он будет хныкать, что у него ничо не работает кроме *.h, *.c, *.cpp.  Улыбающийся
Записан

ArchLinux x86_64 / Win10 64 bit
juvf
Программист
*****
Offline Offline

Сообщений: 570


Просмотр профиля
« Ответ #27 : Сентябрь 30, 2020, 13:19 »

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

возможно всё уже украли ужа такая утилита есть...
Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #28 : Сентябрь 30, 2020, 15:48 »

Во, можешь в QtC это запилить (типа добавить фичу форматирования всего проекта)
Записан

ArchLinux x86_64 / Win10 64 bit
AkonResumed
Чайник
*
Offline Offline

Сообщений: 81


Просмотр профиля
« Ответ #29 : Октябрь 31, 2020, 10:11 »

А как для встроенного стиля (точнее, Qt-based и отредактированный с использованием табов, а не пробелов) добиться выравнивания не по открывающей скобке, а просто с регулярным отступом:
Код:
	
while (a ||
       b)

нужно:

while (a ||
    b)
Эта настройка находится на вкладке "Alignment" диалога редактирования стиля. Проблема в том, что при выставлении нужного отступа он не сохраняется.

QtCreator v4.12, но так было у меня всегда ... и в QtCreator v1.x.x.
« Последнее редактирование: Октябрь 31, 2020, 17:47 от AkonResumed » Записан
Страниц: 1 [2]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.215 секунд. Запросов: 23.