File: .lake/packages/lean4/src/lean/Lean/Data/Lsp/Extra.lean

full_name: Lean.Lsp.DependencyBuildMode.once
code: /--
  Controls when dependencies are built on `textDocument/didOpen` notifications.
-/
inductive DependencyBuildMode where
  /-- Always build dependencies. -/
  | always
  /-- Build dependencies once, but then do not build them again on import changes / crashes. Used for `didOpen` notifications that are explicitly intended for manually triggering the build. -/
  | once
  /--  Never build dependencies. -/
  | never
  deriving FromJson, ToJson, Inhabited
goal: Lean.Lsp.DependencyBuildMode

full_name: Lean.Lsp.instInhabitedDependencyBuildMode
code: /--
  Controls when dependencies are built on `textDocument/didOpen` notifications.
-/
inductive DependencyBuildMode where
  /-- Always build dependencies. -/
  | always
  /-- Build dependencies once, but then do not build them again on import changes / crashes. Used for `didOpen` notifications that are explicitly intended for manually triggering the build. -/
  | once
  /--  Never build dependencies. -/
  | never
  deriving FromJson, ToJson, Inhabited
goal: Inhabited Lean.Lsp.DependencyBuildMode

full_name: Lean.Lsp.DependencyBuildMode.always
code: /--
  Controls when dependencies are built on `textDocument/didOpen` notifications.
-/
inductive DependencyBuildMode where
  /-- Always build dependencies. -/
  | always
  /-- Build dependencies once, but then do not build them again on import changes / crashes. Used for `didOpen` notifications that are explicitly intended for manually triggering the build. -/
  | once
  /--  Never build dependencies. -/
  | never
  deriving FromJson, ToJson, Inhabited
goal: Lean.Lsp.DependencyBuildMode

full_name: Lean.Lsp.DependencyBuildMode.never
code: /--
  Controls when dependencies are built on `textDocument/didOpen` notifications.
-/
inductive DependencyBuildMode where
  /-- Always build dependencies. -/
  | always
  /-- Build dependencies once, but then do not build them again on import changes / crashes. Used for `didOpen` notifications that are explicitly intended for manually triggering the build. -/
  | once
  /--  Never build dependencies. -/
  | never
  deriving FromJson, ToJson, Inhabited
goal: Lean.Lsp.DependencyBuildMode

full_name: Lean.Lsp.DependencyBuildMode
code: /--
  Controls when dependencies are built on `textDocument/didOpen` notifications.
-/
inductive DependencyBuildMode where
  /-- Always build dependencies. -/
  | always
  /-- Build dependencies once, but then do not build them again on import changes / crashes. Used for `didOpen` notifications that are explicitly intended for manually triggering the build. -/
  | once
  /--  Never build dependencies. -/
  | never
  deriving FromJson, ToJson, Inhabited
goal: Type

full_name: Lean.Lsp.instFromJsonDependencyBuildMode
code: FromJson
goal: Lean.FromJson Lean.Lsp.DependencyBuildMode

full_name: Lean.Lsp.instToJsonDependencyBuildMode
code: ToJson
goal: Lean.ToJson Lean.Lsp.DependencyBuildMode

full_name: Lean.Lsp.LeanDidOpenTextDocumentParams.dependencyBuildMode?
code: structure LeanDidOpenTextDocumentParams extends DidOpenTextDocumentParams where
  dependencyBuildMode? : Option DependencyBuildMode := none -- `none`: Compatibility with clients pre-build-mode
  deriving FromJson, ToJson
goal: Option Lean.Lsp.DependencyBuildMode

full_name: Lean.Lsp.LeanDidOpenTextDocumentParams
code: structure LeanDidOpenTextDocumentParams extends DidOpenTextDocumentParams where
  dependencyBuildMode? : Option DependencyBuildMode := none -- `none`: Compatibility with clients pre-build-mode
  deriving FromJson, ToJson
goal: Type

full_name: Lean.Lsp.instFromJsonLeanDidOpenTextDocumentParams
code: FromJson
goal: Lean.FromJson Lean.Lsp.LeanDidOpenTextDocumentParams

full_name: Lean.Lsp.instToJsonLeanDidOpenTextDocumentParams
code: ToJson
goal: Lean.ToJson Lean.Lsp.LeanDidOpenTextDocumentParams

