qmljs: use qmlls for 'go to definition'

Use the language client in qmljseditorWidget to do 'go to definition'
aka 'findLinkAt', when the language client is enabled.

Also move static helper method getQmllsClient up in the file.

Task-number: QTCREATORBUG-29567
Change-Id: I4f9132ba5f6bffc5090f3b1f7f6ccfd0c7b40e2a
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
Reviewed-by: David Schulz <david.schulz@qt.io>
Reviewed-by: Semih Yavuz <semih.yavuz@qt.io>
This commit is contained in:
Sami Shalayel
2023-09-04 13:46:04 +02:00
parent 726cc7f5cd
commit 77b368045c

View File

@@ -94,6 +94,18 @@ using namespace Utils;
namespace QmlJSEditor {
static LanguageClient::Client *getQmllsClient(const Utils::FilePath &fileName)
{
// the value in disableBuiltinCodemodel is only valid when useQmlls is enabled
if (QmlJsEditingSettings::get().qmllsSettings().useQmlls
&& !QmlJsEditingSettings::get().qmllsSettings().disableBuiltinCodemodel)
return nullptr;
auto client = LanguageClient::LanguageClientManager::clientForFilePath(fileName);
return client;
}
//
// QmlJSEditorWidget
//
@@ -741,9 +753,14 @@ void QmlJSEditorWidget::inspectElementUnderCursor() const
void QmlJSEditorWidget::findLinkAt(const QTextCursor &cursor,
const Utils::LinkHandler &processLinkCallback,
bool /*resolveTarget*/,
bool resolveTarget,
bool /*inNextSplit*/)
{
if (auto client = getQmllsClient(textDocument()->filePath())) {
client->findLinkAt(textDocument(), cursor, processLinkCallback, resolveTarget);
return;
}
const SemanticInfo semanticInfo = m_qmlJsEditorDocument->semanticInfo();
if (! semanticInfo.isValid())
return processLinkCallback(Utils::Link());
@@ -859,17 +876,6 @@ void QmlJSEditorWidget::findLinkAt(const QTextCursor &cursor,
processLinkCallback(Utils::Link());
}
static LanguageClient::Client *getQmllsClient(const Utils::FilePath &fileName)
{
// the value in disableBuiltinCodemodel is only valid when useQmlls is enabled
if (QmlJsEditingSettings::get().qmllsSettings().useQmlls
&& !QmlJsEditingSettings::get().qmllsSettings().disableBuiltinCodemodel)
return nullptr;
auto client = LanguageClient::LanguageClientManager::clientForFilePath(fileName);
return client;
}
void QmlJSEditorWidget::findUsages()
{
const Utils::FilePath fileName = textDocument()->filePath();