From 602d0aa2dde6ea1cf15731445dcd392ae7c5811b Mon Sep 17 00:00:00 2001 From: Martin Lippert Date: Wed, 24 Apr 2019 13:41:38 +0200 Subject: [PATCH] allow text service clients to register for didOpen events --- .../util/SimpleTextDocumentService.java | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/headless-services/commons/commons-language-server/src/main/java/org/springframework/ide/vscode/commons/languageserver/util/SimpleTextDocumentService.java b/headless-services/commons/commons-language-server/src/main/java/org/springframework/ide/vscode/commons/languageserver/util/SimpleTextDocumentService.java index ecd5e4f2d..5a49d93bd 100644 --- a/headless-services/commons/commons-language-server/src/main/java/org/springframework/ide/vscode/commons/languageserver/util/SimpleTextDocumentService.java +++ b/headless-services/commons/commons-language-server/src/main/java/org/springframework/ide/vscode/commons/languageserver/util/SimpleTextDocumentService.java @@ -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 documents = new HashMap<>(); private ListenerList documentChangeListeners = new ListenerList<>(); private ListenerList documentCloseListeners = new ListenerList<>(); + private ListenerList 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 l) { + documentOpenListeners.add(l); + } + public void onDidChangeContent(Consumer l) { documentChangeListeners.add(l); }