full_name: Lean.Lsp.WaitForDiagnosticsParams.version
code: /-- `textDocument/waitForDiagnostics` client->server request.

Yields a response when all the diagnostics for a version of the document greater or equal to the
specified one have been emitted. If the request specifies a version above the most recently
processed one, the server will delay the response until it does receive the specified version.
Exists for synchronization purposes, e.g. during testing or when external tools might want to use
our LSP server. -/
structure WaitForDiagnosticsParams where
  uri     : DocumentUri
  version : Nat
  deriving FromJson, ToJson
goal: Nat

full_name: Lean.Lsp.WaitForDiagnosticsParams
code: /-- `textDocument/waitForDiagnostics` client->server request.

Yields a response when all the diagnostics for a version of the document greater or equal to the
specified one have been emitted. If the request specifies a version above the most recently
processed one, the server will delay the response until it does receive the specified version.
Exists for synchronization purposes, e.g. during testing or when external tools might want to use
our LSP server. -/
structure WaitForDiagnosticsParams where
  uri     : DocumentUri
  version : Nat
  deriving FromJson, ToJson
goal: Type

full_name: Lean.Lsp.WaitForDiagnosticsParams.uri
code: /-- `textDocument/waitForDiagnostics` client->server request.

Yields a response when all the diagnostics for a version of the document greater or equal to the
specified one have been emitted. If the request specifies a version above the most recently
processed one, the server will delay the response until it does receive the specified version.
Exists for synchronization purposes, e.g. during testing or when external tools might want to use
our LSP server. -/
structure WaitForDiagnosticsParams where
  uri     : DocumentUri
  version : Nat
  deriving FromJson, ToJson
goal: Lean.Lsp.DocumentUri

full_name: Lean.Lsp.instFromJsonWaitForDiagnosticsParams
code: FromJson
goal: Lean.FromJson Lean.Lsp.WaitForDiagnosticsParams

full_name: Lean.Lsp.instToJsonWaitForDiagnosticsParams
code: ToJson
goal: Lean.ToJson Lean.Lsp.WaitForDiagnosticsParams

full_name: Lean.Lsp.WaitForDiagnostics
code: /-- `textDocument/waitForDiagnostics` client<-server reply. -/
structure WaitForDiagnostics
goal: Type

full_name: Lean.Lsp.instFromJsonWaitForDiagnostics
code: instance : FromJson WaitForDiagnostics 
goal: Lean.FromJson Lean.Lsp.WaitForDiagnostics

full_name: Lean.Lsp.instToJsonWaitForDiagnostics
code: instance : ToJson WaitForDiagnostics 
goal: Lean.ToJson Lean.Lsp.WaitForDiagnostics

full_name: Lean.Lsp.LeanFileProgressKind.fatalError
code: inductive LeanFileProgressKind
  | processing | fatalError
  deriving Inhabited, BEq
goal: Lean.Lsp.LeanFileProgressKind

full_name: Lean.Lsp.LeanFileProgressKind.processing
code: inductive LeanFileProgressKind
  | processing | fatalError
  deriving Inhabited, BEq
goal: Lean.Lsp.LeanFileProgressKind

full_name: Lean.Lsp.instInhabitedLeanFileProgressKind
code: inductive LeanFileProgressKind
  | processing | fatalError
  deriving Inhabited, BEq
goal: Inhabited Lean.Lsp.LeanFileProgressKind

full_name: Lean.Lsp.LeanFileProgressKind
code: inductive LeanFileProgressKind
  | processing | fatalError
  deriving Inhabited, BEq
goal: Type

full_name: Lean.Lsp.instBEqLeanFileProgressKind
code: BEq
goal: BEq Lean.Lsp.LeanFileProgressKind

full_name: Lean.Lsp.instFromJsonLeanFileProgressKind
code: instance : FromJson LeanFileProgressKind 
goal: Lean.FromJson Lean.Lsp.LeanFileProgressKind

full_name: Lean.Lsp.instToJsonLeanFileProgressKind
code: instance : ToJson LeanFileProgressKind 
goal: Lean.ToJson Lean.Lsp.LeanFileProgressKind

full_name: Lean.Lsp.LeanFileProgressProcessingInfo
code: structure LeanFileProgressProcessingInfo where
  range : Range
  kind : LeanFileProgressKind := LeanFileProgressKind.processing
  deriving FromJson, ToJson
