Progress to fixing a 'almost jumpy' completion
Still not working in vscode though because a presumed bug in vscode magic indent handler.
This commit is contained in:
@@ -81,7 +81,7 @@ public class DocumentState implements IDocumentState {
|
||||
public void delete(boolean grabCursor, final int start, final int end) throws BadLocationException {
|
||||
final int tStart = org2new.transform(start, Direction.AFTER);
|
||||
if (end>start) { // skip work for 'delete nothing' op
|
||||
final int tEnd = org2new.transform(end, Direction.AFTER);
|
||||
final int tEnd = org2new.transform(end, Direction.BEFORE);
|
||||
if (tEnd>tStart) { // skip work for 'delete nothing' op
|
||||
if (doc!=null) {
|
||||
doc.replace(tStart, tEnd-tStart, "");
|
||||
|
||||
@@ -112,8 +112,8 @@ public class LspCompletionInterpreter implements IDocumentState {
|
||||
|
||||
ImmutableList.Builder<TextEdit> additionalEdits = ImmutableList.builder();
|
||||
|
||||
resolveAdditionalEdit(beforeMainEditRegion, additionalEdits);
|
||||
resolveAdditionalEdit(afterMainEditRegion, additionalEdits);
|
||||
resolveAdditionalEdit(beforeMainEditRegion, additionalEdits, Direction.BEFORE);
|
||||
resolveAdditionalEdit(afterMainEditRegion, additionalEdits, Direction.AFTER);
|
||||
|
||||
item.setAdditionalTextEdits(additionalEdits.build());
|
||||
|
||||
@@ -123,15 +123,15 @@ public class LspCompletionInterpreter implements IDocumentState {
|
||||
}
|
||||
}
|
||||
|
||||
protected void resolveAdditionalEdit(DocumentRegion editRegion, ImmutableList.Builder<TextEdit> builder)
|
||||
protected void resolveAdditionalEdit(DocumentRegion editRegion, ImmutableList.Builder<TextEdit> builder, Direction direction)
|
||||
throws BadLocationException {
|
||||
if (editRegion != null) {
|
||||
TextEdit edit = new TextEdit();
|
||||
edit.setRange(originalDoc.toRange(editRegion));
|
||||
OffsetTransformer org2New = docState.getOrg2New();
|
||||
String newText = docState.getDocument().textBetween(
|
||||
org2New.transform(editRegion.getStart(), Direction.BEFORE),
|
||||
org2New.transform(editRegion.getEnd(), Direction.AFTER));
|
||||
org2New.transform(editRegion.getStart(), direction),
|
||||
org2New.transform(editRegion.getEnd(), direction));
|
||||
edit.setNewText(newText);
|
||||
builder.add(edit);
|
||||
}
|
||||
|
||||
@@ -106,6 +106,18 @@ public class SimpleLanguageServer implements Sts4LanguageServer, LanguageClientA
|
||||
|
||||
private static final Scheduler RECONCILER_SCHEDULER = Schedulers.newSingle("Reconciler");
|
||||
|
||||
// private static final List<String> DEFAULT_TRIGGER_CHARS;
|
||||
//
|
||||
// static {
|
||||
// ImmutableList.Builder<String> builder = ImmutableList.builder();
|
||||
// for (char c = 'a'; c <= 'z'; c++) {
|
||||
// String ch = ""+c;
|
||||
// builder.add(ch);
|
||||
// builder.add(ch.toUpperCase());
|
||||
// }
|
||||
// DEFAULT_TRIGGER_CHARS = builder.build();
|
||||
// }
|
||||
|
||||
|
||||
public final String EXTENSION_ID;
|
||||
private final String CODE_ACTION_COMMAND_ID;
|
||||
@@ -367,6 +379,7 @@ public class SimpleLanguageServer implements Sts4LanguageServer, LanguageClientA
|
||||
c.setHoverProvider(true);
|
||||
|
||||
CompletionOptions completionProvider = new CompletionOptions();
|
||||
// completionProvider.setTriggerCharacters(DEFAULT_TRIGGER_CHARS);
|
||||
completionProvider.setResolveProvider(hasLazyCompletionResolver());
|
||||
c.setCompletionProvider(completionProvider);
|
||||
|
||||
|
||||
@@ -1488,6 +1488,20 @@ public class ApplicationYamlEditorTest extends AbstractPropsEditorTest {
|
||||
);
|
||||
}
|
||||
|
||||
@Test public void almostJumpyCompletion() throws Exception {
|
||||
defaultTestData();
|
||||
|
||||
assertCompletion(
|
||||
"server:\n" +
|
||||
" address: bark\n" +
|
||||
"port<*>\n"
|
||||
, // ==>
|
||||
"server:\n" +
|
||||
" address: bark\n" +
|
||||
" port: <*>\n"
|
||||
);
|
||||
}
|
||||
|
||||
@Test public void testBooleanValueCompletion() throws Exception {
|
||||
defaultTestData();
|
||||
assertCompletions(
|
||||
|
||||
Reference in New Issue
Block a user