diff --git a/package.json b/package.json index 3e334b788..a9b79af22 100644 --- a/package.json +++ b/package.json @@ -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, diff --git a/src-bindings/vscode_languageclient/vscode_languageclient.ml b/src-bindings/vscode_languageclient/vscode_languageclient.ml index 97b876e9a..363b53af7 100644 --- a/src-bindings/vscode_languageclient/vscode_languageclient.ml +++ b/src-bindings/vscode_languageclient/vscode_languageclient.ml @@ -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]] diff --git a/src-bindings/vscode_languageclient/vscode_languageclient.mli b/src-bindings/vscode_languageclient/vscode_languageclient.mli index 591687e13..d4cf399eb 100644 --- a/src-bindings/vscode_languageclient/vscode_languageclient.mli +++ b/src-bindings/vscode_languageclient/vscode_languageclient.mli @@ -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 diff --git a/src/settings.ml b/src/settings.ml index 17adc7be2..4a980384d 100644 --- a/src/settings.ml +++ b/src/settings.ml @@ -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 diff --git a/src/settings.mli b/src/settings.mli index 1a9cacbe8..5bd479fb4 100644 --- a/src/settings.mli +++ b/src/settings.mli @@ -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 diff --git a/src/vscode_ocaml_platform.ml b/src/vscode_ocaml_platform.ml index c6efcee95..66fe041d7 100644 --- a/src/vscode_ocaml_platform.ml +++ b/src/vscode_ocaml_platform.ml @@ -38,8 +38,18 @@ let notify_configuration_changes instance = ~f:(fun enable -> LanguageClient.OcamllspSettingEnable.create ~enable ()) in + let duneDiagnostics = + Option.map + Settings.(get server_duneDiagnostics_setting) + ~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 =