goal: Type

full_name: Lean.Lsp.LeanFileProgressProcessingInfo.range
code: structure LeanFileProgressProcessingInfo where
  range : Range
  kind : LeanFileProgressKind := LeanFileProgressKind.processing
  deriving FromJson, ToJson
goal: Lean.Lsp.Range

full_name: Lean.Lsp.LeanFileProgressProcessingInfo.kind
code: structure LeanFileProgressProcessingInfo where
  range : Range
  kind : LeanFileProgressKind := LeanFileProgressKind.processing
  deriving FromJson, ToJson
goal: Lean.Lsp.LeanFileProgressKind

full_name: Lean.Lsp.instFromJsonLeanFileProgressProcessingInfo
code: FromJson
goal: Lean.FromJson Lean.Lsp.LeanFileProgressProcessingInfo

full_name: Lean.Lsp.instToJsonLeanFileProgressProcessingInfo
code: ToJson
goal: Lean.ToJson Lean.Lsp.LeanFileProgressProcessingInfo

full_name: Lean.Lsp.LeanFileProgressParams.processing
code: /-- `$/lean/fileProgress` client<-server notification.

Contains the ranges of the document that are currently being processed by the server. -/
structure LeanFileProgressParams where
  textDocument : VersionedTextDocumentIdentifier
  processing : Array LeanFileProgressProcessingInfo
  deriving FromJson, ToJson
goal: Array Lean.Lsp.LeanFileProgressProcessingInfo

full_name: Lean.Lsp.LeanFileProgressParams
code: /-- `$/lean/fileProgress` client<-server notification.

Contains the ranges of the document that are currently being processed by the server. -/
structure LeanFileProgressParams where
  textDocument : VersionedTextDocumentIdentifier
  processing : Array LeanFileProgressProcessingInfo
  deriving FromJson, ToJson
goal: Type

full_name: Lean.Lsp.LeanFileProgressParams.textDocument
code: /-- `$/lean/fileProgress` client<-server notification.

Contains the ranges of the document that are currently being processed by the server. -/
structure LeanFileProgressParams where
  textDocument : VersionedTextDocumentIdentifier
  processing : Array LeanFileProgressProcessingInfo
  deriving FromJson, ToJson
goal: Lean.Lsp.VersionedTextDocumentIdentifier

full_name: Lean.Lsp.instFromJsonLeanFileProgressParams
code: FromJson
goal: Lean.FromJson Lean.Lsp.LeanFileProgressParams

full_name: Lean.Lsp.instToJsonLeanFileProgressParams
code: ToJson
goal: Lean.ToJson Lean.Lsp.LeanFileProgressParams

full_name: Lean.Lsp.PlainGoalParams
code: /-- `$/lean/plainGoal` client->server request.

If there is a tactic proof at the specified position, returns the current goals.
Otherwise returns `null`. -/
structure PlainGoalParams extends TextDocumentPositionParams
  deriving FromJson, ToJson
goal: Type

full_name: Lean.Lsp.instFromJsonPlainGoalParams
code: FromJson
goal: Lean.FromJson Lean.Lsp.PlainGoalParams

full_name: Lean.Lsp.instToJsonPlainGoalParams
code: ToJson
goal: Lean.ToJson Lean.Lsp.PlainGoalParams

full_name: Lean.Lsp.PlainGoal
code: /-- `$/lean/plainGoal` client<-server reply. -/
structure PlainGoal where
  /-- The goals as pretty-printed Markdown, or something like "no goals" if accomplished. -/
  rendered : String
  /-- The pretty-printed goals, empty if all accomplished. -/
  goals : Array String
  deriving FromJson, ToJson
goal: Type

full_name: Lean.Lsp.PlainGoal.rendered
code: /-- `$/lean/plainGoal` client<-server reply. -/
structure PlainGoal where
  /-- The goals as pretty-printed Markdown, or something like "no goals" if accomplished. -/
  rendered : String
  /-- The pretty-printed goals, empty if all accomplished. -/
  goals : Array String
  deriving FromJson, ToJson
goal: String

full_name: Lean.Lsp.PlainGoal.goals
code: /-- `$/lean/plainGoal` client<-server reply. -/
structure PlainGoal where
  /-- The goals as pretty-printed Markdown, or something like "no goals" if accomplished. -/
  rendered : String
  /-- The pretty-printed goals, empty if all accomplished. -/
  goals : Array String
  deriving FromJson, ToJson
