From efb0e7f0d33354782f143fa57c2b4f7d30471327 Mon Sep 17 00:00:00 2001 From: Kacper Korban Date: Tue, 13 Aug 2024 13:37:45 +0200 Subject: [PATCH 1/2] refactor: Add a common codeAction method to the presentation compiler together with a supportedCodeActions method --- .../meta/internal/metals/Compilers.scala | 29 +++++++++++++++++++ .../metals/codeactions/CodeAction.scala | 7 +++++ .../codeactions/CodeActionProvider.scala | 9 +++++- .../codeactions/ConvertToNamedArguments.scala | 9 ++++-- .../codeactions/ExtractMethodCodeAction.scala | 5 ++++ .../ImplementAbstractMembers.scala | 5 ++++ .../codeactions/ImportMissingSymbol.scala | 5 ++++ .../codeactions/InlineValueCodeAction.scala | 5 ++++ .../codeactions/InsertInferredType.scala | 5 ++++ .../main/java/scala/meta/pc/CodeActionId.java | 10 +++++++ .../scala/meta/pc/PresentationCompiler.java | 22 ++++++++++++++ .../pc/ScalaPresentationCompiler.scala | 1 + 12 files changed, 109 insertions(+), 3 deletions(-) create mode 100644 mtags-interfaces/src/main/java/scala/meta/pc/CodeActionId.java diff --git a/metals/src/main/scala/scala/meta/internal/metals/Compilers.scala b/metals/src/main/scala/scala/meta/internal/metals/Compilers.scala index dab4cbae11c..5af8f2445dd 100644 --- a/metals/src/main/scala/scala/meta/internal/metals/Compilers.scala +++ b/metals/src/main/scala/scala/meta/internal/metals/Compilers.scala @@ -31,6 +31,7 @@ import scala.meta.internal.{semanticdb => s} import scala.meta.io.AbsolutePath import scala.meta.pc.AutoImportsResult import scala.meta.pc.CancelToken +import scala.meta.pc.CodeActionId import scala.meta.pc.CompletionItemPriority import scala.meta.pc.HoverSignature import scala.meta.pc.OffsetParams @@ -878,6 +879,34 @@ class Compilers( } }.getOrElse(Future.successful(Nil.asJava)) + def codeAction( + params: TextDocumentPositionParams, + token: CancelToken, + codeActionId: CodeActionId, + codeActionPayload: Object, + ): Future[ju.List[TextEdit]] = { + withPCAndAdjustLsp(params) { (pc, pos, adjust) => + pc.codeAction( + CompilerOffsetParamsUtils.fromPos( + pos, + token, + outlineFilesProvider.getOutlineFiles(pc.buildTargetId()), + ), + codeActionId, + codeActionPayload, + ).asScala + .map { edits => + adjust.adjustTextEdits(edits) + } + } + }.getOrElse(Future.successful(Nil.asJava)) + + def supportedCodeActions(path: AbsolutePath): ju.List[CodeActionId] = { + loadCompiler(path).map { pc => + pc.supportedCodeActions() + } + }.getOrElse(Nil.asJava) + def hover( params: HoverExtParams, token: CancelToken, diff --git a/metals/src/main/scala/scala/meta/internal/metals/codeactions/CodeAction.scala b/metals/src/main/scala/scala/meta/internal/metals/codeactions/CodeAction.scala index 9a1d59c2a39..1c9b38bb33d 100644 --- a/metals/src/main/scala/scala/meta/internal/metals/codeactions/CodeAction.scala +++ b/metals/src/main/scala/scala/meta/internal/metals/codeactions/CodeAction.scala @@ -7,6 +7,7 @@ import scala.concurrent.Future import scala.meta.internal.metals.MetalsEnrichments._ import scala.meta.internal.metals.ParametrizedCommand import scala.meta.pc.CancelToken +import scala.meta.pc.CodeActionId import org.eclipse.{lsp4j => l} @@ -18,6 +19,12 @@ trait CodeAction { */ def kind: String + /** + * The CodeActionId for this code action, if applicable. CodeActionId is only + * used for code actions that require the use of the presentation compiler. + */ + def maybeCodeActionId: Option[CodeActionId] = None + type CommandData type ActionCommand = ParametrizedCommand[CommandData] def command: Option[ActionCommand] = None diff --git a/metals/src/main/scala/scala/meta/internal/metals/codeactions/CodeActionProvider.scala b/metals/src/main/scala/scala/meta/internal/metals/codeactions/CodeActionProvider.scala index 340841e91b7..16355d2ce41 100644 --- a/metals/src/main/scala/scala/meta/internal/metals/codeactions/CodeActionProvider.scala +++ b/metals/src/main/scala/scala/meta/internal/metals/codeactions/CodeActionProvider.scala @@ -4,6 +4,7 @@ import scala.concurrent.ExecutionContext import scala.concurrent.Future import scala.jdk.CollectionConverters._ +import scala.meta.internal.metals.MetalsEnrichments.XtensionString import scala.meta.internal.metals._ import scala.meta.internal.metals.clients.language.MetalsLanguageClient import scala.meta.internal.metals.codeactions.CodeAction @@ -60,6 +61,12 @@ final class CodeActionProvider( new ConvertCommentCodeAction(buffers), ) + def actionsForParams(params: l.CodeActionParams): List[CodeAction] = { + val path = params.getTextDocument.getUri.toAbsolutePath + val supportedCodeActions = compilers.supportedCodeActions(path) + allActions.filter(_.maybeCodeActionId.forall(supportedCodeActions.contains)) + } + def codeActions( params: l.CodeActionParams, token: CancelToken, @@ -73,7 +80,7 @@ final class CodeActionProvider( case None => true } - val actions = allActions.collect { + val actions = actionsForParams(params).collect { case action if isRequestedKind(action) => action.contribute(params, token) } diff --git a/metals/src/main/scala/scala/meta/internal/metals/codeactions/ConvertToNamedArguments.scala b/metals/src/main/scala/scala/meta/internal/metals/codeactions/ConvertToNamedArguments.scala index 69180711dff..d110bef5232 100644 --- a/metals/src/main/scala/scala/meta/internal/metals/codeactions/ConvertToNamedArguments.scala +++ b/metals/src/main/scala/scala/meta/internal/metals/codeactions/ConvertToNamedArguments.scala @@ -16,6 +16,7 @@ import scala.meta.internal.metals.codeactions.CodeActionBuilder import scala.meta.internal.metals.logging import scala.meta.internal.parsing.Trees import scala.meta.pc.CancelToken +import scala.meta.pc.CodeActionId import org.eclipse.{lsp4j => l} @@ -28,6 +29,10 @@ class ConvertToNamedArguments( import ConvertToNamedArguments._ override val kind: String = l.CodeActionKind.RefactorRewrite + override val maybeCodeActionId: Option[CodeActionId] = Some( + CodeActionId.ConvertToNamedArguments + ) + override type CommandData = ServerCommands.ConvertToNamedArgsRequest override def command: Option[ActionCommand] = Some( @@ -57,7 +62,7 @@ class ConvertToNamedArguments( } yield () } - def getTermWithArgs( + private def getTermWithArgs( apply: Tree, args: List[Tree], nameEnd: Int, @@ -80,7 +85,7 @@ class ConvertToNamedArguments( } } - def firstApplyWithUnnamedArgs( + private def firstApplyWithUnnamedArgs( term: Option[Tree] ): Option[ApplyTermWithArgIndices] = { term match { diff --git a/metals/src/main/scala/scala/meta/internal/metals/codeactions/ExtractMethodCodeAction.scala b/metals/src/main/scala/scala/meta/internal/metals/codeactions/ExtractMethodCodeAction.scala index 57a5a4ac89e..b11988e3ad4 100644 --- a/metals/src/main/scala/scala/meta/internal/metals/codeactions/ExtractMethodCodeAction.scala +++ b/metals/src/main/scala/scala/meta/internal/metals/codeactions/ExtractMethodCodeAction.scala @@ -15,6 +15,7 @@ import scala.meta.internal.metals.clients.language.MetalsLanguageClient import scala.meta.internal.metals.logging import scala.meta.internal.parsing.Trees import scala.meta.pc.CancelToken +import scala.meta.pc.CodeActionId import org.eclipse.lsp4j.CodeActionParams import org.eclipse.{lsp4j => l} @@ -32,6 +33,10 @@ class ExtractMethodCodeAction( ) override def kind: String = l.CodeActionKind.RefactorExtract + override val maybeCodeActionId: Option[CodeActionId] = Some( + CodeActionId.ExtractMethod + ) + override def handleCommand( data: ServerCommands.ExtractMethodParams, token: CancelToken, diff --git a/metals/src/main/scala/scala/meta/internal/metals/codeactions/ImplementAbstractMembers.scala b/metals/src/main/scala/scala/meta/internal/metals/codeactions/ImplementAbstractMembers.scala index e19519db98a..ac5915f31b5 100644 --- a/metals/src/main/scala/scala/meta/internal/metals/codeactions/ImplementAbstractMembers.scala +++ b/metals/src/main/scala/scala/meta/internal/metals/codeactions/ImplementAbstractMembers.scala @@ -8,6 +8,7 @@ import scala.meta.internal.metals.MetalsEnrichments._ import scala.meta.internal.metals.ScalacDiagnostic import scala.meta.internal.metals.codeactions.CodeAction import scala.meta.pc.CancelToken +import scala.meta.pc.CodeActionId import org.eclipse.{lsp4j => l} @@ -15,6 +16,10 @@ class ImplementAbstractMembers(compilers: Compilers) extends CodeAction { override def kind: String = l.CodeActionKind.QuickFix + override val maybeCodeActionId: Option[CodeActionId] = Some( + CodeActionId.ImplementAbstractMembers + ) + override def contribute( params: l.CodeActionParams, token: CancelToken, diff --git a/metals/src/main/scala/scala/meta/internal/metals/codeactions/ImportMissingSymbol.scala b/metals/src/main/scala/scala/meta/internal/metals/codeactions/ImportMissingSymbol.scala index 2b192473917..9799e30491b 100644 --- a/metals/src/main/scala/scala/meta/internal/metals/codeactions/ImportMissingSymbol.scala +++ b/metals/src/main/scala/scala/meta/internal/metals/codeactions/ImportMissingSymbol.scala @@ -10,6 +10,7 @@ import scala.meta.internal.metals.ScalaVersions import scala.meta.internal.metals.ScalacDiagnostic import scala.meta.internal.metals.codeactions.CodeAction import scala.meta.pc.CancelToken +import scala.meta.pc.CodeActionId import org.eclipse.{lsp4j => l} @@ -18,6 +19,10 @@ class ImportMissingSymbol(compilers: Compilers, buildTargets: BuildTargets) override def kind: String = l.CodeActionKind.QuickFix + override val maybeCodeActionId: Option[CodeActionId] = Some( + CodeActionId.ImportMissingSymbol + ) + override def contribute( params: l.CodeActionParams, token: CancelToken, diff --git a/metals/src/main/scala/scala/meta/internal/metals/codeactions/InlineValueCodeAction.scala b/metals/src/main/scala/scala/meta/internal/metals/codeactions/InlineValueCodeAction.scala index 30350144479..b1d6adad21c 100644 --- a/metals/src/main/scala/scala/meta/internal/metals/codeactions/InlineValueCodeAction.scala +++ b/metals/src/main/scala/scala/meta/internal/metals/codeactions/InlineValueCodeAction.scala @@ -16,6 +16,7 @@ import scala.meta.internal.metals.codeactions.CodeAction import scala.meta.internal.parsing.Trees import scala.meta.io.AbsolutePath import scala.meta.pc.CancelToken +import scala.meta.pc.CodeActionId import org.eclipse.{lsp4j => l} @@ -32,6 +33,10 @@ class InlineValueCodeAction( override def kind: String = l.CodeActionKind.RefactorInline + override val maybeCodeActionId: Option[CodeActionId] = Some( + CodeActionId.InlineValue + ) + override def contribute(params: l.CodeActionParams, token: CancelToken)( implicit ec: ExecutionContext ): Future[Seq[l.CodeAction]] = Future { diff --git a/metals/src/main/scala/scala/meta/internal/metals/codeactions/InsertInferredType.scala b/metals/src/main/scala/scala/meta/internal/metals/codeactions/InsertInferredType.scala index b48cb37b498..4e3fa6b8aff 100644 --- a/metals/src/main/scala/scala/meta/internal/metals/codeactions/InsertInferredType.scala +++ b/metals/src/main/scala/scala/meta/internal/metals/codeactions/InsertInferredType.scala @@ -16,6 +16,7 @@ import scala.meta.internal.metals.codeactions.CodeAction import scala.meta.internal.metals.codeactions.CodeActionBuilder import scala.meta.internal.parsing.Trees import scala.meta.pc.CancelToken +import scala.meta.pc.CodeActionId import org.eclipse.{lsp4j => l} @@ -33,6 +34,10 @@ class InsertInferredType( import InsertInferredType._ override def kind: String = l.CodeActionKind.QuickFix + override val maybeCodeActionId: Option[CodeActionId] = Some( + CodeActionId.InsertInferredType + ) + override def handleCommand( textDocumentParams: l.TextDocumentPositionParams, token: CancelToken, diff --git a/mtags-interfaces/src/main/java/scala/meta/pc/CodeActionId.java b/mtags-interfaces/src/main/java/scala/meta/pc/CodeActionId.java new file mode 100644 index 00000000000..f28a992006a --- /dev/null +++ b/mtags-interfaces/src/main/java/scala/meta/pc/CodeActionId.java @@ -0,0 +1,10 @@ +package scala.meta.pc; + +public enum CodeActionId { + ConvertToNamedArguments, + ExtractMethod, + ImplementAbstractMembers, + ImportMissingSymbol, + InlineValue, + InsertInferredType, +} diff --git a/mtags-interfaces/src/main/java/scala/meta/pc/PresentationCompiler.java b/mtags-interfaces/src/main/java/scala/meta/pc/PresentationCompiler.java index 62aa8a3a787..d5e225fbc0b 100644 --- a/mtags-interfaces/src/main/java/scala/meta/pc/PresentationCompiler.java +++ b/mtags-interfaces/src/main/java/scala/meta/pc/PresentationCompiler.java @@ -13,6 +13,7 @@ import java.net.URI; import java.nio.file.Path; +import java.util.Arrays; import java.util.Collections; import java.util.concurrent.CompletableFuture; import java.util.List; @@ -111,6 +112,27 @@ public CompletableFuture> references(References return CompletableFuture.completedFuture(Collections.emptyList()); } + /** + * Execute the given code action + */ + public CompletableFuture> codeAction(OffsetParams params, CodeActionId codeActionId, Object codeActionPayload) { + return CompletableFuture.completedFuture(Collections.emptyList()); + } + + /** + * Returns the list of code actions supported by the current presentation compiler. + */ + public List supportedCodeActions() { + return Arrays.asList( + CodeActionId.ConvertToNamedArguments, + CodeActionId.ExtractMethod, + CodeActionId.ImplementAbstractMembers, + CodeActionId.ImportMissingSymbol, + CodeActionId.InlineValue, + CodeActionId.InsertInferredType + ); + } + /** * Return decoded and pretty printed TASTy content for .scala or .tasty file. * diff --git a/mtags/src/main/scala-3/scala/meta/internal/pc/ScalaPresentationCompiler.scala b/mtags/src/main/scala-3/scala/meta/internal/pc/ScalaPresentationCompiler.scala index 78d668ec4b8..41ecb44f786 100644 --- a/mtags/src/main/scala-3/scala/meta/internal/pc/ScalaPresentationCompiler.scala +++ b/mtags/src/main/scala-3/scala/meta/internal/pc/ScalaPresentationCompiler.scala @@ -363,6 +363,7 @@ case class ScalaPresentationCompiler( case Right(edits: List[l.TextEdit]) => edits.asJava } end convertToNamedArguments + override def selectionRange( params: ju.List[OffsetParams] ): CompletableFuture[ju.List[l.SelectionRange]] = From 7f6be4d92e052d7555b6e078cbd22350ad0f59e5 Mon Sep 17 00:00:00 2001 From: Kacper Korban Date: Wed, 11 Sep 2024 14:23:32 +0200 Subject: [PATCH 2/2] Change the codeAction method signature --- .../scala/meta/internal/metals/Compilers.scala | 5 ++--- .../metals/codeactions/CodeAction.scala | 3 +-- .../codeactions/CodeActionProvider.scala | 18 +++--------------- .../codeactions/ConvertToNamedArguments.scala | 5 ++--- .../codeactions/ExtractMethodCodeAction.scala | 5 ++--- .../codeactions/ImplementAbstractMembers.scala | 5 ++--- .../codeactions/ImportMissingSymbol.scala | 5 ++--- .../codeactions/InlineValueCodeAction.scala | 5 ++--- .../codeactions/InsertInferredType.scala | 5 ++--- .../main/java/scala/meta/pc/CodeActionId.java | 10 ---------- .../scala/meta/pc/PresentationCompiler.java | 16 ++++++++-------- 11 files changed, 26 insertions(+), 56 deletions(-) delete mode 100644 mtags-interfaces/src/main/java/scala/meta/pc/CodeActionId.java diff --git a/metals/src/main/scala/scala/meta/internal/metals/Compilers.scala b/metals/src/main/scala/scala/meta/internal/metals/Compilers.scala index 5af8f2445dd..bc4a5b3e9bc 100644 --- a/metals/src/main/scala/scala/meta/internal/metals/Compilers.scala +++ b/metals/src/main/scala/scala/meta/internal/metals/Compilers.scala @@ -31,7 +31,6 @@ import scala.meta.internal.{semanticdb => s} import scala.meta.io.AbsolutePath import scala.meta.pc.AutoImportsResult import scala.meta.pc.CancelToken -import scala.meta.pc.CodeActionId import scala.meta.pc.CompletionItemPriority import scala.meta.pc.HoverSignature import scala.meta.pc.OffsetParams @@ -882,7 +881,7 @@ class Compilers( def codeAction( params: TextDocumentPositionParams, token: CancelToken, - codeActionId: CodeActionId, + codeActionId: String, codeActionPayload: Object, ): Future[ju.List[TextEdit]] = { withPCAndAdjustLsp(params) { (pc, pos, adjust) => @@ -901,7 +900,7 @@ class Compilers( } }.getOrElse(Future.successful(Nil.asJava)) - def supportedCodeActions(path: AbsolutePath): ju.List[CodeActionId] = { + def supportedCodeActions(path: AbsolutePath): ju.List[String] = { loadCompiler(path).map { pc => pc.supportedCodeActions() } diff --git a/metals/src/main/scala/scala/meta/internal/metals/codeactions/CodeAction.scala b/metals/src/main/scala/scala/meta/internal/metals/codeactions/CodeAction.scala index 1c9b38bb33d..79a6f55325f 100644 --- a/metals/src/main/scala/scala/meta/internal/metals/codeactions/CodeAction.scala +++ b/metals/src/main/scala/scala/meta/internal/metals/codeactions/CodeAction.scala @@ -7,7 +7,6 @@ import scala.concurrent.Future import scala.meta.internal.metals.MetalsEnrichments._ import scala.meta.internal.metals.ParametrizedCommand import scala.meta.pc.CancelToken -import scala.meta.pc.CodeActionId import org.eclipse.{lsp4j => l} @@ -23,7 +22,7 @@ trait CodeAction { * The CodeActionId for this code action, if applicable. CodeActionId is only * used for code actions that require the use of the presentation compiler. */ - def maybeCodeActionId: Option[CodeActionId] = None + def maybeCodeActionId: Option[String] = None type CommandData type ActionCommand = ParametrizedCommand[CommandData] diff --git a/metals/src/main/scala/scala/meta/internal/metals/codeactions/CodeActionProvider.scala b/metals/src/main/scala/scala/meta/internal/metals/codeactions/CodeActionProvider.scala index 16355d2ce41..c084717014a 100644 --- a/metals/src/main/scala/scala/meta/internal/metals/codeactions/CodeActionProvider.scala +++ b/metals/src/main/scala/scala/meta/internal/metals/codeactions/CodeActionProvider.scala @@ -33,27 +33,15 @@ final class CodeActionProvider( new ActionableDiagnostic(), new StringActions(buffers), extractMemberAction, - new SourceOrganizeImports( - scalafixProvider, - buildTargets, - diagnostics, - ), - new OrganizeImportsQuickFix( - scalafixProvider, - buildTargets, - diagnostics, - ), + new SourceOrganizeImports(scalafixProvider, buildTargets, diagnostics), + new OrganizeImportsQuickFix(scalafixProvider, buildTargets, diagnostics), new InsertInferredType(trees, compilers, languageClient), new PatternMatchRefactor(trees), new RewriteBracesParensCodeAction(trees), new ExtractValueCodeAction(trees, buffers), new CreateCompanionObjectCodeAction(trees, buffers), new ExtractMethodCodeAction(trees, compilers, languageClient), - new InlineValueCodeAction( - trees, - compilers, - languageClient, - ), + new InlineValueCodeAction(trees, compilers, languageClient), new ConvertToNamedArguments(trees, compilers, languageClient), new FlatMapToForComprehensionCodeAction(trees, buffers), new MillifyDependencyCodeAction(buffers), diff --git a/metals/src/main/scala/scala/meta/internal/metals/codeactions/ConvertToNamedArguments.scala b/metals/src/main/scala/scala/meta/internal/metals/codeactions/ConvertToNamedArguments.scala index d110bef5232..dcd5ed10041 100644 --- a/metals/src/main/scala/scala/meta/internal/metals/codeactions/ConvertToNamedArguments.scala +++ b/metals/src/main/scala/scala/meta/internal/metals/codeactions/ConvertToNamedArguments.scala @@ -16,7 +16,6 @@ import scala.meta.internal.metals.codeactions.CodeActionBuilder import scala.meta.internal.metals.logging import scala.meta.internal.parsing.Trees import scala.meta.pc.CancelToken -import scala.meta.pc.CodeActionId import org.eclipse.{lsp4j => l} @@ -29,8 +28,8 @@ class ConvertToNamedArguments( import ConvertToNamedArguments._ override val kind: String = l.CodeActionKind.RefactorRewrite - override val maybeCodeActionId: Option[CodeActionId] = Some( - CodeActionId.ConvertToNamedArguments + override val maybeCodeActionId: Option[String] = Some( + "ConvertToNamedArguments" ) override type CommandData = ServerCommands.ConvertToNamedArgsRequest diff --git a/metals/src/main/scala/scala/meta/internal/metals/codeactions/ExtractMethodCodeAction.scala b/metals/src/main/scala/scala/meta/internal/metals/codeactions/ExtractMethodCodeAction.scala index b11988e3ad4..0eed8da0bd2 100644 --- a/metals/src/main/scala/scala/meta/internal/metals/codeactions/ExtractMethodCodeAction.scala +++ b/metals/src/main/scala/scala/meta/internal/metals/codeactions/ExtractMethodCodeAction.scala @@ -15,7 +15,6 @@ import scala.meta.internal.metals.clients.language.MetalsLanguageClient import scala.meta.internal.metals.logging import scala.meta.internal.parsing.Trees import scala.meta.pc.CancelToken -import scala.meta.pc.CodeActionId import org.eclipse.lsp4j.CodeActionParams import org.eclipse.{lsp4j => l} @@ -33,8 +32,8 @@ class ExtractMethodCodeAction( ) override def kind: String = l.CodeActionKind.RefactorExtract - override val maybeCodeActionId: Option[CodeActionId] = Some( - CodeActionId.ExtractMethod + override val maybeCodeActionId: Option[String] = Some( + "ExtractMethod" ) override def handleCommand( diff --git a/metals/src/main/scala/scala/meta/internal/metals/codeactions/ImplementAbstractMembers.scala b/metals/src/main/scala/scala/meta/internal/metals/codeactions/ImplementAbstractMembers.scala index ac5915f31b5..8ac155cc812 100644 --- a/metals/src/main/scala/scala/meta/internal/metals/codeactions/ImplementAbstractMembers.scala +++ b/metals/src/main/scala/scala/meta/internal/metals/codeactions/ImplementAbstractMembers.scala @@ -8,7 +8,6 @@ import scala.meta.internal.metals.MetalsEnrichments._ import scala.meta.internal.metals.ScalacDiagnostic import scala.meta.internal.metals.codeactions.CodeAction import scala.meta.pc.CancelToken -import scala.meta.pc.CodeActionId import org.eclipse.{lsp4j => l} @@ -16,8 +15,8 @@ class ImplementAbstractMembers(compilers: Compilers) extends CodeAction { override def kind: String = l.CodeActionKind.QuickFix - override val maybeCodeActionId: Option[CodeActionId] = Some( - CodeActionId.ImplementAbstractMembers + override val maybeCodeActionId: Option[String] = Some( + "ImplementAbstractMembers" ) override def contribute( diff --git a/metals/src/main/scala/scala/meta/internal/metals/codeactions/ImportMissingSymbol.scala b/metals/src/main/scala/scala/meta/internal/metals/codeactions/ImportMissingSymbol.scala index 9799e30491b..baf503c2573 100644 --- a/metals/src/main/scala/scala/meta/internal/metals/codeactions/ImportMissingSymbol.scala +++ b/metals/src/main/scala/scala/meta/internal/metals/codeactions/ImportMissingSymbol.scala @@ -10,7 +10,6 @@ import scala.meta.internal.metals.ScalaVersions import scala.meta.internal.metals.ScalacDiagnostic import scala.meta.internal.metals.codeactions.CodeAction import scala.meta.pc.CancelToken -import scala.meta.pc.CodeActionId import org.eclipse.{lsp4j => l} @@ -19,8 +18,8 @@ class ImportMissingSymbol(compilers: Compilers, buildTargets: BuildTargets) override def kind: String = l.CodeActionKind.QuickFix - override val maybeCodeActionId: Option[CodeActionId] = Some( - CodeActionId.ImportMissingSymbol + override val maybeCodeActionId: Option[String] = Some( + "ImportMissingSymbol" ) override def contribute( diff --git a/metals/src/main/scala/scala/meta/internal/metals/codeactions/InlineValueCodeAction.scala b/metals/src/main/scala/scala/meta/internal/metals/codeactions/InlineValueCodeAction.scala index b1d6adad21c..6eccd72a2c0 100644 --- a/metals/src/main/scala/scala/meta/internal/metals/codeactions/InlineValueCodeAction.scala +++ b/metals/src/main/scala/scala/meta/internal/metals/codeactions/InlineValueCodeAction.scala @@ -16,7 +16,6 @@ import scala.meta.internal.metals.codeactions.CodeAction import scala.meta.internal.parsing.Trees import scala.meta.io.AbsolutePath import scala.meta.pc.CancelToken -import scala.meta.pc.CodeActionId import org.eclipse.{lsp4j => l} @@ -33,8 +32,8 @@ class InlineValueCodeAction( override def kind: String = l.CodeActionKind.RefactorInline - override val maybeCodeActionId: Option[CodeActionId] = Some( - CodeActionId.InlineValue + override val maybeCodeActionId: Option[String] = Some( + "InlineValue" ) override def contribute(params: l.CodeActionParams, token: CancelToken)( diff --git a/metals/src/main/scala/scala/meta/internal/metals/codeactions/InsertInferredType.scala b/metals/src/main/scala/scala/meta/internal/metals/codeactions/InsertInferredType.scala index 4e3fa6b8aff..36592d71eb4 100644 --- a/metals/src/main/scala/scala/meta/internal/metals/codeactions/InsertInferredType.scala +++ b/metals/src/main/scala/scala/meta/internal/metals/codeactions/InsertInferredType.scala @@ -16,7 +16,6 @@ import scala.meta.internal.metals.codeactions.CodeAction import scala.meta.internal.metals.codeactions.CodeActionBuilder import scala.meta.internal.parsing.Trees import scala.meta.pc.CancelToken -import scala.meta.pc.CodeActionId import org.eclipse.{lsp4j => l} @@ -34,8 +33,8 @@ class InsertInferredType( import InsertInferredType._ override def kind: String = l.CodeActionKind.QuickFix - override val maybeCodeActionId: Option[CodeActionId] = Some( - CodeActionId.InsertInferredType + override val maybeCodeActionId: Option[String] = Some( + "InsertInferredType" ) override def handleCommand( diff --git a/mtags-interfaces/src/main/java/scala/meta/pc/CodeActionId.java b/mtags-interfaces/src/main/java/scala/meta/pc/CodeActionId.java deleted file mode 100644 index f28a992006a..00000000000 --- a/mtags-interfaces/src/main/java/scala/meta/pc/CodeActionId.java +++ /dev/null @@ -1,10 +0,0 @@ -package scala.meta.pc; - -public enum CodeActionId { - ConvertToNamedArguments, - ExtractMethod, - ImplementAbstractMembers, - ImportMissingSymbol, - InlineValue, - InsertInferredType, -} diff --git a/mtags-interfaces/src/main/java/scala/meta/pc/PresentationCompiler.java b/mtags-interfaces/src/main/java/scala/meta/pc/PresentationCompiler.java index d5e225fbc0b..23fc875fae8 100644 --- a/mtags-interfaces/src/main/java/scala/meta/pc/PresentationCompiler.java +++ b/mtags-interfaces/src/main/java/scala/meta/pc/PresentationCompiler.java @@ -115,21 +115,21 @@ public CompletableFuture> references(References /** * Execute the given code action */ - public CompletableFuture> codeAction(OffsetParams params, CodeActionId codeActionId, Object codeActionPayload) { + public CompletableFuture> codeAction(OffsetParams params, String codeActionId, Object codeActionPayload) { return CompletableFuture.completedFuture(Collections.emptyList()); } /** * Returns the list of code actions supported by the current presentation compiler. */ - public List supportedCodeActions() { + public List supportedCodeActions() { return Arrays.asList( - CodeActionId.ConvertToNamedArguments, - CodeActionId.ExtractMethod, - CodeActionId.ImplementAbstractMembers, - CodeActionId.ImportMissingSymbol, - CodeActionId.InlineValue, - CodeActionId.InsertInferredType + "ConvertToNamedArguments", + "ExtractMethod", + "ImplementAbstractMembers", + "ImportMissingSymbol", + "InlineValue", + "InsertInferredType" ); }