qmlls: enabled/disable embedded codemodel

Make the (de)activateDocument() method in Client virtual, and override
it in QmllsClient to actually be able to enable or disable the embedded
codemodel.

Also add a setSourcesWithCapabilities method to QmlJSEditorDocument that
calls the same-named method in QmlJSEditorDocumentPrivate.

Fixes: QTCREATORBUG-32025
Task-number: QTCREATORBUG-31897
Change-Id: I5802c1c3f2f983236182bbefa58ff425692b2532
Reviewed-by: David Schulz <david.schulz@qt.io>
This commit is contained in:
Sami Shalayel
2024-11-14 16:14:27 +01:00
parent a737828d7d
commit 1b11ba2772
6 changed files with 35 additions and 4 deletions

View File

@@ -114,9 +114,9 @@ public:
virtual void openDocument(TextEditor::TextDocument *document);
void closeDocument(TextEditor::TextDocument *document,
const std::optional<Utils::FilePath> &overwriteFilePath = {});
void activateDocument(TextEditor::TextDocument *document);
virtual void activateDocument(TextEditor::TextDocument *document);
void activateEditor(Core::IEditor *editor);
void deactivateDocument(TextEditor::TextDocument *document);
virtual void deactivateDocument(TextEditor::TextDocument *document);
bool documentOpen(const TextEditor::TextDocument *document) const;
TextEditor::TextDocument *documentForFilePath(const Utils::FilePath &file) const;
void setShadowDocument(const Utils::FilePath &filePath, const QString &contents);

View File

@@ -831,4 +831,11 @@ void QmlJSEditorDocument::triggerPendingUpdates()
}
}
void QmlJSEditorDocument::setSourcesWithCapabilities(
const LanguageServerProtocol::ServerCapabilities &cap)
{
d->setSourcesWithCapabilities(cap);
}
} // QmlJSEditor

View File

@@ -5,8 +5,9 @@
#include "qmljseditor_global.h"
#include <qmljstools/qmljssemanticinfo.h>
#include <languageserverprotocol/servercapabilities.h>
#include <texteditor/textdocument.h>
#include <qmljstools/qmljssemanticinfo.h>
#include <QTextLayout>
@@ -37,6 +38,8 @@ public:
void setIsDesignModePreferred(bool value);
bool isDesignModePreferred() const;
void setSourcesWithCapabilities(const LanguageServerProtocol::ServerCapabilities &cap);
signals:
void updateCodeWarnings(QmlJS::Document::Ptr doc);
void semanticInfoUpdated(const QmlJSTools::SemanticInfo &semanticInfo);

View File

@@ -5,7 +5,6 @@
#include "qmljseditorconstants.h"
#include "qmljseditortr.h"
#include "qmllsclient.h"
#include "qmllsclientsettings.h"
#include <coreplugin/coreconstants.h>
#include <coreplugin/icore.h>

View File

@@ -4,6 +4,7 @@
#include "qmllsclient.h"
#include "qmljseditorconstants.h"
#include "qmljseditordocument.h"
#include "qmljsquickfix.h"
#include "qmllsclientsettings.h"
@@ -114,6 +115,22 @@ public:
}
};
void QmllsClient::activateDocument(TextEditor::TextDocument *document)
{
Client::activateDocument(document);
if (auto qmljseditor = qobject_cast<QmlJSEditorDocument *>(document))
qmljseditor->setSourcesWithCapabilities(capabilities());
}
void QmllsClient::deactivateDocument(TextEditor::TextDocument *document)
{
Client::deactivateDocument(document);
if (auto qmljseditor = qobject_cast<QmlJSEditorDocument *>(document))
qmljseditor->setSourcesWithCapabilities(LanguageServerProtocol::ServerCapabilities{});
}
QmllsClient::QmllsClient(StdIOClientInterface *interface)
: Client(interface)
{

View File

@@ -10,6 +10,8 @@
#include <languageclient/client.h>
#include <languageclient/languageclientinterface.h>
#include "qmllsclientsettings.h"
namespace QmlJSEditor {
class QMLJSEDITOR_EXPORT QmllsClient : public LanguageClient::Client
@@ -55,6 +57,9 @@ public:
void startImpl() override;
void updateQmllsSemanticHighlightingCapability();
void activateDocument(TextEditor::TextDocument *document) override;
void deactivateDocument(TextEditor::TextDocument *document) override;
private:
static QMap<QString, int> semanticTokenTypesMap();
};