goal: Array String

full_name: Lean.Lsp.instFromJsonPlainGoal
code: FromJson
goal: Lean.FromJson Lean.Lsp.PlainGoal

full_name: Lean.Lsp.instToJsonPlainGoal
code: ToJson
goal: Lean.ToJson Lean.Lsp.PlainGoal

full_name: Lean.Lsp.PlainTermGoalParams
code: /-- `$/lean/plainTermGoal` client->server request.

Returns the expected type at the specified position, pretty-printed as a string. -/
structure PlainTermGoalParams extends TextDocumentPositionParams
  deriving FromJson, ToJson
goal: Type

full_name: Lean.Lsp.instFromJsonPlainTermGoalParams
code: FromJson
goal: Lean.FromJson Lean.Lsp.PlainTermGoalParams

full_name: Lean.Lsp.instToJsonPlainTermGoalParams
code: ToJson
goal: Lean.ToJson Lean.Lsp.PlainTermGoalParams

full_name: Lean.Lsp.PlainTermGoal.goal
code: /-- `$/lean/plainTermGoal` client<-server reply. -/
structure PlainTermGoal where
  goal : String
  range : Range
  deriving FromJson, ToJson
goal: String

full_name: Lean.Lsp.PlainTermGoal.range
code: /-- `$/lean/plainTermGoal` client<-server reply. -/
structure PlainTermGoal where
  goal : String
  range : Range
  deriving FromJson, ToJson
goal: Lean.Lsp.Range

full_name: Lean.Lsp.PlainTermGoal
code: /-- `$/lean/plainTermGoal` client<-server reply. -/
structure PlainTermGoal where
  goal : String
  range : Range
  deriving FromJson, ToJson
goal: Type

full_name: Lean.Lsp.instFromJsonPlainTermGoal
code: FromJson
goal: Lean.FromJson Lean.Lsp.PlainTermGoal

full_name: Lean.Lsp.instToJsonPlainTermGoal
code: ToJson
goal: Lean.ToJson Lean.Lsp.PlainTermGoal

full_name: Lean.Lsp.RpcConnectParams
code: /-- `$/lean/rpc/connect` client->server request.

Starts an RPC session at the given file's worker, replying with the new session ID.
Multiple sessions may be started and operating concurrently.

A session may be destroyed by the server at any time (e.g. due to a crash), in which case further
RPC requests for that session will reply with `RpcNeedsReconnect` errors. The client should discard
references held from that session and `connect` again. -/
structure RpcConnectParams where
  uri : DocumentUri
  deriving FromJson, ToJson
goal: Type

full_name: Lean.Lsp.RpcConnectParams.uri
code: /-- `$/lean/rpc/connect` client->server request.

Starts an RPC session at the given file's worker, replying with the new session ID.
Multiple sessions may be started and operating concurrently.

A session may be destroyed by the server at any time (e.g. due to a crash), in which case further
RPC requests for that session will reply with `RpcNeedsReconnect` errors. The client should discard
references held from that session and `connect` again. -/
structure RpcConnectParams where
  uri : DocumentUri
  deriving FromJson, ToJson
goal: Lean.Lsp.DocumentUri

full_name: Lean.Lsp.instFromJsonRpcConnectParams
code: FromJson
goal: Lean.FromJson Lean.Lsp.RpcConnectParams

full_name: Lean.Lsp.instToJsonRpcConnectParams
code: ToJson
goal: Lean.ToJson Lean.Lsp.RpcConnectParams

full_name: Lean.Lsp.RpcConnected.sessionId
code: /-- `$/lean/rpc/connect` client<-server reply.

Indicates that an RPC connection had been made and a session started for it. -/
structure RpcConnected where
  sessionId : UInt64
  deriving FromJson, ToJson
goal: UInt64

full_name: Lean.Lsp.RpcConnected
code: /-- `$/lean/rpc/connect` client<-server reply.

Indicates that an RPC connection had been made and a session started for it. -/
structure RpcConnected where
  sessionId : UInt64
  deriving FromJson, ToJson
goal: Type

full_name: Lean.Lsp.instFromJsonRpcConnected
code: FromJson
goal: Lean.FromJson Lean.Lsp.RpcConnected

