Skip to content

Commit 914633c

Browse files
FlorianKroissmickaelistria
authored andcommitted
feat: Make AdjustIndentation the default insertTextMode for completion proposals without explicit insertTextMode
VS Code also uses this as the default, see https://github.com/microsoft/vscode-languageserver-node/blob/cd32d3e505e8ec8df660bc8e328d5f650673c2d8/client/src/common/completion.ts#L90
1 parent 67a16fb commit 914633c

5 files changed

Lines changed: 18 additions & 3 deletions

File tree

org.eclipse.lsp4e.test/META-INF/MANIFEST.MF

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
22
Bundle-ManifestVersion: 2
33
Bundle-Name: Tests for language server bundle (Incubation)
44
Bundle-SymbolicName: org.eclipse.lsp4e.test;singleton:=true
5-
Bundle-Version: 0.15.28.qualifier
5+
Bundle-Version: 0.15.29.qualifier
66
Fragment-Host: org.eclipse.lsp4e
77
Bundle-Vendor: Eclipse LSP4E
88
Bundle-RequiredExecutionEnvironment: JavaSE-17

org.eclipse.lsp4e.test/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
</parent>
99
<artifactId>org.eclipse.lsp4e.test</artifactId>
1010
<packaging>eclipse-test-plugin</packaging>
11-
<version>0.15.28-SNAPSHOT</version>
11+
<version>0.15.29-SNAPSHOT</version>
1212

1313
<properties>
1414
<os-jvm-flags /> <!-- for the default case -->

org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/completion/CompleteCompletionTest.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -561,6 +561,20 @@ public void testAdjustIndentation() throws Exception {
561561
((LSCompletionProposal) proposals[0]).apply(viewer, '\n', 0, invokeOffset);
562562
assertEquals("a\n\tb\n\tline1\n\tline2\nc", viewer.getDocument().get());
563563
}
564+
565+
@Test
566+
public void testAdjustIndentationIsDefault() throws Exception {
567+
ITextViewer viewer = TestUtils.openTextViewer(TestUtils.createUniqueTestFile(project, "a\n\tb\n\t\nc"));
568+
final var item = new CompletionItem("line1\nline2");
569+
// No insert mode specified -> fall back to default, which is AdjustIndentation
570+
item.setInsertTextMode(null);
571+
MockLanguageServer.INSTANCE.setCompletionList(new CompletionList(false, List.of(item)));
572+
int invokeOffset = 6;
573+
ICompletionProposal[] proposals = contentAssistProcessor.computeCompletionProposals(viewer, invokeOffset);
574+
assertEquals(1, proposals.length);
575+
((LSCompletionProposal) proposals[0]).apply(viewer, '\n', 0, invokeOffset);
576+
assertEquals("a\n\tb\n\tline1\n\tline2\nc", viewer.getDocument().get());
577+
}
564578

565579
@Test
566580
public void testAdjustIndentationWithPrefixInLine() throws Exception {

org.eclipse.lsp4e/src/org/eclipse/lsp4e/internal/SupportedFeatures.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,7 @@ public static TextDocumentClientCapabilities getTextDocumentClientCapabilities()
103103
"editRange", //$NON-NLS-1$
104104
"insertTextFormat", //$NON-NLS-1$
105105
"insertTextMode"))); //$NON-NLS-1$
106+
completionCapabilities.setInsertTextMode(InsertTextMode.AdjustIndentation);
106107
textDocumentClientCapabilities.setCompletion(completionCapabilities);
107108
final var definitionCapabilities = new DefinitionCapabilities();
108109
definitionCapabilities.setLinkSupport(true);

org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/completion/LSCompletionProposal.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -522,7 +522,7 @@ protected void apply(IDocument document, char trigger, int stateMask, int offset
522522
insertText = textEdit.getNewText();
523523
Map<String, List<LinkedPosition>> regions = Collections.emptyMap();
524524
int insertionOffset = LSPEclipseUtils.toOffset(textEdit.getRange().getStart(), document);
525-
if (item.getInsertTextMode() == InsertTextMode.AdjustIndentation) {
525+
if (item.getInsertTextMode() == InsertTextMode.AdjustIndentation || item.getInsertTextMode() == null) {
526526
insertText = adjustIndentation(document, insertText, insertionOffset);
527527
}
528528
insertionOffset = computeNewOffset(item.getAdditionalTextEdits(), insertionOffset, document);

0 commit comments

Comments
 (0)