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;
|
||||
void setDocumentationFormat(const QList<MarkupKind> &documentationFormat);
|
||||
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.
|
||||
|
@@ -29,6 +29,7 @@ namespace LanguageServerProtocol {
|
||||
|
||||
constexpr char actionsKey[] = "actions";
|
||||
constexpr char activeParameterKey[] = "activeParameter";
|
||||
constexpr char activeParameterSupportKey[] = "activeParameterSupport";
|
||||
constexpr char activeSignatureKey[] = "activeSignature";
|
||||
constexpr char addedKey[] = "added";
|
||||
constexpr char additionalTextEditsKey[] = "additionalTextEdits";
|
||||
|
@@ -145,6 +145,10 @@ public:
|
||||
void setParameters(const QList<ParameterInformation> ¶meters)
|
||||
{ insertArray(parametersKey, parameters); }
|
||||
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);
|
||||
TextDocumentClientCapabilities::SignatureHelpCapabilities::SignatureInformationCapabilities info;
|
||||
info.setDocumentationFormat({MarkupKind::markdown, MarkupKind::plaintext});
|
||||
info.setActiveParameterSupport(true);
|
||||
signatureHelp.setSignatureInformation(info);
|
||||
documentCapabilities.setSignatureHelp(signatureHelp);
|
||||
|
||||
|
@@ -61,11 +61,12 @@ QString FunctionHintProposalModel::text(int index) const
|
||||
if (index < 0 || m_sigis.signatures().size() <= index)
|
||||
return {};
|
||||
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();
|
||||
if (index != m_sigis.activeSignature().value_or(-1))
|
||||
return label;
|
||||
|
||||
const int parametersIndex = m_sigis.activeParameter().value_or(-1);
|
||||
if (parametersIndex < 0)
|
||||
return label;
|
||||
|
||||
|
Reference in New Issue
Block a user