full_name: Lean.Lsp.instToJsonRpcConnected
code: ToJson
goal: Lean.ToJson Lean.Lsp.RpcConnected

full_name: Lean.Lsp.RpcCallParams.method
code: /-- `$/lean/rpc/call` client->server request.

A request to execute a procedure bound for RPC. If an incorrect session ID is present, the server
errors with `RpcNeedsReconnect`.

Extending TDPP is weird. But in Lean, symbols exist in the context of a position within a source
file. So we need this to refer to code in the environment at that position. -/
structure RpcCallParams extends TextDocumentPositionParams where
  sessionId : UInt64
  /-- Procedure to invoke. Must be fully qualified. -/
  method : Name
  params : Json
  deriving FromJson, ToJson
goal: Lean.Name

full_name: Lean.Lsp.RpcCallParams.sessionId
code: /-- `$/lean/rpc/call` client->server request.

A request to execute a procedure bound for RPC. If an incorrect session ID is present, the server
errors with `RpcNeedsReconnect`.

Extending TDPP is weird. But in Lean, symbols exist in the context of a position within a source
file. So we need this to refer to code in the environment at that position. -/
structure RpcCallParams extends TextDocumentPositionParams where
  sessionId : UInt64
  /-- Procedure to invoke. Must be fully qualified. -/
  method : Name
  params : Json
  deriving FromJson, ToJson
goal: UInt64

full_name: Lean.Lsp.RpcCallParams
code: /-- `$/lean/rpc/call` client->server request.

A request to execute a procedure bound for RPC. If an incorrect session ID is present, the server
errors with `RpcNeedsReconnect`.

Extending TDPP is weird. But in Lean, symbols exist in the context of a position within a source
file. So we need this to refer to code in the environment at that position. -/
structure RpcCallParams extends TextDocumentPositionParams where
  sessionId : UInt64
  /-- Procedure to invoke. Must be fully qualified. -/
  method : Name
  params : Json
  deriving FromJson, ToJson
goal: Type

full_name: Lean.Lsp.RpcCallParams.params
code: /-- `$/lean/rpc/call` client->server request.

A request to execute a procedure bound for RPC. If an incorrect session ID is present, the server
errors with `RpcNeedsReconnect`.

Extending TDPP is weird. But in Lean, symbols exist in the context of a position within a source
file. So we need this to refer to code in the environment at that position. -/
structure RpcCallParams extends TextDocumentPositionParams where
  sessionId : UInt64
  /-- Procedure to invoke. Must be fully qualified. -/
  method : Name
  params : Json
  deriving FromJson, ToJson
goal: Lean.Json

full_name: Lean.Lsp.instFromJsonRpcCallParams
code: FromJson
goal: Lean.FromJson Lean.Lsp.RpcCallParams

full_name: Lean.Lsp.instToJsonRpcCallParams
code: ToJson
goal: Lean.ToJson Lean.Lsp.RpcCallParams

full_name: Lean.Lsp.RpcReleaseParams.uri
code: /-- `$/lean/rpc/release` client->server notification.

A notification to release remote references. Should be sent by the client when it no longer needs
`RpcRef`s it has previously received from the server. Not doing so is safe but will leak memory. -/
structure RpcReleaseParams where
  uri : DocumentUri
  sessionId : UInt64
  refs : Array RpcRef
  deriving FromJson, ToJson
goal: Lean.Lsp.DocumentUri

full_name: Lean.Lsp.RpcReleaseParams
code: /-- `$/lean/rpc/release` client->server notification.

A notification to release remote references. Should be sent by the client when it no longer needs
`RpcRef`s it has previously received from the server. Not doing so is safe but will leak memory. -/
structure RpcReleaseParams where
  uri : DocumentUri
  sessionId : UInt64
  refs : Array RpcRef
  deriving FromJson, ToJson
goal: Type

full_name: Lean.Lsp.RpcReleaseParams.refs
code: /-- `$/lean/rpc/release` client->server notification.

A notification to release remote references. Should be sent by the client when it no longer needs
`RpcRef`s it has previously received from the server. Not doing so is safe but will leak memory. -/
structure RpcReleaseParams where
  uri : DocumentUri
  sessionId : UInt64
  refs : Array RpcRef
  deriving FromJson, ToJson
