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 }