From 0cf4fb7cda9c8586b9427d390e285eab7b4e010e Mon Sep 17 00:00:00 2001 From: Katarzyna Marek Date: Wed, 20 Mar 2024 15:09:11 +0100 Subject: [PATCH] fix: take last change in `didChange` --- .../meta/internal/metals/MetalsLspService.scala | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/metals/src/main/scala/scala/meta/internal/metals/MetalsLspService.scala b/metals/src/main/scala/scala/meta/internal/metals/MetalsLspService.scala index fc50ae6b81c..b6ce1a5bfb5 100644 --- a/metals/src/main/scala/scala/meta/internal/metals/MetalsLspService.scala +++ b/metals/src/main/scala/scala/meta/internal/metals/MetalsLspService.scala @@ -1137,8 +1137,15 @@ class MetalsLspService( override def didChange( params: DidChangeTextDocumentParams - ): CompletableFuture[Unit] = - params.getContentChanges.asScala.headOption match { + ): CompletableFuture[Unit] = { + val changesSize = params.getContentChanges.size() + if (changesSize != 1) { + scribe.debug( + s"did change notification contained $changesSize content changes, expected 1" + ) + } + + params.getContentChanges.asScala.lastOption match { case None => CompletableFuture.completedFuture(()) case Some(change) => val path = params.getTextDocument.getUri.toAbsolutePath @@ -1152,6 +1159,7 @@ class MetalsLspService( .ignoreValue .asJava } + } override def didClose(params: DidCloseTextDocumentParams): Unit = { val path = params.getTextDocument.getUri.toAbsolutePath