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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: ClangFormat  (Прочитано 9386 раз)
ViTech
Гипер активный житель
*****
Offline Offline

Сообщений: 858



Просмотр профиля
« : Апрель 17, 2019, 19:45 »

В Qt Creator добавили плагин ClangFormat. Это дело хорошее. Но есть у меня сторонний вопрос по самой утилите ClangFormat. Судя по её опциям командной строки файл конфигурации стиля должен называться .clang-format или _clang-format, и располагаться в одной из родительских директорий форматируемого файла. Насколько я понял, нельзя в опциях утилиты задать файл конфигурации с произвольным именем из произвольной директории. Кто-нибудь в курсе, в чём сакральный смысл такого ограничения?
Записан

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

Сообщений: 3880


Просмотр профиля WWW
« Ответ #1 : Апрель 18, 2019, 06:54 »

>>and using clang-format -style=file
вроде файл указать можно
Записан

Юра.
ViTech
Гипер активный житель
*****
Offline Offline

Сообщений: 858



Просмотр профиля
« Ответ #2 : Апрель 18, 2019, 10:18 »

>>and using clang-format -style=file
вроде файл указать можно

Я тоже так сначала подумал (и не я один), когда мельком просмотрел опции Улыбающийся. Только файл этот: ".clang-format file located in one of the parent directories of the source file". Вот мне и интересно, почему нет опции, в которой можно указать произвольный файл конфигурации.
Записан

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

Сообщений: 3880


Просмотр профиля WWW
« Ответ #3 : Апрель 18, 2019, 12:15 »

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

Юра.
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #4 : Апрель 18, 2019, 12:17 »

там, по ссылке есть такое:
Цитировать
The correct usage for your example would be:
Код
Bash
./clang-format -style=file ~/myFile.cc
Записан

Юра.
ViTech
Гипер активный житель
*****
Offline Offline

Сообщений: 858



Просмотр профиля
« Ответ #5 : Апрель 18, 2019, 12:40 »

там, по ссылке есть такое:
Цитировать
The correct usage for your example would be:
Код
Bash
./clang-format -style=file ~/myFile.cc

Нет, по ссылке там такое:
Цитировать
The correct usage for your example would be:
Код
Bash
./clang-format -style=llvm -dump-config > ~/.clang-format
./clang-format -style=file ~/myFile.cc

Предложения лучше целиком читать, а не вырезать куски из контекста Улыбающийся. В этом ответе подробно описано, как работает опция -style. Меня же больше интересует, почему она работает именно так.
Записан

Пока сам не сделаешь...
ViTech
Гипер активный житель
*****
Offline Offline

Сообщений: 858



Просмотр профиля
« Ответ #6 : Апрель 23, 2019, 17:00 »

Для сравнения, как может выглядеть указание|поиск файла конфигурации здорового человека (не курильщика).

cmake-format:
Цитировать
cmake-format [-h]
            [--dump-config {yaml,json,python} | -i | -o OUTFILE_PATH]
            [-c CONFIG_FILE]
            infilepath [infilepath ...]

Parse cmake listfiles and format them nicely.

Formatting is configurable by providing a configuration file. The configuration
file can be in json, yaml, or python format. If no configuration file is
specified on the command line, cmake-format will attempt to find a suitable
configuration for each ``inputpath`` by checking recursively checking it's
parent directory up to the root of the filesystem. It will return the first
file it finds with a filename that matches '\.?cmake-format(.yaml|.json|.py)'.
Записан

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

Сообщений: 4747



Просмотр профиля WWW
« Ответ #7 : Апрель 29, 2019, 16:41 »

так можно ж достаточно легко симулировать чтение настроек из произвольного файла с помощью прямой передачи настроек в виде строки (см. конец)
Код:
  -style=<string>           - Coding style, currently supports:
                                LLVM, Google, Chromium, Mozilla, WebKit.
                              Use -style=file to load style configuration from
                              .clang-format file located in one of the parent
                              directories of the source file (or current
                              directory for stdin).
                              Use -style="{key: value, ...}" to set specific
                              parameters, e.g.:
                                -style="{BasedOnStyle: llvm, IndentWidth: 8}"
Записан

Изучением 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



Просмотр профиля
« Ответ #8 : Апрель 29, 2019, 18:48 »

так можно ж достаточно легко симулировать чтение настроек из произвольного файла с помощью прямой передачи настроек в виде строки (см. конец)

Такой способ мне трудно всерьёз воспринимать, и тогда ещё больше вопросов появляется Улыбающийся. Например, как много людей предпочитают перечислять настройки в командной строке, вместо указания файла с ними? Сейчас в clang-format порядка 120 опций, даже если из них 10 изменить, то уже длинная строка получится. Для сравнения, в uncrustify порядка 660 опций, из них у меня изменены 191. Не хотелось бы мне их в командной строке писать, будь у автора uncrustify такая же логика Улыбающийся.

И при симуляции чтения из файла его нужно обрабатывать: перевод строки менять на ','. Мне кажется не очень правильным заставлять пользователей утилиты такой фигнёй заниматься Улыбающийся.
Записан

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

Сообщений: 4747



Просмотр профиля WWW
« Ответ #9 : Апрель 30, 2019, 00:17 »

не лучший способ, не спорю, но решает задачу в заданных рамках Улыбающийся

файл же превращается в строку грубо через file.readAll().split("\n").join(", "), если там нет комментариев и мультиязычности...)
Записан

Изучением 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



Просмотр профиля
« Ответ #10 : Апрель 30, 2019, 10:51 »

не лучший способ, не спорю, но решает задачу в заданных рамках Улыбающийся

Если такой способ добавили, значит кому-то он нужен. Тогда получается, что чтение настроек из заданного файла мало кому нужно? Улыбающийся Особенно учитывая, что функционал чтения из файла (.clang-format) есть,  для произвольного осталось только опцию добавить. Для меня это странно. Хотя может я какую тенденцию упускаю. Например, по захламлению корневого каталога проекта Улыбающийся.
Записан

Пока сам не сделаешь...
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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