contributor for Scala Center
team lead for ScalaCLI and Metals teams at VirtusLab
Client Editor
LSP Server
Client Editor
LSP Server
object Main{
def adding(a : Int, b : Int) = a + b
val additional = ""
val one = 1
val two = 2
addi_
}
Client Editor
LSP Server
object Main{
def adding(a : Int, b : Int) = a + b
val additional = ""
val one = 1
val two = 2
addi_
}
Completions
Client Editor
LSP Server
object Main{
def adding(a : Int, b : Int) = a + b
val additional = ""
val one = 1
val two = 2
addi_
}
Completions
Client Editor
LSP Server
object Main{
def adding(a : Int, b : Int) = a + b
val additional = ""
val one = 1
val two = 2
addi_
}
Client Editor
LSP Server
object Main{
def adding(a : Int, b : Int) = a + b
val additional = ""
val one = 1
val two = 2
addi_
}
Client Editor
LSP Server
object Main{
def adding(a : Int, b : Int) = a + b
val additional = ""
val one = 1
val two = 2
addi_
}
- adding()
- additional
Client Editor
LSP Server
object Main{
def adding(a : Int, b : Int) = a + b
val additional = ""
val one = 1
val two = 2
addi_
}
- adding()
- additional
Client Editor
LSP Server
object Main{
def adding(a : Int, b : Int) = a + b
val additional = ""
val one = 1
val two = 2
addi_
}
Client Editor
LSP Server
object Main{
def adding(a : Int, b : Int) = a + b
val additional = ""
val one = 1
val two = 2
adding(_)
}
When those conditions are not met people will not have a great time.
They will complain about their tooling and...
public abstract class PresentationCompiler {
public CompletableFuture<List<Node>>
semanticTokens(VirtualFileParams params)
public abstract CompletableFuture<CompletionList>
complete(OffsetParams params);
public abstract CompletableFuture<CompletionItem>
completionItemResolve(CompletionItem item, String symbol);
public abstract CompletableFuture<SignatureHelp>
signatureHelp(OffsetParams params);
public abstract CompletableFuture<Optional<HoverSignature>>
hover(OffsetParams params);
...
}
Quick demo
Compiler or build tools know how to fix their stuff (most of the time)
We can propagate automatic fixes suggestions form the compiler to the IDEs
This gives us errors with ready fixes for the user to try
Works with Scala 2 and 3 compilers
metals.build-connect
metals.build-restart
metals.compile-clean
metals.reset-workspace
I do try to help out as soon as possible
set debug flag
look through the doctor
jstack/jmap
verbose compilation (coming soon)
Soon
Soon
Soon
This year
This year
when done
Presentation compiler approach on a whole module level.
object O{
def foo(): Int = {
"" // error expected Int
}
}