1 /*
2     SPDX-FileCopyrightText: 2009-2018 Dominik Haumann <dhaumann@kde.org>
3 
4     SPDX-License-Identifier: LGPL-2.0-or-later
5 */
6 
7 #ifndef KATE_COMMANDLINE_SCRIPT_H
8 #define KATE_COMMANDLINE_SCRIPT_H
9 
10 #include "katescript.h"
11 
12 #include <KTextEditor/Command>
13 
14 #include <QJsonArray>
15 
16 namespace KTextEditor
17 {
18 class View;
19 }
20 
21 class KateCommandLineScriptHeader
22 {
23 public:
KateCommandLineScriptHeader()24     KateCommandLineScriptHeader()
25     {
26     }
27 
setFunctions(const QStringList & functions)28     inline void setFunctions(const QStringList &functions)
29     {
30         m_functions = functions;
31     }
functions()32     inline const QStringList &functions() const
33     {
34         return m_functions;
35     }
36 
setActions(const QJsonArray & actions)37     inline void setActions(const QJsonArray &actions)
38     {
39         m_actions = actions;
40     }
actions()41     inline const QJsonArray &actions() const
42     {
43         return m_actions;
44     }
45 
46 private:
47     QStringList m_functions; ///< the functions the script contains
48     QJsonArray m_actions; ///< the action for this script
49 };
50 
51 /**
52  * A specialized class for scripts that are of type ScriptType::Indentation.
53  */
54 class KateCommandLineScript : public KateScript, public KTextEditor::Command
55 {
56 public:
57     KateCommandLineScript(const QString &url, const KateCommandLineScriptHeader &header);
58 
59     const KateCommandLineScriptHeader &commandHeader();
60 
61     bool callFunction(const QString &cmd, const QStringList &args, QString &errorMessage);
62 
63     //
64     // KTextEditor::Command interface
65     //
66 public:
67     bool help(KTextEditor::View *view, const QString &cmd, QString &msg) override;
68     bool exec(KTextEditor::View *view, const QString &cmd, QString &msg, const KTextEditor::Range &range = KTextEditor::Range::invalid()) override;
69     bool supportsRange(const QString &cmd) override;
70 
71 private:
72     KateCommandLineScriptHeader m_commandHeader;
73 };
74 
75 #endif
76