Этот модуль позволяет с лёгкостью форматировать код. Он обеспечивает сохранение журнала отмены действий над документом и позиции курсора пользователя во время форматирования кода, чтобы форматирование кода не мешало работе. Это особенно важно для автоматического форматирования при сохранении.
Модуль позволяет пользователю форматировать код двумя способами:
Вручную (с помощью действия «Форматировать документ»)
Автоматически при сохранении
Подсказка
Можно найти это действие на панели команд и назначить для него комбинацию клавиш, чтобы упростить доступ
Текущий список поддерживаемых языков и средств форматирования:
C/C++/ObjectiveC/ObjectiveC++/Protobuf/GLSL/Java - clang-format
Javascript/Typescript/JSX/TSX - prettier
JSON
prettier
clang-format
jq
Dart - dartfmt
Rust - rustfmt
Go - gofmt
XML - xmllint
Zig - zigfmt
CMake - cmake-format
D - dfmt
Fish Shell - fish_indent
Bash - shfmt
Nix - nixfmt
QML - qmlformat
HTML - prettier
Swift - swiftformat
Erlang - erlfmt
Godot Script - gdformat
Python
autopep8
ruff
YAML
yamlfmt
prettier
Модуль можно настроить двумя способами:
На глобальном уровне (с помощью окна настройки программы)
Или на уровне проекта (с помощью файла
.kateproject)
Модуль сначала выполнит попытку прочитать конфигурацию из файла .kateproject, а уже потом глобальную. Пример:
{
"formatOnSave": true,
"formatterForJson": "jq",
"cmake-format": {
"formatOnSave": false
},
"autopep8": {
"formatOnSave": false
}
}
Код выше:
включает «форматирование при сохранении» на глобальном уровне
указывает «jq» в качестве средства форматирования для JSON
отключает «форматирование при сохранении» для cmake-format и autopep8
Чтобы настроить форматирование для проекта, сначала создайте файл .kateproject, а затем добавьте в него объект "formatting". В объекте "formatting" можно указать параметры (как показано в предыдущем примере). Пример:
Примечание
Чтобы использовать эту возможность, необходимо включить Модуль проектов
{
"name": "My Cool Project",
"files": [
{
"git": 1
}
],
"formatting": {
"formatterForJson": "clang-format",
"autopep8": {
"formatOnSave": false
}
}
}