allow text service clients to register for didOpen events

This commit is contained in:
Martin Lippert
2019-04-24 13:41:38 +02:00
parent 27fcf9787a
commit 602d0aa2dd

View File

@@ -1,5 +1,5 @@
/*******************************************************************************
* Copyright (c) 2016, 2018 Pivotal, Inc.
* Copyright (c) 2016, 2019 Pivotal, Inc.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -77,6 +77,7 @@ public class SimpleTextDocumentService implements TextDocumentService, DocumentE
private Map<String, TrackedDocument> documents = new HashMap<>();
private ListenerList<TextDocumentContentChange> documentChangeListeners = new ListenerList<>();
private ListenerList<TextDocument> documentCloseListeners = new ListenerList<>();
private ListenerList<TextDocument> documentOpenListeners = new ListenerList<>();
private CompletionHandler completionHandler = null;
private CompletionResolveHandler completionResolveHandler = null;
@@ -182,11 +183,15 @@ public class SimpleTextDocumentService implements TextDocumentService, DocumentE
//Log.info("didOpen: "+params.getTextDocument().getUri());
LanguageId languageId = LanguageId.of(docId.getLanguageId());
int version = docId.getVersion();
if (url!=null) {
if (url != null) {
String text = params.getTextDocument().getText();
TrackedDocument td = createDocument(url, languageId, version, text).open();
log.debug("Opened "+td.getOpenCount()+" times: "+url);
log.debug("Opened " + td.getOpenCount() + " times: " + url);
TextDocument doc = td.getDocument();
documentOpenListeners.fire(doc);
TextDocumentContentChangeEvent change = new TextDocumentContentChangeEvent() {
@Override
public Range getRange() {
@@ -239,6 +244,10 @@ public class SimpleTextDocumentService implements TextDocumentService, DocumentE
documentChangeListeners.fire(new TextDocumentContentChange(doc, changes));
}
public void onDidOpen(Consumer<TextDocument> l) {
documentOpenListeners.add(l);
}
public void onDidChangeContent(Consumer<TextDocumentContentChange> l) {
documentChangeListeners.add(l);
}