Интеграция ClangFormat и Notepad++

Автор: admin от 27-06-2019, 22:45, посмотрело: 112

ClangFormat является одним из лучших инструментов для автоматического форматирования исходных кодов на языках C, C++, Java, javascript, Objective-C, C#. Существуют плагины для популярных сред разработки (IDE), но часто нужно быстро отформатировать файл или часть файла с исходным кодом без запуска громоздкой IDE, поэкспериментировать с настройками форматирования и разными версиями ClangFormat с возможностью быстрой отмены изменений. Использовать для этих целей консольную версию ClangFormat неудобно. Возможным решением является вызов ClangFormat из текстового редактора. На официальном сайте описаны способы интеграции с редакторами Vim, Emacs и некоторыми другими, но по интеграции с Notepad++ информации нет. Далее приводится несложная инструкция применительно к Notepad++ (для Windows).

https://notepad-plus-plus.org



2. В Notepad++ устанавливаем плагин NppExec



NppExec позволяет вызывать сторонние приложения из Notepad++ и взаимодействовать с компонентами библиотеки Scintilla, на основе которой написан Notepad++.



Plugins –> Plugin Admin... –> NppExec –> Install

Notepad++ перезапустится, после чего появится каталог /plugins/NppExec/ и пункт меню Plugins –> NppExec



3. Скачиваем исполняемый файл ClangFormat



Для этого на странице https://llvm.org/builds/ находим и скачиваем установочный файл для Windows, например LLVM-X.X.X-rYYYYYY-win64.exe. Весь пакет можно не устанавливать, достаточно архиватором извлечь файл clang-format.exe. Можно использовать 7-zip: удаляем у файла расширение .exe, открываем файл при помощи 7-zip и извлекаем из подкаталога bin/ файл clang-format.exe. Помещаем файл clang-format.exe в каталог /plugins/NppExec/clang-format/.



4. Добавляем конфигурационные файлы для ClangFormat



Конфигурационные файлы должны иметь название .clang-format или _clang-format. В них содержится набор правил (стилей) форматирования, формат которых описан в руководстве ClangFormat Style Options.



Для примера используем файлы из проектов Linux Kernel и Qt.



Скачанные с GitHub файлы .clang-format помещаем в соответствующие каталоги:

/plugins/NppExec/clang-format/LINUX_KERNEL/

/plugins/NppExec/clang-format/QT/



5. Создаем скрипт для NppExec



Открываем окно редактирования и запуска скриптов NppExec Plugins –> NppExec –> Execute... или нажимаем F6. Копируем и вставляем в окно приведенный ниже текст скрипта и сохраняем скрипт под названием clang-format кнопкой Save....





После запуска скрипт на основе выбранного стиля форматирования, заданного в переменной style, выбирает нужный файл .clang-format, проверяет дату его изменения и при необходимости копирует его во временный каталог. Туда же во временный файл копируется выделенный фрагмент исходного кода, после чего запускается clang-format.exe. Отформатированный фрагмент копируется обратно в окно Notepad++. Затем временный файл удаляется.



В ClangFormat нет возможности указать путь к конфигурационному файлу .clang-format. ClangFormat будет искать его в каталоге форматируемого файла и, если не найдет, перейдет к поиску в родительских каталогах. После окончания работы скрипта файл .clang-format останется во временном каталоге для того, чтобы не выполнять его копирование при каждом запуске форматирования.



На всех этапах работы скрипта выполняется проверка на ошибки, и при их возникновении открывается консольное окно NppExec, в которое выводится сообщение.



6. В Notepad++ добавляем новый пункт меню для запуска скрипта



Открываем Plugins –> NppExec –> Advanced Options..., в выпадающем списке Associated script выбираем название скрипта clang-format и нажимаем на кнопку Add/Modify.



Перезапускаем Notepad++, после чего появится пункт меню Plugins –> NppExec –> clang-format.



Интеграция ClangFormat и Notepad++



7. В Notepad++ настраиваем клавиатурную комбинацию для запуска скрипта



Будем использовать комбинацию Ctrl + I по аналогии с QtCreator. Открываем Settings –> Shortcut Mapper.



По умолчанию комбинация Ctrl + I занята, поэтому нужно ее освободить кнопкой Clear во вкладке Main Menu (строка 38 Split Lines в текущей версии Notepad++). После этого во вкладке Plugin commands присваиваем комбинацию Ctrl + I скрипту clang-format.



Готово, можем пользоваться!



Инструкция по использованию



Открываем файл с исходным кодом в Notepad++, выделяем нужный фрагмент или весь текст и нажимаем Ctrl + I. Если ничего не выделять, то будет отформатирована текущая строка.



Интеграция ClangFormat и Notepad++



Для отмены изменений используем стандартные средства редактора (Ctrl + Z).

Для изменения правил форматирования редактируем конфигурационные файлы .clang-format в каталоге /plugins/NppExec/clang-format/

Если нужно использовать другую версию ClangFormat, то изменяем в скрипте путь к исполняемому файлу

set clangformat = "pathtoclang-format.exe"

Для выбора другого стиля форматирования нажимаем F6 и в тексте скрипта clang-format выбираем нужный стиль путем раскомментирования одной из строк

set style = STYLE_NAME.



Все необходимые файлы находятся в архиве.



Удачного форматирования!

Источник: Хабр / Интересные публикации

Категория: Программирование

Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Добавление комментария

Имя:*
E-Mail:
Комментарий:
Полужирный Наклонный текст Подчеркнутый текст Зачеркнутый текст | Выравнивание по левому краю По центру Выравнивание по правому краю | Вставка смайликов Выбор цвета | Скрытый текст Вставка цитаты Преобразовать выбранный текст из транслитерации в кириллицу Вставка спойлера
Введите два слова, показанных на изображении: *