LanguageClient: add current document locator filter

Change-Id: I20442a254e4e016088b2da845d87af6e9f836731
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
David Schulz
2019-04-05 10:05:25 +02:00
parent ac91f6f452
commit 69e880c050
11 changed files with 349 additions and 43 deletions

View File

@@ -37,6 +37,7 @@
#include <texteditor/textdocument.h>
#include <texteditor/texteditor.h>
#include <utils/textutils.h>
#include <utils/utilsicons.h>
#include <QFile>
#include <QTextDocument>
@@ -230,4 +231,44 @@ void updateEditorToolBar(Core::IEditor *editor)
}
}
const QIcon symbolIcon(int type)
{
using namespace Utils::CodeModelIcon;
static QMap<SymbolKind, QIcon> icons;
if (type < int(SymbolKind::FirstSymbolKind) || type > int(SymbolKind::LastSymbolKind))
return {};
auto kind = static_cast<SymbolKind>(type);
if (icons.contains(kind)) {
switch (kind) {
case SymbolKind::File: icons[kind] = Utils::Icons::NEWFILE.icon(); break;
case SymbolKind::Module: icons[kind] = iconForType(Namespace); break;
case SymbolKind::Namespace: icons[kind] = iconForType(Namespace); break;
case SymbolKind::Package: icons[kind] = iconForType(Namespace); break;
case SymbolKind::Class: icons[kind] = iconForType(Class); break;
case SymbolKind::Method: icons[kind] = iconForType(FuncPublic); break;
case SymbolKind::Property: icons[kind] = iconForType(Property); break;
case SymbolKind::Field: icons[kind] = iconForType(VarPublic); break;
case SymbolKind::Constructor: icons[kind] = iconForType(Class); break;
case SymbolKind::Enum: icons[kind] = iconForType(Enum); break;
case SymbolKind::Interface: icons[kind] = iconForType(Class); break;
case SymbolKind::Function: icons[kind] = iconForType(FuncPublic); break;
case SymbolKind::Variable: icons[kind] = iconForType(VarPublic); break;
case SymbolKind::Constant: icons[kind] = iconForType(VarPublic); break;
case SymbolKind::String: icons[kind] = iconForType(VarPublic); break;
case SymbolKind::Number: icons[kind] = iconForType(VarPublic); break;
case SymbolKind::Boolean: icons[kind] = iconForType(VarPublic); break;
case SymbolKind::Array: icons[kind] = iconForType(VarPublic); break;
case SymbolKind::Object: icons[kind] = iconForType(Class); break;
case SymbolKind::Key: icons[kind] = iconForType(Keyword); break;
case SymbolKind::Null: icons[kind] = iconForType(Keyword); break;
case SymbolKind::EnumMember: icons[kind] = iconForType(Enumerator); break;
case SymbolKind::Struct: icons[kind] = iconForType(Struct); break;
case SymbolKind::Event: icons[kind] = iconForType(FuncPublic); break;
case SymbolKind::Operator: icons[kind] = iconForType(FuncPublic); break;
case SymbolKind::TypeParameter: icons[kind] = iconForType(VarPublic); break;
}
}
return icons[kind];
}
} // namespace LanguageClient