Skip to content

Commit

Permalink
Add ocaml.server.duneDiagnostics to disable dune diagnostics report…
Browse files Browse the repository at this point in the history
…ing (#1320)
  • Loading branch information
EduardoRFS authored Jan 7, 2024
1 parent 4e5769d commit b9a8764
Show file tree
Hide file tree
Showing 9 changed files with 50 additions and 7 deletions.
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@

- Fix server settings missing on LSP startup (#1321)

- Add config to disabling dune diagnostics (#1320)

## 1.14.2

- Add `1.17.0` to the list of known versions of ocamllsp (#1326)
Expand Down
5 changes: 5 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -272,6 +272,11 @@
"default": false,
"markdownDescription": "Enable/Disable extended hover"
},
"ocaml.server.duneDiagnostics": {
"type": "boolean",
"default": true,
"markdownDescription": "Enable/Disable dune diagnostics"
},
"ocaml.dune.autoDetect": {
"type": "boolean",
"default": true,
Expand Down
3 changes: 3 additions & 0 deletions src-bindings/vscode_languageclient/vscode_languageclient.ml
Original file line number Diff line number Diff line change
Expand Up @@ -97,9 +97,12 @@ module OcamllspSettings = struct

val extendedHover : t -> OcamllspSettingEnable.t or_undefined [@@js.get]

val duneDiagnostics : t -> OcamllspSettingEnable.t or_undefined [@@js.get]

val create :
?codelens:OcamllspSettingEnable.t
-> ?extendedHover:OcamllspSettingEnable.t
-> ?duneDiagnostics:OcamllspSettingEnable.t
-> unit
-> t
[@@js.builder]]
Expand Down
3 changes: 3 additions & 0 deletions src-bindings/vscode_languageclient/vscode_languageclient.mli
Original file line number Diff line number Diff line change
Expand Up @@ -78,9 +78,12 @@ module OcamllspSettings : sig

val extendedHover : t -> OcamllspSettingEnable.t option

val duneDiagnostics : t -> OcamllspSettingEnable.t option

val create :
?codelens:OcamllspSettingEnable.t
-> ?extendedHover:OcamllspSettingEnable.t
-> ?duneDiagnostics:OcamllspSettingEnable.t
-> unit
-> t
end
Expand Down
22 changes: 17 additions & 5 deletions src/extension_instance.ml
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ type t =
; ast_editor_state : Ast_editor_state.t
; mutable codelens : bool option
; mutable extended_hover : bool option
; mutable dune_diagnostics : bool option
}

let sandbox t = t.sandbox
Expand All @@ -25,7 +26,7 @@ let lsp_client t = t.lsp_client

let ocaml_version_exn t = Option.value_exn t.ocaml_version

let send_configuration ?codelens ?extended_hover client =
let send_configuration ?codelens ?extended_hover ?dune_diagnostics client =
let codelens =
Option.map codelens ~f:(fun enable ->
LanguageClient.OcamllspSettingEnable.create ~enable ())
Expand All @@ -34,8 +35,16 @@ let send_configuration ?codelens ?extended_hover client =
Option.map extended_hover ~f:(fun enable ->
LanguageClient.OcamllspSettingEnable.create ~enable ())
in
let duneDiagnostics =
Option.map dune_diagnostics ~f:(fun enable ->
LanguageClient.OcamllspSettingEnable.create ~enable ())
in
let settings =
LanguageClient.OcamllspSettings.create ?codelens ?extendedHover ()
LanguageClient.OcamllspSettings.create
?codelens
?extendedHover
?duneDiagnostics
()
in
let payload =
let settings = LanguageClient.DidChangeConfiguration.create ~settings () in
Expand All @@ -46,13 +55,14 @@ let send_configuration ?codelens ?extended_hover client =
"workspace/didChangeConfiguration"
payload

let set_configuration t ~codelens ~extended_hover =
let set_configuration t ~codelens ~extended_hover ~dune_diagnostics =
t.codelens <- codelens;
t.extended_hover <- extended_hover;
t.dune_diagnostics <- dune_diagnostics;
match t.lsp_client with
| None -> ()
| Some (client, (_ : Ocaml_lsp.t)) ->
send_configuration ?codelens ?extended_hover client
send_configuration ?codelens ?extended_hover ?dune_diagnostics client

let stop_server t =
match t.lsp_client with
Expand Down Expand Up @@ -167,7 +177,8 @@ end = struct
send_configuration
client
?codelens:t.codelens
?extended_hover:t.extended_hover;
?extended_hover:t.extended_hover
?dune_diagnostics:t.dune_diagnostics;
Ok ()
in
match res with
Expand Down Expand Up @@ -239,6 +250,7 @@ let make () =
; documentation_server = None
; codelens = None
; extended_hover = None
; dune_diagnostics = None
}

let set_documentation_context ~running =
Expand Down
6 changes: 5 additions & 1 deletion src/extension_instance.mli
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,11 @@ val ocaml_version_exn : t -> Ocaml_version.t
val start_language_server : t -> unit Promise.t

val set_configuration :
t -> codelens:bool option -> extended_hover:bool option -> unit
t
-> codelens:bool option
-> extended_hover:bool option
-> dune_diagnostics:bool option
-> unit

val open_terminal : Sandbox.t -> unit

Expand Down
7 changes: 7 additions & 0 deletions src/settings.ml
Original file line number Diff line number Diff line change
Expand Up @@ -127,3 +127,10 @@ let server_extendedHover_setting =
~key:"ocaml.server.extendedHover"
~of_json:Jsonoo.Decode.bool
~to_json:Jsonoo.Encode.bool

let server_duneDiagnostics_setting =
create_setting
~scope:ConfigurationTarget.Workspace
~key:"ocaml.server.duneDiagnostics"
~of_json:Jsonoo.Decode.bool
~to_json:Jsonoo.Encode.bool
2 changes: 2 additions & 0 deletions src/settings.mli
Original file line number Diff line number Diff line change
Expand Up @@ -41,3 +41,5 @@ val server_args_setting : string list setting
val server_codelens_setting : bool setting

val server_extendedHover_setting : bool setting

val server_duneDiagnostics_setting : bool setting
7 changes: 6 additions & 1 deletion src/vscode_ocaml_platform.ml
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,12 @@ let notify_configuration_changes instance =
~listener:(fun _event ->
let codelens = Settings.(get server_codelens_setting) in
let extended_hover = Settings.(get server_extendedHover_setting) in
Extension_instance.set_configuration instance ~codelens ~extended_hover)
let dune_diagnostics = Settings.(get server_duneDiagnostics_setting) in
Extension_instance.set_configuration
instance
~codelens
~extended_hover
~dune_diagnostics)
()

let activate (extension : ExtensionContext.t) =
Expand Down

0 comments on commit b9a8764

Please sign in to comment.