forked from qt-creator/qt-creator
LanguageClient: Export LanguageClientOutlineItem
To enable more customizations by specialized clients. Change-Id: I0ad92e248e931389c3fa239df424df8883e1d86e Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: <github-actions-qt-creator@cristianadam.eu> Reviewed-by: David Schulz <david.schulz@qt.io>
This commit is contained in:
@@ -38,6 +38,7 @@
|
||||
#include <languageclient/languageclienthoverhandler.h>
|
||||
#include <languageclient/languageclientinterface.h>
|
||||
#include <languageclient/languageclientmanager.h>
|
||||
#include <languageclient/languageclientoutline.h>
|
||||
#include <languageclient/languageclientsymbolsupport.h>
|
||||
#include <languageclient/languageclientutils.h>
|
||||
#include <languageclient/progressmanager.h>
|
||||
@@ -128,6 +129,20 @@ public:
|
||||
: Request("textDocument/symbolInfo", params) {}
|
||||
};
|
||||
|
||||
class ClangdOutlineItem : public LanguageClientOutlineItem
|
||||
{
|
||||
using LanguageClientOutlineItem::LanguageClientOutlineItem;
|
||||
private:
|
||||
QVariant data(int column, int role) const override
|
||||
{
|
||||
if (role == Qt::DisplayRole) {
|
||||
return ClangdClient::displayNameFromDocumentSymbol(
|
||||
static_cast<SymbolKind>(type()), name(), detail());
|
||||
}
|
||||
return LanguageClientOutlineItem::data(column, role);
|
||||
}
|
||||
};
|
||||
|
||||
void setupClangdConfigFile()
|
||||
{
|
||||
const Utils::FilePath targetConfigFile = CppEditor::ClangdSettings::clangdUserConfigFilePath();
|
||||
@@ -427,7 +442,6 @@ ClangdClient::ClangdClient(Project *project, const Utils::FilePath &jsonDbDir, c
|
||||
});
|
||||
setCurrentProject(project);
|
||||
setDocumentChangeUpdateThreshold(d->settings.documentUpdateThreshold);
|
||||
setSymbolStringifier(displayNameFromDocumentSymbol);
|
||||
setSemanticTokensHandler([this](TextDocument *doc, const QList<ExpandedSemanticToken> &tokens,
|
||||
int version, bool force) {
|
||||
d->handleSemanticTokens(doc, tokens, version, force);
|
||||
@@ -661,6 +675,12 @@ DiagnosticManager *ClangdClient::createDiagnosticManager()
|
||||
return diagnosticManager;
|
||||
}
|
||||
|
||||
LanguageClientOutlineItem *ClangdClient::createOutlineItem(
|
||||
const LanguageServerProtocol::DocumentSymbol &symbol)
|
||||
{
|
||||
return new ClangdOutlineItem(this, symbol);
|
||||
}
|
||||
|
||||
bool ClangdClient::referencesShadowFile(const TextEditor::TextDocument *doc,
|
||||
const Utils::FilePath &candidate)
|
||||
{
|
||||
|
||||
@@ -137,6 +137,8 @@ private:
|
||||
const CustomInspectorTabs createCustomInspectorTabs() override;
|
||||
TextEditor::RefactoringChangesData *createRefactoringChangesBackend() const override;
|
||||
LanguageClient::DiagnosticManager *createDiagnosticManager() override;
|
||||
LanguageClient::LanguageClientOutlineItem *createOutlineItem(
|
||||
const LanguageServerProtocol::DocumentSymbol &symbol) override;
|
||||
bool referencesShadowFile(const TextEditor::TextDocument *doc,
|
||||
const Utils::FilePath &candidate) override;
|
||||
bool fileBelongsToProject(const Utils::FilePath &filePath) const override;
|
||||
|
||||
Reference in New Issue
Block a user