[#2118] Implement keyword snippets for control-flow keywords (if/for/while/etc.) #2387
+287
−2
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR implements snippet completions for control-flow keywords (if, for, while, guard, switch, repeat) when they are used in code completion.
The solution involved updating "CodeCompletionSession.swift" to identify keyword completions (.keyword) and overwrite their "insertText" and "textEdit" with the correct LSP snippet strings, setting the insertTextFormat to .snippet.
This ensures that keywords now contain placeholders (e.g.,
${1:condition}and$0) required by LSP clients.Verification
New unit tests were added to "SwiftCompletionSnippetTests.swift" to explicitly verify:
$1,$0).All local tests, including the focused test (
swift test --filter SwiftCompletionSnippetTests/testKeywordIfProvidesSnippet), passed successfully.Checklist (Based on Contributing Guide)
1-Code has been formatted using `swift format -ipr
2-New tests were added to cover the feature.