goal: Array Lean.Lsp.RpcRef

full_name: Lean.Lsp.RpcReleaseParams.sessionId
code: /-- `$/lean/rpc/release` client->server notification.

A notification to release remote references. Should be sent by the client when it no longer needs
`RpcRef`s it has previously received from the server. Not doing so is safe but will leak memory. -/
structure RpcReleaseParams where
  uri : DocumentUri
  sessionId : UInt64
  refs : Array RpcRef
  deriving FromJson, ToJson
goal: UInt64

full_name: Lean.Lsp.instFromJsonRpcReleaseParams
code: FromJson
goal: Lean.FromJson Lean.Lsp.RpcReleaseParams

full_name: Lean.Lsp.instToJsonRpcReleaseParams
code: ToJson
goal: Lean.ToJson Lean.Lsp.RpcReleaseParams

full_name: Lean.Lsp.RpcKeepAliveParams
code: /-- `$/lean/rpc/keepAlive` client->server notification.

The client must send an RPC notification every 10s in order to keep the RPC session alive.
This is the simplest one. On not seeing any notifications for three 10s periods, the server
will drop the RPC session and its associated references. -/
structure RpcKeepAliveParams where
  uri : DocumentUri
  sessionId : UInt64
  deriving FromJson, ToJson
goal: Type

full_name: Lean.Lsp.RpcKeepAliveParams.sessionId
code: /-- `$/lean/rpc/keepAlive` client->server notification.

The client must send an RPC notification every 10s in order to keep the RPC session alive.
This is the simplest one. On not seeing any notifications for three 10s periods, the server
will drop the RPC session and its associated references. -/
structure RpcKeepAliveParams where
  uri : DocumentUri
  sessionId : UInt64
  deriving FromJson, ToJson
goal: UInt64

full_name: Lean.Lsp.RpcKeepAliveParams.uri
code: /-- `$/lean/rpc/keepAlive` client->server notification.

The client must send an RPC notification every 10s in order to keep the RPC session alive.
This is the simplest one. On not seeing any notifications for three 10s periods, the server
will drop the RPC session and its associated references. -/
structure RpcKeepAliveParams where
  uri : DocumentUri
  sessionId : UInt64
  deriving FromJson, ToJson
goal: Lean.Lsp.DocumentUri

full_name: Lean.Lsp.instFromJsonRpcKeepAliveParams
code: FromJson
goal: Lean.FromJson Lean.Lsp.RpcKeepAliveParams

full_name: Lean.Lsp.instToJsonRpcKeepAliveParams
code: ToJson
goal: Lean.ToJson Lean.Lsp.RpcKeepAliveParams

full_name: Lean.Lsp.instInhabitedLineRange
code: /--
Range of lines in a document, including `start` but excluding `end`.
-/
structure LineRange where
  start : Nat
  «end» : Nat
  deriving Inhabited, Repr, FromJson, ToJson
goal: Inhabited Lean.Lsp.LineRange

full_name: Lean.Lsp.instReprLineRange
code: /--
Range of lines in a document, including `start` but excluding `end`.
-/
structure LineRange where
  start : Nat
  «end» : Nat
  deriving Inhabited, Repr, FromJson, ToJson
goal: Repr Lean.Lsp.LineRange

full_name: Lean.Lsp.LineRange.start
code: /--
Range of lines in a document, including `start` but excluding `end`.
-/
structure LineRange where
  start : Nat
  «end» : Nat
  deriving Inhabited, Repr, FromJson, ToJson
goal: Nat

full_name: Lean.Lsp.LineRange.end
code: /--
Range of lines in a document, including `start` but excluding `end`.
-/
structure LineRange where
  start : Nat
  «end» : Nat
  deriving Inhabited, Repr, FromJson, ToJson
goal: Nat

full_name: Lean.Lsp.LineRange
code: /--
Range of lines in a document, including `start` but excluding `end`.
-/
structure LineRange where
  start : Nat
  «end» : Nat
  deriving Inhabited, Repr, FromJson, ToJson
goal: Type

full_name: Lean.Lsp.instFromJsonLineRange
code: FromJson
goal: Lean.FromJson Lean.Lsp.LineRange

full_name: Lean.Lsp.instToJsonLineRange
code: ToJson
goal: Lean.ToJson Lean.Lsp.LineRange