diff --git a/headless-services/boot-java-language-server/src/main/java/org/springframework/ide/vscode/boot/java/BootJavaLanguageServer.java b/headless-services/boot-java-language-server/src/main/java/org/springframework/ide/vscode/boot/java/BootJavaLanguageServer.java index bbe8c4399..f9b7ba00f 100644 --- a/headless-services/boot-java-language-server/src/main/java/org/springframework/ide/vscode/boot/java/BootJavaLanguageServer.java +++ b/headless-services/boot-java-language-server/src/main/java/org/springframework/ide/vscode/boot/java/BootJavaLanguageServer.java @@ -92,7 +92,6 @@ public class BootJavaLanguageServer extends SimpleLanguageServer { documents.onDidChangeContent(params -> { TextDocument doc = params.getDocument(); validateWith(doc.getId(), reconcileEngine); - highlighWith(doc, new WordHighlighter(this, "foo")); }); ICompletionEngine bootCompletionEngine = createCompletionEngine(javaProjectFinder, indexProvider); diff --git a/headless-services/boot-java-language-server/src/main/java/org/springframework/ide/vscode/boot/java/WordHighlighter.java b/headless-services/boot-java-language-server/src/main/java/org/springframework/ide/vscode/boot/java/WordHighlighter.java deleted file mode 100644 index c089d78ff..000000000 --- a/headless-services/boot-java-language-server/src/main/java/org/springframework/ide/vscode/boot/java/WordHighlighter.java +++ /dev/null @@ -1,58 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2017 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 - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * Pivotal, Inc. - initial API and implementation - *******************************************************************************/ -package org.springframework.ide.vscode.boot.java; - -import java.util.List; -import java.util.function.Function; - -import org.eclipse.lsp4j.Range; -import org.springframework.ide.vscode.commons.languageserver.util.SimpleLanguageServer; -import org.springframework.ide.vscode.commons.languageserver.util.TextDocumentContentChange; -import org.springframework.ide.vscode.commons.util.BadLocationException; -import org.springframework.ide.vscode.commons.util.Log; -import org.springframework.ide.vscode.commons.util.text.TextDocument; - -import com.google.common.collect.ImmutableList; - -/** - * Sample implementation of a 'highlighter' that can be used with {@link SimpleLanguageServer}.highlightWith. - *

- * Finds every occurence of a given word and highlights it. - * - * @author Kris De Volder - */ -public class WordHighlighter implements Function> { - - private final SimpleLanguageServer server; - private final String word; - - public WordHighlighter(SimpleLanguageServer server, String word) { - super(); - this.server = server; - this.word = word; - } - - @Override - public List apply(TextDocument doc) { - String text = doc.get(); - int wordStart = text.indexOf(word); - ImmutableList.Builder highlights = ImmutableList.builder(); - while (wordStart>=0) { - try { - highlights.add(doc.toRange(wordStart, word.length())); - } catch (BadLocationException e) { - Log.log(e); - } - wordStart = text.indexOf(word, wordStart+word.length()); - } - return highlights.build(); - } -} diff --git a/headless-services/boot-java-language-server/src/main/java/org/springframework/ide/vscode/boot/java/utils/SpringLiveHoverWatchdog.java b/headless-services/boot-java-language-server/src/main/java/org/springframework/ide/vscode/boot/java/utils/SpringLiveHoverWatchdog.java index a6a55e5a0..86f640f51 100644 --- a/headless-services/boot-java-language-server/src/main/java/org/springframework/ide/vscode/boot/java/utils/SpringLiveHoverWatchdog.java +++ b/headless-services/boot-java-language-server/src/main/java/org/springframework/ide/vscode/boot/java/utils/SpringLiveHoverWatchdog.java @@ -10,15 +10,18 @@ *******************************************************************************/ package org.springframework.ide.vscode.boot.java.utils; +import java.util.Arrays; import java.util.Set; import java.util.Timer; import java.util.TimerTask; import java.util.concurrent.ConcurrentSkipListSet; import org.eclipse.lsp4j.Range; +import org.eclipse.lsp4j.TextDocumentIdentifier; import org.springframework.ide.vscode.boot.java.BootJavaLanguageServer; import org.springframework.ide.vscode.boot.java.handlers.BootJavaHoverProvider; import org.springframework.ide.vscode.commons.boot.app.cli.SpringBootApp; +import org.springframework.ide.vscode.commons.languageserver.HighlightParams; import org.springframework.ide.vscode.commons.languageserver.util.SimpleLanguageServer; import org.springframework.ide.vscode.commons.util.text.TextDocument; @@ -80,7 +83,7 @@ public class SpringLiveHoverWatchdog { TextDocument doc = this.server.getTextDocumentService().get(docURI); if (doc != null) { Range[] ranges = this.hoverProvider.getLiveHoverHints(doc, runningBootApps); - publishLiveHints(ranges); + publishLiveHints(docURI, ranges); } } catch (Exception e) { e.printStackTrace(); @@ -95,15 +98,9 @@ public class SpringLiveHoverWatchdog { } } - private void publishLiveHints(Range[] ranges) { - for (Range range : ranges) { - int startLine = range.getStart().getLine(); - int startChar = range.getStart().getCharacter(); - int endLine = range.getEnd().getLine(); - int endChar = range.getEnd().getCharacter(); - - System.out.println("live hover information at: " + startLine + ":" + startChar + " - " + endLine + ":" + endChar); - } + private void publishLiveHints(String docURI, Range[] ranges) { + System.out.println(" PUBLISH LIVE HOVER HINTS !!! " + ranges.length); + server.getClient().highlight(new HighlightParams(new TextDocumentIdentifier(docURI), Arrays.asList(ranges))); } private void cleanupLiveHints(String docURI) { diff --git a/headless-services/commons/commons-language-server/src/main/java/org/springframework/ide/vscode/commons/languageserver/util/SimpleLanguageServer.java b/headless-services/commons/commons-language-server/src/main/java/org/springframework/ide/vscode/commons/languageserver/util/SimpleLanguageServer.java index 4c7fd0cd3..f732c61bc 100644 --- a/headless-services/commons/commons-language-server/src/main/java/org/springframework/ide/vscode/commons/languageserver/util/SimpleLanguageServer.java +++ b/headless-services/commons/commons-language-server/src/main/java/org/springframework/ide/vscode/commons/languageserver/util/SimpleLanguageServer.java @@ -17,7 +17,6 @@ import java.util.LinkedHashSet; import java.util.List; import java.util.concurrent.Callable; import java.util.concurrent.CompletableFuture; -import java.util.function.Function; import org.eclipse.lsp4j.ApplyWorkspaceEditParams; import org.eclipse.lsp4j.ApplyWorkspaceEditResponse; @@ -38,7 +37,6 @@ import org.eclipse.lsp4j.TextDocumentSyncKind; import org.eclipse.lsp4j.services.LanguageClient; import org.eclipse.lsp4j.services.LanguageClientAware; import org.eclipse.lsp4j.services.LanguageServer; -import org.springframework.ide.vscode.commons.languageserver.HighlightParams; import org.springframework.ide.vscode.commons.languageserver.ProgressParams; import org.springframework.ide.vscode.commons.languageserver.ProgressService; import org.springframework.ide.vscode.commons.languageserver.STS4LanguageClient; @@ -462,13 +460,4 @@ public abstract class SimpleLanguageServer implements LanguageServer, LanguageCl testListener = languageServerTestListener; } - protected void highlighWith(TextDocument doc, Function> wordHighlighter) { - List highlights = wordHighlighter.apply(doc); - if (highlights==null) { - highlights = ImmutableList.of(); - } - client.highlight(new HighlightParams(doc.getId(), highlights)); - } - - }