[utilities/kate] /: formatting: support fish_indent, dfmt, nixfmt, shfmt

Waqar Ahmed <[email protected]>
Newsgroups gmane.comp.kde.doc,gmane.comp.kde.cvs
Message-ID <[email protected]>
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>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.