forked from qt-creator/qt-creator
LSP: Add support for activeParameter of SignatureInformation
Task-number: QTCREATORBUG-26346 Change-Id: Ieab18f08e4f1b9fa6cacfae0a18310af4bc35165 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
This commit is contained in:
@@ -336,6 +336,12 @@ public:
|
|||||||
Utils::optional<QList<MarkupKind>> documentationFormat() const;
|
Utils::optional<QList<MarkupKind>> documentationFormat() const;
|
||||||
void setDocumentationFormat(const QList<MarkupKind> &documentationFormat);
|
void setDocumentationFormat(const QList<MarkupKind> &documentationFormat);
|
||||||
void clearDocumentationFormat() { remove(documentationFormatKey); }
|
void clearDocumentationFormat() { remove(documentationFormatKey); }
|
||||||
|
|
||||||
|
Utils::optional<bool> activeParameterSupport() const
|
||||||
|
{ return optionalValue<bool>(activeParameterSupportKey); }
|
||||||
|
void setActiveParameterSupport(bool activeParameterSupport)
|
||||||
|
{ insert(activeParameterSupportKey, activeParameterSupport); }
|
||||||
|
void clearActiveParameterSupport() { remove(activeParameterSupportKey); }
|
||||||
};
|
};
|
||||||
|
|
||||||
// The client supports the following `SignatureInformation` specific properties.
|
// The client supports the following `SignatureInformation` specific properties.
|
||||||
|
@@ -29,6 +29,7 @@ namespace LanguageServerProtocol {
|
|||||||
|
|
||||||
constexpr char actionsKey[] = "actions";
|
constexpr char actionsKey[] = "actions";
|
||||||
constexpr char activeParameterKey[] = "activeParameter";
|
constexpr char activeParameterKey[] = "activeParameter";
|
||||||
|
constexpr char activeParameterSupportKey[] = "activeParameterSupport";
|
||||||
constexpr char activeSignatureKey[] = "activeSignature";
|
constexpr char activeSignatureKey[] = "activeSignature";
|
||||||
constexpr char addedKey[] = "added";
|
constexpr char addedKey[] = "added";
|
||||||
constexpr char additionalTextEditsKey[] = "additionalTextEdits";
|
constexpr char additionalTextEditsKey[] = "additionalTextEdits";
|
||||||
|
@@ -145,6 +145,10 @@ public:
|
|||||||
void setParameters(const QList<ParameterInformation> ¶meters)
|
void setParameters(const QList<ParameterInformation> ¶meters)
|
||||||
{ insertArray(parametersKey, parameters); }
|
{ insertArray(parametersKey, parameters); }
|
||||||
void clearParameters() { remove(parametersKey); }
|
void clearParameters() { remove(parametersKey); }
|
||||||
|
|
||||||
|
Utils::optional<int> activeParameter() const { return optionalValue<int>(activeParameterKey); }
|
||||||
|
void setActiveParameter(int activeParameter) { insert(activeParameterKey, activeParameter); }
|
||||||
|
void clearActiveParameter() { remove(activeParameterKey); }
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -248,6 +248,7 @@ static ClientCapabilities generateClientCapabilities()
|
|||||||
signatureHelp.setDynamicRegistration(true);
|
signatureHelp.setDynamicRegistration(true);
|
||||||
TextDocumentClientCapabilities::SignatureHelpCapabilities::SignatureInformationCapabilities info;
|
TextDocumentClientCapabilities::SignatureHelpCapabilities::SignatureInformationCapabilities info;
|
||||||
info.setDocumentationFormat({MarkupKind::markdown, MarkupKind::plaintext});
|
info.setDocumentationFormat({MarkupKind::markdown, MarkupKind::plaintext});
|
||||||
|
info.setActiveParameterSupport(true);
|
||||||
signatureHelp.setSignatureInformation(info);
|
signatureHelp.setSignatureInformation(info);
|
||||||
documentCapabilities.setSignatureHelp(signatureHelp);
|
documentCapabilities.setSignatureHelp(signatureHelp);
|
||||||
|
|
||||||
|
@@ -61,11 +61,12 @@ QString FunctionHintProposalModel::text(int index) const
|
|||||||
if (index < 0 || m_sigis.signatures().size() <= index)
|
if (index < 0 || m_sigis.signatures().size() <= index)
|
||||||
return {};
|
return {};
|
||||||
const SignatureInformation signature = m_sigis.signatures().at(index);
|
const SignatureInformation signature = m_sigis.signatures().at(index);
|
||||||
|
int parametersIndex = signature.activeParameter().value_or(-1);
|
||||||
|
if (parametersIndex < 0) {
|
||||||
|
if (index == m_sigis.activeSignature().value_or(-1))
|
||||||
|
parametersIndex = m_sigis.activeParameter().value_or(-1);
|
||||||
|
}
|
||||||
QString label = signature.label();
|
QString label = signature.label();
|
||||||
if (index != m_sigis.activeSignature().value_or(-1))
|
|
||||||
return label;
|
|
||||||
|
|
||||||
const int parametersIndex = m_sigis.activeParameter().value_or(-1);
|
|
||||||
if (parametersIndex < 0)
|
if (parametersIndex < 0)
|
||||||
return label;
|
return label;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user