diff options
| author | Yong He <yonghe@outlook.com> | 2025-07-01 14:02:35 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-07-01 21:02:35 +0000 |
| commit | eb7f3357a1c316bad51cf0bfaea27d81a93f96ad (patch) | |
| tree | 448a2a07d36ef11b66ef79522086765efc5e708b /source/slang/slang-language-server-completion.cpp | |
| parent | 5120c1cd072548654c9ce79fa85426a5e48736c4 (diff) | |
Misc language server improvements. (#7569)
* Misc language server improvements.
* Fix.
* Fix decl path printing for existential lookup.
* More existential decl path fix.
* Polish.
* Fix test.
Diffstat (limited to 'source/slang/slang-language-server-completion.cpp')
| -rw-r--r-- | source/slang/slang-language-server-completion.cpp | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/source/slang/slang-language-server-completion.cpp b/source/slang/slang-language-server-completion.cpp index 9a88fbaa7..b5864d972 100644 --- a/source/slang/slang-language-server-completion.cpp +++ b/source/slang/slang-language-server-completion.cpp @@ -617,6 +617,16 @@ CompletionResult CompletionContext::collectMembersAndSymbols() default: return result; } + + // If we are completing an override function signature, don't add keywords to the result. + switch (linkage->contentAssistInfo.completionSuggestions.formatMode) + { + case CompletionSuggestions::FormatMode::FullSignature: + case CompletionSuggestions::FormatMode::FuncSignatureWithoutReturnType: + addKeywords = false; + break; + } + HashSet<String> deduplicateSet; for (Index i = 0; i < linkage->contentAssistInfo.completionSuggestions.candidateItems.getCount(); @@ -639,6 +649,28 @@ CompletionResult CompletionContext::collectMembersAndSymbols() nameStart); if (item.label.getLength() == 0) continue; + if (linkage->contentAssistInfo.completionSuggestions.formatMode == + CompletionSuggestions::FormatMode::FullSignature) + { + // If the completion item is a `static` function, but there is no `static` keyword + // on the current incomplete decl, then we will add `static` keyword to the completion + // result. + if (suggestedItem.declRef.getDecl() && + suggestedItem.declRef.getDecl()->findModifier<HLSLStaticModifier>() && + linkage->contentAssistInfo.completionSuggestions.currentPartialDecl && + !linkage->contentAssistInfo.completionSuggestions.currentPartialDecl + ->findModifier<HLSLStaticModifier>()) + { + item.label = "static " + item.label; + nameStart += 7; + // Add an item for 'static' keyword. + LanguageServerProtocol::CompletionItem staticItem; + staticItem.label = "static"; + staticItem.kind = LanguageServerProtocol::kCompletionItemKindKeyword; + staticItem.data = "-1"; // Use -1 to indicate this is a keyword. + result.add(staticItem); + } + } item.kind = LanguageServerProtocol::kCompletionItemKindKeyword; if (as<TypeConstraintDecl>(member)) { |
