package linol

  1. Overview
  2. Docs

An easily overloadable class. Pick the methods you want to support. The user must provide at least the callbacks for document lifecycle: open, close, update. The most basic LSP server should check documents when they're updated and report diagnostics back to the editor.

inherit base_server
val mutable _quit : bool
val docs : (Lsp.Types.DocumentUri.t, doc_state) Stdlib.Hashtbl.t
method must_quit : server -> bool
method find_doc : 'b -> Lsp.Types.DocumentUri.t -> doc_state option

Find current state of the given document, if present.

method on_request_unhandled : 'b -> 'r. notify_back:notify_back -> id:Req_id.t -> 'r Lsp.Client_request.t -> 'r IO.t

Override to process other requests

method config_sync_opts : 'b -> Lsp.Types.TextDocumentSyncOptions.t

Parameter for how to synchronize content with the editor

method config_code_lens_options : 'b -> Lsp.Types.CodeLensOptions.t option
  • since 0.3
method config_definition : 'b -> [ `Bool of bool | `DefinitionOptions of Lsp.Types.DefinitionOptions.t ] option
  • since 0.3
method config_hover : 'b -> [ `Bool of bool | `HoverOptions of Lsp.Types.HoverOptions.t ] option
  • since 0.3
method config_symbol : 'b -> [ `Bool of bool | `DocumentSymbolOptions of Lsp.Types.DocumentSymbolOptions.t ] option
  • since 0.3
method config_code_action_provider : 'b -> [ `Bool of bool | `CodeActionOptions of Lsp.Types.CodeActionOptions.t ]
  • since 0.3
method config_modify_capabilities : 'b -> Lsp.Types.ServerCapabilities.t -> Lsp.Types.ServerCapabilities.t

Modify capabilities before sending them back to the client. By default we just return them unmodified.

  • since 0.3
method config_list_commands : 'b -> string list

List of commands available

method on_req_initialize : 'b -> notify_back:notify_back -> Lsp.Types.InitializeParams.t -> Lsp.Types.InitializeResult.t IO.t
method on_req_hover : 'b -> notify_back:notify_back -> id:Req_id.t -> uri:Lsp__Types.DocumentUri.t -> pos:Lsp__Types.Position.t -> doc_state -> Lsp.Types.Hover.t option IO.t

Called when the user hovers on some identifier in the document

method on_req_completion : 'b -> notify_back:notify_back -> id:Req_id.t -> uri:Lsp__Types.DocumentUri.t -> pos:Lsp__Types.Position.t -> ctx:Lsp__Types.CompletionContext.t option -> doc_state -> [ `CompletionList of Lsp__.Types.CompletionList.t | `List of Lsp__.Types.CompletionItem.t list ] option IO.t

Called when the user requests completion in the document

method on_req_definition : 'b -> notify_back:notify_back -> id:Req_id.t -> uri:Lsp__Types.DocumentUri.t -> pos:Lsp__Types.Position.t -> doc_state -> Lsp.Types.Locations.t option IO.t

Called when the user wants to jump-to-definition

method on_req_code_lens : 'b -> notify_back:notify_back -> id:Req_id.t -> uri:Lsp__Types.DocumentUri.t -> doc_state -> Lsp.Types.CodeLens.t list IO.t

List code lenses for the given document

  • since 0.3
method on_req_code_lens_resolve : 'b -> notify_back:notify_back -> id:Req_id.t -> Lsp.Types.CodeLens.t -> Lsp.Types.CodeLens.t IO.t

Code lens resolution, must return a code lens with non null "command"

  • since 0.3
method on_req_code_action : 'b -> notify_back:notify_back -> id:Req_id.t -> Lsp.Types.CodeActionParams.t -> Lsp.Types.CodeActionResult.t IO.t

Code action.

  • since 0.3
method on_req_execute_command : 'b -> notify_back:notify_back -> id:Req_id.t -> string -> Yojson.Safe.t list option -> Yojson.Safe.t IO.t

Execute a command with given arguments.

  • since 0.3
method on_req_symbol : 'b -> notify_back:notify_back -> id:Req_id.t -> uri:Lsp__Types.DocumentUri.t -> unit -> [ `DocumentSymbol of Lsp__.Types.DocumentSymbol.t list | `SymbolInformation of Lsp__.Types.SymbolInformation.t list ] option IO.t

List symbols in this document.

  • since 0.3
method on_request : 'b -> 'a. notify_back:(Lsp.Server_notification.t -> unit IO.t) -> id:Req_id.t -> 'a Lsp.Client_request.t -> 'a IO.t
method virtual on_notif_doc_did_open : notify_back:notify_back -> Lsp.Types.TextDocumentItem.t -> content:string -> unit IO.t

Called when a document is opened

method virtual on_notif_doc_did_close : notify_back:notify_back -> Lsp.Types.TextDocumentIdentifier.t -> unit IO.t
method virtual on_notif_doc_did_change : notify_back:notify_back -> Lsp.Types.VersionedTextDocumentIdentifier.t -> Lsp.Types.TextDocumentContentChangeEvent.t list -> old_content:string -> new_content:string -> unit IO.t

Called when the document changes.

method on_notification_unhandled : 'b -> notify_back:notify_back -> Lsp.Client_notification.t -> unit IO.t

Override to handle unprocessed notifications

method on_notification : 'b -> notify_back:(Lsp.Server_notification.t -> unit IO.t) -> Lsp.Client_notification.t -> unit IO.t