Skip to content

Commit

Permalink
improvement: delete ongoing compilations from tree view
Browse files Browse the repository at this point in the history
  • Loading branch information
kasiaMarek authored and tgodzik committed May 8, 2024
1 parent 038ba39 commit 247bdba
Show file tree
Hide file tree
Showing 9 changed files with 1 addition and 122 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@ import scala.meta.internal.metals.TaskProgress
import scala.meta.internal.metals.Time
import scala.meta.internal.metals.Timer
import scala.meta.internal.metals.WorkDoneProgress
import scala.meta.internal.tvp._
import scala.meta.io.AbsolutePath

import ch.epfl.scala.{bsp4j => b}
Expand Down Expand Up @@ -72,7 +71,7 @@ final class ForwardingMetalsBuildClient(
val timer: Timer,
token: Future[WorkDoneProgress.Token],
taskProgress: TaskProgress = TaskProgress.empty,
) extends TreeViewCompilation {
) {

def progressPercentage = taskProgress.percentage

Expand Down Expand Up @@ -274,12 +273,4 @@ final class ForwardingMetalsBuildClient(
case _ =>
}
}

def ongoingCompilations(): TreeViewCompilations =
new TreeViewCompilations {
override def get(id: b.BuildTargetIdentifier) = compilations.get(id)
override def isEmpty = compilations.isEmpty
override def size = compilations.size
override def buildTargets = compilations.keysIterator
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package scala.meta.internal.metals

import scala.meta.internal.tvp.TreeViewCompilations
import scala.meta.io.AbsolutePath

import ch.epfl.scala.{bsp4j => b}
Expand Down Expand Up @@ -31,8 +30,6 @@ trait MetalsBuildClient {
@JsonNotification("buildTarget/compileReport")
def onBuildTargetCompileReport(params: b.CompileReport): Unit

def ongoingCompilations(): TreeViewCompilations

def buildHasErrors(buildTargetId: b.BuildTargetIdentifier): Boolean

def buildHasErrors(file: AbsolutePath): Boolean
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -818,7 +818,6 @@ class MetalsLspService(
new FolderTreeViewProvider(
new Folder(folder, folderVisibleName, true),
buildTargets,
() => buildClient.ongoingCompilations(),
definitionIndex,
() => userConfig,
scalaVersionSelector,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -228,7 +228,6 @@ class WorkspaceLspService(
new MetalsTreeViewProvider(
() => folderServices.map(_.treeView),
languageClient,
sh,
)
} else NoopTreeViewProvider

Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,7 @@
package scala.meta.internal.tvp

import java.nio.file.Paths
import java.util.concurrent.ScheduledExecutorService
import java.util.concurrent.ScheduledFuture
import java.util.concurrent.TimeUnit
import java.util.concurrent.atomic.AtomicBoolean

import scala.collection.concurrent.TrieMap

Expand All @@ -29,7 +26,6 @@ import org.eclipse.{lsp4j => l}
class MetalsTreeViewProvider(
getFolderTreeViewProviders: () => List[FolderTreeViewProvider],
languageClient: MetalsLanguageClient,
sh: ScheduledExecutorService,
)(implicit rc: ReportContext)
extends TreeViewProvider {
private val ticks =
Expand All @@ -41,7 +37,6 @@ class MetalsTreeViewProvider(
Array(
TreeViewNode.empty(Project),
TreeViewNode.empty(Build),
TreeViewNode.empty(Compile),
)
)
)
Expand Down Expand Up @@ -119,11 +114,6 @@ class MetalsTreeViewProvider(
case _ =>
Array()
}
case Compile =>
folderTreeViewProviders
.map(_.getOngoingCompilations(Option(params.nodeUri)))
.flatten
.toArray
case _ => Array.empty
}
MetalsTreeViewChildrenResult(children)
Expand Down Expand Up @@ -207,22 +197,6 @@ class MetalsTreeViewProvider(
}
if (params.visible) {
params.viewId match {
case TreeViewProvider.Compile =>
ticks(params.viewId) = sh.scheduleAtFixedRate(
() => {
val all = trees.map(_.tickBuildTreeView()).collect {
case Some(value) => value
}
if (all.nonEmpty) {
languageClient.metalsTreeViewDidChange(
TreeViewDidChangeParams(all.flatten.toArray)
)
}
},
1,
1,
TimeUnit.SECONDS,
)
case TreeViewProvider.Project =>
val toUpdate = trees.map(_.flushPendingProjectUpdates).collect {
case Some(value) => value
Expand All @@ -244,7 +218,6 @@ class MetalsTreeViewProvider(
class FolderTreeViewProvider(
folder: Folder,
buildTargets: BuildTargets,
compilations: () => TreeViewCompilations,
definitionIndex: GlobalSymbolIndex,
userConfig: () => UserConfiguration,
scalaVersionSelector: ScalaVersionSelector,
Expand Down Expand Up @@ -386,18 +359,6 @@ class FolderTreeViewProvider(
None
}

def getOngoingCompilations(nodeUri: Option[String]): Array[TreeViewNode] =
nodeUri match {
case None =>
ongoingCompilations
case Some(uri) =>
if (uri == ongoingCompilationNode.nodeUri) {
ongoingCompilations
} else {
ongoingCompileNode(new BuildTargetIdentifier(uri)).toArray
}
}

def getProjectRoot(
nodeUri: Option[String],
showFolderName: Boolean,
Expand Down Expand Up @@ -451,48 +412,6 @@ class FolderTreeViewProvider(
}
}

private def ongoingCompilations: Array[TreeViewNode] = {
compilations().buildTargets.flatMap(ongoingCompileNode).toArray
}

private def ongoingCompileNode(
id: BuildTargetIdentifier
): Option[TreeViewNode] = {
for {
compilation <- compilations().get(id)
info <- buildTargets.info(id)
} yield TreeViewNode(
TreeViewProvider.Compile,
id.getUri,
s"${info.getName()} - ${compilation.timer.toStringSeconds} (${compilation.progressPercentage}%)",
icon = "compile",
)
}

private def ongoingCompilationNode: TreeViewNode = {
TreeViewNode(
TreeViewProvider.Compile,
null,
TreeViewProvider.Compile,
)
}

private def toplevelTreeNodes: Array[TreeViewNode] =
Array(ongoingCompilationNode)

private val wasEmpty = new AtomicBoolean(true)
private val isEmpty = new AtomicBoolean(true)
def tickBuildTreeView(): Option[Array[TreeViewNode]] = {
isEmpty.set(compilations().isEmpty)
val result = if (wasEmpty.get() && isEmpty.get()) {
None // Nothing changed since the last notification.
} else {
Some(toplevelTreeNodes)
}
wasEmpty.set(isEmpty.get())
result
}

def reset(): Unit = {
classpath.reset()
}
Expand Down

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ trait TreeViewProvider {
val Project = TreeViewProvider.Project
val Build = TreeViewProvider.Build
val Help = TreeViewProvider.Help
val Compile = TreeViewProvider.Compile
def init(): Unit = ()
def reset(): Unit = ()
def children(
Expand All @@ -32,6 +31,5 @@ trait TreeViewProvider {
object TreeViewProvider {
val Project = "metalsPackages"
val Build = "metalsBuild"
val Compile = "metalsCompile"
val Help = "metalsHelp"
}
1 change: 0 additions & 1 deletion tests/unit/src/test/scala/tests/TreeViewLspSuite.scala
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,6 @@ class TreeViewLspSuite extends BaseLspSuite("tree-view") {
client.workspaceTreeViewChanges,
s"""|${TreeViewProvider.Project} <root>
|${TreeViewProvider.Build} <root>
|${TreeViewProvider.Compile} <root>
|""".stripMargin,
)
_ <- server.didOpen("a/src/main/scala/a/Zero.scala")
Expand Down

0 comments on commit 247bdba

Please sign in to comment.