forked from scalameta/metals
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathEndpoints.scala
83 lines (78 loc) · 4.3 KB
/
Endpoints.scala
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
// scalafmt: { maxColumn = 120 }
package org.langmeta.lsp
import org.langmeta.jsonrpc.Endpoint
import org.langmeta.jsonrpc.Endpoint._
import io.circe.Json
import org.langmeta.jsonrpc.JsonRpcClient
object Lifecycle extends Lifecycle
trait Lifecycle {
val initialized: Endpoint[Json, Unit] =
notification("initialized")
val initialize: Endpoint[InitializeParams, InitializeResult] =
request[InitializeParams, InitializeResult]("initialize")
val shutdown: Endpoint[Json, Json] =
request("shutdown")
val exit: Endpoint[Json, Unit] =
notification("exit")
}
object TextDocument extends TextDocument
trait TextDocument {
val publishDiagnostics: Endpoint[PublishDiagnostics, Unit] =
notification[PublishDiagnostics]("textDocument/publishDiagnostics")
val didClose: Endpoint[DidCloseTextDocumentParams, Unit] =
notification[DidCloseTextDocumentParams]("textDocument/didClose")
val didSave: Endpoint[DidSaveTextDocumentParams, Unit] =
notification[DidSaveTextDocumentParams]("textDocument/didSave")
val didOpen: Endpoint[DidOpenTextDocumentParams, Unit] =
notification[DidOpenTextDocumentParams]("textDocument/didOpen")
val didChange: Endpoint[DidChangeTextDocumentParams, Unit] =
notification[DidChangeTextDocumentParams]("textDocument/didChange")
val completion: Endpoint[TextDocumentPositionParams, CompletionList] =
request[TextDocumentPositionParams, CompletionList]("textDocument/completion")
val definition: Endpoint[TextDocumentPositionParams, List[Location]] =
request[TextDocumentPositionParams, List[Location]]("textDocument/definition")
val references: Endpoint[ReferenceParams, List[Location]] =
request[ReferenceParams, List[Location]]("textDocument/references")
val hover: Endpoint[TextDocumentPositionParams, Hover] =
request[TextDocumentPositionParams, Hover]("textDocument/hover")
val codeAction: Endpoint[CodeActionParams, List[Command]] =
request[CodeActionParams, List[Command]]("textDocument/codeAction")
val documentHighlight: Endpoint[TextDocumentPositionParams, List[DocumentHighlight]] =
request[TextDocumentPositionParams, List[DocumentHighlight]]("textDocument/documentHighlight")
val documentSymbol: Endpoint[DocumentSymbolParams, List[SymbolInformation]] =
request[DocumentSymbolParams, List[SymbolInformation]]("textDocument/documentSymbol")
val formatting: Endpoint[DocumentFormattingParams, List[TextEdit]] =
request[DocumentFormattingParams, List[TextEdit]]("textDocument/formatting")
val rename: Endpoint[RenameParams, WorkspaceEdit] =
request[RenameParams, WorkspaceEdit]("textDocument/rename")
val signatureHelp: Endpoint[TextDocumentPositionParams, SignatureHelp] =
request[TextDocumentPositionParams, SignatureHelp]("textDocument/signatureHelp")
}
object Workspace extends Workspace
trait Workspace {
val didChangeConfiguration: Endpoint[DidChangeConfigurationParams, Unit] =
notification[DidChangeConfigurationParams]("workspace/didChangeConfiguration")
val didChangeWatchedFiles: Endpoint[DidChangeWatchedFilesParams, Unit] =
notification[DidChangeWatchedFilesParams]("workspace/didChangeWatchedFiles")
val executeCommand: Endpoint[ExecuteCommandParams, Json] =
request[ExecuteCommandParams, Json]("workspace/executeCommand")
val symbol: Endpoint[WorkspaceSymbolParams, List[SymbolInformation]] =
request[WorkspaceSymbolParams, List[SymbolInformation]]("workspace/symbol")
val applyEdit: Endpoint[ApplyWorkspaceEditParams, ApplyWorkspaceEditResponse] =
request[ApplyWorkspaceEditParams, ApplyWorkspaceEditResponse]("workspace/applyEdit")
}
object Window extends Window
trait Window {
object showMessage extends Endpoint[ShowMessageParams, Unit]("window/showMessage") {
def error(message: String)(implicit client: JsonRpcClient): Unit =
showMessage.notify(ShowMessageParams(MessageType.Error, message))
def warn(message: String)(implicit client: JsonRpcClient): Unit =
showMessage.notify(ShowMessageParams(MessageType.Warning, message))
def info(message: String)(implicit client: JsonRpcClient): Unit =
showMessage.notify(ShowMessageParams(MessageType.Info, message))
}
object logMessage extends Endpoint[LogMessageParams, Unit]("window/logMessage") {
def log(message: String)(implicit client: JsonRpcClient): Unit =
super.notify(LogMessageParams(MessageType.Log, message))
}
}