1 /*
2     SPDX-FileCopyrightText: 2021 Ilia Kats <ilia-kats@gmx.net>
3 
4     SPDX-License-Identifier: LGPL-2.0-or-later
5 */
6 
7 #ifndef KATELATEXCOMPLETIONMODEL_H
8 #define KATELATEXCOMPLETIONMODEL_H
9 
10 #include <QModelIndex>
11 
12 #include <KTextEditor/CodeCompletionModel>
13 #include <KTextEditor/CodeCompletionModelControllerInterface>
14 #include <KTextEditor/Cursor>
15 #include <KTextEditor/Range>
16 
17 namespace KTextEditor
18 {
19 class View;
20 }
21 
22 struct Completion;
23 class LatexCompletionModel : public KTextEditor::CodeCompletionModel, public KTextEditor::CodeCompletionModelControllerInterface
24 {
25     Q_OBJECT
26     Q_INTERFACES(KTextEditor::CodeCompletionModelControllerInterface)
27 public:
28     LatexCompletionModel(QObject *parent);
29     KTextEditor::Range completionRange(KTextEditor::View *view, const KTextEditor::Cursor &position) override;
30     bool shouldStartCompletion(KTextEditor::View *view, const QString &insertedText, bool userInsertion, const KTextEditor::Cursor &position) override;
31     bool shouldAbortCompletion(KTextEditor::View *view, const KTextEditor::Range &range, const QString &currentCompletion) override;
32     void completionInvoked(KTextEditor::View *view, const KTextEditor::Range &range, InvocationType invocationType) override;
33     void executeCompletionItem(KTextEditor::View *view, const KTextEditor::Range &word, const QModelIndex &index) const override;
matchingItem(const QModelIndex &)34     inline KTextEditor::CodeCompletionModelControllerInterface::MatchReaction matchingItem(const QModelIndex &) override
35     {
36         return None;
37     };
38     QVariant data(const QModelIndex &index, int role) const override;
39 
40 private:
41     QPair<int, int> m_matches = {0, 0};
42 };
43 #endif
44