File indexing completed on 2024-05-19 15:41:37

0001 /*
0002     SPDX-FileCopyrightText: 2011-2014 Sven Brauch <svenbrauch@googlemail.com>
0003 
0004     SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #include "keyword.h"
0008 
0009 #include <KTextEditor/View>
0010 #include <KTextEditor/Document>
0011 #include <KTextEditor/CodeCompletionModel>
0012 
0013 #include <language/duchain/ducontext.h>
0014 #include <language/codecompletion/codecompletionmodel.h>
0015 
0016 using namespace KDevelop;
0017 using namespace KTextEditor;
0018 
0019 namespace Python {
0020 
0021 KeywordItem::KeywordItem(KDevelop::CodeCompletionContext::Ptr context, QString keyword, QString descr, Flags flags)
0022     : NormalDeclarationCompletionItem (DeclarationPointer(), context, 0)
0023     , m_description(descr)
0024     , m_flags(flags)
0025 {
0026     m_keyword = keyword;
0027 }
0028 
0029 void KeywordItem::execute(View* view, const Range& word)
0030 {
0031     if ( m_flags & ForceLineBeginning ) {
0032         Range newRange(Cursor(word.start().line(), 0), word.end());
0033         view->document()->replaceText(newRange, m_keyword);
0034     }
0035     else {
0036         view->document()->replaceText(word, m_keyword);
0037     }
0038 }
0039 
0040 QVariant KeywordItem::data ( const QModelIndex& index, int role, const KDevelop::CodeCompletionModel* model ) const
0041 {
0042     switch (role) {
0043     case KDevelop::CodeCompletionModel::IsExpandable:
0044         return QVariant(false);
0045     case Qt::DisplayRole:
0046         if (index.column() == KTextEditor::CodeCompletionModel::Name) {
0047             QString kw = m_keyword;
0048             return QVariant(kw.replace("\n", ""));
0049         }
0050         else if ( index.column() == KTextEditor::CodeCompletionModel::Prefix ) {
0051             return QVariant(m_description);
0052         }
0053         else {
0054             return QVariant("");
0055         }
0056         break;
0057     case KTextEditor::CodeCompletionModel::ItemSelected:
0058         return QVariant("");
0059     case KTextEditor::CodeCompletionModel::InheritanceDepth:
0060         return QVariant(0);
0061     case KDevelop::CodeCompletionModel::BestMatchesCount:
0062         return 5;
0063     case KDevelop::CodeCompletionModel::MatchQuality:
0064         if ( m_flags & ImportantItem ) {
0065             return 10;
0066         }
0067         return 0; // most keyword items are not that great for completion
0068     default:
0069         //pass
0070         break;
0071     }
0072 
0073     return NormalDeclarationCompletionItem::data(index, role, model);
0074 }
0075 
0076 }