From a247958351ccb636bb7b1c5aa276810fa4f919c4 Mon Sep 17 00:00:00 2001 From: Kris De Volder Date: Fri, 17 May 2019 12:56:47 -0700 Subject: [PATCH] Avoid refreshing highlights/codelenses when... ...nothing has changed. The refresh can be very expensive if user has enabled code minings. See: https://github.com/spring-projects/sts4/issues/292 --- .../ls/eclipse/commons/STS4LanguageClientImpl.java | 8 ++++++-- .../vscode/boot/java/utils/SpringLiveHoverWatchdog.java | 2 +- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/eclipse-language-servers/org.springframework.tooling.ls.eclipse.commons/src/org/springframework/tooling/ls/eclipse/commons/STS4LanguageClientImpl.java b/eclipse-language-servers/org.springframework.tooling.ls.eclipse.commons/src/org/springframework/tooling/ls/eclipse/commons/STS4LanguageClientImpl.java index 0256def10..e84034eb4 100644 --- a/eclipse-language-servers/org.springframework.tooling.ls.eclipse.commons/src/org/springframework/tooling/ls/eclipse/commons/STS4LanguageClientImpl.java +++ b/eclipse-language-servers/org.springframework.tooling.ls.eclipse.commons/src/org/springframework/tooling/ls/eclipse/commons/STS4LanguageClientImpl.java @@ -319,8 +319,12 @@ public class STS4LanguageClientImpl extends LanguageClientImpl implements STS4La public synchronized void highlight(HighlightParams highlights) { String target = highlights.getDoc().getUri(); if (target!=null) { - currentHighlights.put(target, highlights); - new UpdateHighlights(target); + HighlightParams oldHighligts = currentHighlights.get(target); + List oldCodelenses = oldHighligts==null ? ImmutableList.of() : oldHighligts.getCodeLenses(); + if (!oldCodelenses.equals(highlights.getCodeLenses())) { + currentHighlights.put(target, highlights); + new UpdateHighlights(target); + } } } diff --git a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/utils/SpringLiveHoverWatchdog.java b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/utils/SpringLiveHoverWatchdog.java index ab08a4ec4..22977d592 100644 --- a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/utils/SpringLiveHoverWatchdog.java +++ b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/utils/SpringLiveHoverWatchdog.java @@ -115,7 +115,7 @@ public class SpringLiveHoverWatchdog { private synchronized void start() { if (highlightsEnabled && timer == null) { - logger.debug("Starting SpringLiveHoverWatchdog"); + logger.info("Starting SpringLiveHoverWatchdog"); this.timer = new ScheduledThreadPoolExecutor(1); this.timer.scheduleWithFixedDelay(() -> this.update(), 0, POLLING_INTERVAL_MILLISECONDS, TimeUnit.MILLISECONDS); }