Git commit 583fea1bb3003948fced657be608f9cec2ad1f10 by Waqar Ahmed. Committed on 15/05/2024 at 12:42. Pushed by waqar into branch 'master'.
formatting: support fish_indent, dfmt, nixfmt, shfmt M +8 -0 addons/format/FormatterFactory.h M +12 -0 addons/format/FormatterSettings.json M +11 -0 addons/format/Formatters.h M +10 -12 doc/kate/plugins.docbook https://invent.kde.org/utilities/kate/-/commit/583fea1bb3003948fced657be608f9cec2ad1f10 diff --git a/addons/format/FormatterFactory.h b/addons/format/FormatterFactory.h index 3dd19dab2d..63b4df6c85 100644 --- a/addons/format/FormatterFactory.h +++ b/addons/format/FormatterFactory.h @@ -63,6 +63,14 @@ static AbstractFormatter *formatterForDoc(KTextEditor::Document *doc, const QJso } Utils::showMessage(i18n("Unknown formatterForPython: %1", configValue), {}, i18n("Format"), MessageType::Error); return ruffFormat(config, doc); + } else if (is("d")) { + return dfmt(config, doc); + } else if (is("fish")) { + return fishIndent(config, doc); + } else if (is("bash")) { + return shfmt(config, doc); + } else if (is("nixfmt")) { + return nixfmt(config, doc); } static QList<QString> alreadyWarned; diff --git a/addons/format/FormatterSettings.json b/addons/format/FormatterSettings.json index a92d7dbfdf..4e7bdf76ca 100644 --- a/addons/format/FormatterSettings.json +++ b/addons/format/FormatterSettings.json @@ -36,5 +36,17 @@ }, "ruff": { "command": ["ruff"] + }, + "dfmt": { + "command": ["dfmt"] + }, + "fish_indent": { + "command": ["fish_indent"] + }, + "shfmt": { + "command": ["shfmt"] + }, + "nixfmt": { + "command": ["nixfmt"] } } diff --git a/addons/format/Formatters.h b/addons/format/Formatters.h index c231cb0d3f..9aad32c476 100644 --- a/addons/format/Formatters.h +++ b/addons/format/Formatters.h @@ -297,6 +297,17 @@ DEFINE_STDIN_FORMATTER(ruffFormat, "ruff", (QStringList{S("format"), S("-q"), S( DEFINE_STDIN_FORMATTER(goFormat, "gofmt", (QStringList{})); DEFINE_STDIN_FORMATTER(autoPep8Format, "autopep8", (QStringList{S("-")})); DEFINE_STDIN_FORMATTER(cMakeFormat, "cmake-format", (QStringList{S("-")})); +DEFINE_STDIN_FORMATTER(dfmt, "dfmt", (QStringList{})); +DEFINE_STDIN_FORMATTER(fishIndent, "fish_indent", (QStringList{})); +DEFINE_STDIN_FORMATTER(nixfmt, "nixfmt", (QStringList{})); + +inline AbstractFormatter *shfmt(const QJsonObject &obj, KTextEditor::Document *parent) +{ + int width = parent->configValue(QStringLiteral("indent-width")).toInt(); + width = width == 0 ? 4 : width; + bool spaces = parent->configValue(QStringLiteral("replace-tabs")).toBool(); + return new StdinFormatter(obj, parent, QStringLiteral("shfmt"), QStringList{QStringLiteral("--indent"), QString::number(spaces ? width : 0)}); +} #undef S #undef DEFINE_STDIN_FORMATTER diff --git a/doc/kate/plugins.docbook b/doc/kate/plugins.docbook index 7d6b16abaf..2fcf5f71c1 100644 --- a/doc/kate/plugins.docbook +++ b/doc/kate/plugins.docbook @@ -4455,18 +4455,16 @@ The current list of supported languages and formatters are as follows: </itemizedlist> </para></listitem> -<listitem><para>Dart - <command>dartfmt</command> -</para></listitem> -<listitem><para>Rust - <command>rustfmt</command> -</para></listitem> -<listitem><para>Go - <command>gofmt</command> -</para></listitem> -<listitem><para>XML - <command>xmllint</command> -</para></listitem> -<listitem><para>Zig - <command>zigfmt</command> -</para></listitem> -<listitem><para>CMake - <command>cmake-format</command> -</para></listitem> +<listitem><para>Dart - <command>dartfmt</command></para></listitem> +<listitem><para>Rust - <command>rustfmt</command></para></listitem> +<listitem><para>Go - <command>gofmt</command></para></listitem> +<listitem><para>XML - <command>xmllint</command></para></listitem> +<listitem><para>Zig - <command>zigfmt</command></para></listitem> +<listitem><para>CMake - <command>cmake-format</command></para></listitem> +<listitem><para>D - <command>dfmt</command></para></listitem> +<listitem><para>Fish Shell - <command>fish_indent</command></para></listitem> +<listitem><para>Bash - <command>shfmt</command></para></listitem> +<listitem><para>Nix - <command>nixfmt</command></para></listitem> <listitem><para>Python <itemizedlist>
