Skip to content

Commit

Permalink
[lsp] fix didChange, process completion item without textedit
Browse files Browse the repository at this point in the history
Signed-off-by: Sven Efftinge <sven.efftinge@typefox.io>
  • Loading branch information
svenefftinge committed May 27, 2016
1 parent 9802ca8 commit 3f15489
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 14 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ public void onDocumentChange(DocumentChangeEvent event) {
private void handleDocumentChange(DocumentChangeEvent event) {
Document document = event.getDocument().getDocument();
TextPosition startPosition = document.getPositionFromIndex(event.getOffset());
TextPosition endPosition = document.getPositionFromIndex(event.getOffset() + event.getLength());
TextPosition endPosition = document.getPositionFromIndex(event.getOffset() + event.getRemoveCharCount());

DidChangeTextDocumentParamsDTO changeDTO = dtoFactory.createDto(DidChangeTextDocumentParamsDTO.class);
String uri = document.getFile().getPath();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -72,12 +72,17 @@ public CompletionImpl(CompletionItemDTO completionItem) {
@Override
public void apply(Document document) {
//TODO in general resolve completion item may not provide getTextEdit, need to add checks
RangeDTO range = completionItem.getTextEdit().getRange();
int startOffset = document.getIndexFromPosition(
new TextPosition(range.getStart().getLine(), range.getStart().getCharacter()));
int endOffset = document
.getIndexFromPosition(new TextPosition(range.getEnd().getLine(), range.getEnd().getCharacter()));
document.replace(startOffset, endOffset - startOffset, completionItem.getTextEdit().getNewText());
if (completionItem.getTextEdit() != null) {
RangeDTO range = completionItem.getTextEdit().getRange();
int startOffset = document.getIndexFromPosition(
new TextPosition(range.getStart().getLine(), range.getStart().getCharacter()));
int endOffset = document
.getIndexFromPosition(new TextPosition(range.getEnd().getLine(), range.getEnd().getCharacter()));
document.replace(startOffset, endOffset - startOffset, completionItem.getTextEdit().getNewText());
} else {
String insertText = completionItem.getInsertText()==null?completionItem.getLabel():completionItem.getInsertText();
document.replace(document.getCursorOffset(), 0, insertText);
}
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,13 +36,10 @@ public LanguageServer findServer(String uri) {

public void registerForExtension(String extension, LanguageServer server) {
this.extensionToServer.put(extension, server);
server.initialize(new InitializeParamsImpl() {
{
//HACK hard coded properties
setProcessId(4711);
setRootPath("/projects/");
}
});
InitializeParamsImpl initializeParams = new InitializeParamsImpl();
initializeParams.setProcessId(4711);
initializeParams.setRootPath("/projects/");
server.initialize(initializeParams);
server.getTextDocumentService().onPublishDiagnostics(new NotificationCallback<PublishDiagnosticsParams>() {
@Override
public void call(PublishDiagnosticsParams param) {
Expand Down

0 comments on commit 3f15489

Please sign in to comment.