File indexing completed on 2024-05-05 05:52:18

0001 /*  This file is part of the Kate project.
0002  *  Based on the snippet plugin from KDevelop 4.
0003  *
0004  *  SPDX-FileCopyrightText: 2008 Andreas Pakulat <apaku@gmx.de>
0005  *  SPDX-FileCopyrightText: 2012 Christoph Cullmann <cullmann@kde.org>
0006  *
0007  *  SPDX-License-Identifier: LGPL-2.0-or-later
0008  */
0009 
0010 #pragma once
0011 
0012 #include <ktexteditor/codecompletionmodel.h>
0013 #include <ktexteditor/codecompletionmodelcontrollerinterface.h>
0014 
0015 namespace KTextEditor
0016 {
0017 class View;
0018 }
0019 
0020 class SnippetCompletionItem;
0021 
0022 class SnippetCompletionModel : public KTextEditor::CodeCompletionModel, public KTextEditor::CodeCompletionModelControllerInterface
0023 {
0024     Q_OBJECT
0025     Q_INTERFACES(KTextEditor::CodeCompletionModelControllerInterface)
0026 
0027 public:
0028     SnippetCompletionModel();
0029     ~SnippetCompletionModel() override;
0030 
0031     QVariant data(const QModelIndex &idx, int role = Qt::DisplayRole) const override;
0032     void completionInvoked(KTextEditor::View *view, const KTextEditor::Range &range, KTextEditor::CodeCompletionModel::InvocationType invocationType) override;
0033     void executeCompletionItem(KTextEditor::View *view, const KTextEditor::Range &word, const QModelIndex &index) const override;
0034     int rowCount(const QModelIndex &parent = QModelIndex()) const override;
0035     QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const override;
0036     QModelIndex parent(const QModelIndex &index) const override;
0037     bool shouldStartCompletion(KTextEditor::View *view, const QString &insertedText, bool userInsertion, const KTextEditor::Cursor &position) override;
0038     bool shouldAbortCompletion(KTextEditor::View *view, const KTextEditor::Range &range, const QString &currentCompletion) override;
0039 
0040 private:
0041     void initData(KTextEditor::View *view);
0042     QList<SnippetCompletionItem *> m_snippets;
0043 };