Skip to content

Commit

Permalink
refactor config defaults
Browse files Browse the repository at this point in the history
  • Loading branch information
EduardoRFS committed Jan 5, 2024
1 parent f0bb3cb commit 468e4c3
Show file tree
Hide file tree
Showing 2 changed files with 44 additions and 49 deletions.
79 changes: 37 additions & 42 deletions ocaml-lsp-server/src/config_data.ml
Original file line number Diff line number Diff line change
@@ -1,8 +1,13 @@
open Import
open Import.Json.Conv

let default_lens = false

let default_extended_hover = false

let default_dune_diagnostics = true

module Lens = struct
type t = { enable : bool [@default true] }
type t = { enable : bool [@default default_lens] }
[@@deriving_inline yojson] [@@yojson.allow_extra_fields]

let _ = fun (_ : t) -> ()
Expand Down Expand Up @@ -46,7 +51,7 @@ module Lens = struct
let enable_value = Ppx_yojson_conv_lib.( ! ) enable_field in
{ enable =
(match enable_value with
| Ppx_yojson_conv_lib.Option.None -> true
| Ppx_yojson_conv_lib.Option.None -> default_lens
| Ppx_yojson_conv_lib.Option.Some v -> v)
}))
| _ as yojson ->
Expand All @@ -71,10 +76,12 @@ module Lens = struct
let _ = yojson_of_t

[@@@end]

let default = { enable = default_lens }
end

module ExtendedHover = struct
type t = { enable : bool [@default false] }
type t = { enable : bool [@default default_extended_hover] }
[@@deriving_inline yojson] [@@yojson.allow_extra_fields]

let _ = fun (_ : t) -> ()
Expand Down Expand Up @@ -118,7 +125,7 @@ module ExtendedHover = struct
let enable_value = Ppx_yojson_conv_lib.( ! ) enable_field in
{ enable =
(match enable_value with
| Ppx_yojson_conv_lib.Option.None -> false
| Ppx_yojson_conv_lib.Option.None -> default_extended_hover
| Ppx_yojson_conv_lib.Option.Some v -> v)
}))
| _ as yojson ->
Expand All @@ -143,10 +150,12 @@ module ExtendedHover = struct
let _ = yojson_of_t

[@@@end]

let default = { enable = default_extended_hover }
end

module DuneDiagnostics = struct
type t = { enable : bool [@default true] }
type t = { enable : bool [@default default_dune_diagnostics] }
[@@deriving_inline yojson] [@@yojson.allow_extra_fields]

let _ = fun (_ : t) -> ()
Expand Down Expand Up @@ -190,7 +199,7 @@ module DuneDiagnostics = struct
let enable_value = Ppx_yojson_conv_lib.( ! ) enable_field in
{ enable =
(match enable_value with
| Ppx_yojson_conv_lib.Option.None -> true
| Ppx_yojson_conv_lib.Option.None -> default_dune_diagnostics
| Ppx_yojson_conv_lib.Option.Some v -> v)
}))
| _ as yojson ->
Expand All @@ -215,16 +224,19 @@ module DuneDiagnostics = struct
let _ = yojson_of_t

[@@@end]

let default = { enable = default_dune_diagnostics }
end

type t =
{ codelens : Lens.t Json.Nullable_option.t
[@default None] [@yojson_drop_default ( = )]
; extended_hover : ExtendedHover.t Json.Nullable_option.t
[@key "extendedHover"] [@default None] [@yojson_drop_default ( = )]
{ codelens : Lens.t [@default Lens.default] [@yojson_drop_default ( = )]
; extended_hover : ExtendedHover.t
[@key "extendedHover"]
[@default ExtendedHover.default]
[@yojson_drop_default ( = )]
; dune_diagnostics : DuneDiagnostics.t
[@key "duneDiagnostics"]
[@default DuneDiagnostics.{ enable = true }]
[@default DuneDiagnostics.default]
[@yojson_drop_default ( = )]
}
[@@deriving_inline yojson] [@@yojson.allow_extra_fields]
Expand All @@ -246,20 +258,14 @@ let t_of_yojson =
| "codelens" -> (
match Ppx_yojson_conv_lib.( ! ) codelens_field with
| Ppx_yojson_conv_lib.Option.None ->
let fvalue =
Json.Nullable_option.t_of_yojson Lens.t_of_yojson _field_yojson
in
let fvalue = Lens.t_of_yojson _field_yojson in
codelens_field := Ppx_yojson_conv_lib.Option.Some fvalue
| Ppx_yojson_conv_lib.Option.Some _ ->
duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates)
| "extendedHover" -> (
match Ppx_yojson_conv_lib.( ! ) extended_hover_field with
| Ppx_yojson_conv_lib.Option.None ->
let fvalue =
Json.Nullable_option.t_of_yojson
ExtendedHover.t_of_yojson
_field_yojson
in
let fvalue = ExtendedHover.t_of_yojson _field_yojson in
extended_hover_field := Ppx_yojson_conv_lib.Option.Some fvalue
| Ppx_yojson_conv_lib.Option.Some _ ->
duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates)
Expand Down Expand Up @@ -296,17 +302,15 @@ let t_of_yojson =
in
{ codelens =
(match codelens_value with
| Ppx_yojson_conv_lib.Option.None -> None
| Ppx_yojson_conv_lib.Option.None -> Lens.default
| Ppx_yojson_conv_lib.Option.Some v -> v)
; extended_hover =
(match extended_hover_value with
| Ppx_yojson_conv_lib.Option.None -> None
| Ppx_yojson_conv_lib.Option.None -> ExtendedHover.default
| Ppx_yojson_conv_lib.Option.Some v -> v)
; dune_diagnostics =
(match dune_diagnostics_value with
| Ppx_yojson_conv_lib.Option.None ->
let open DuneDiagnostics in
{ enable = true }
| Ppx_yojson_conv_lib.Option.None -> DuneDiagnostics.default
| Ppx_yojson_conv_lib.Option.Some v -> v)
}))
| _ as yojson ->
Expand All @@ -325,32 +329,23 @@ let yojson_of_t =
} ->
let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in
let bnds =
if
(let open DuneDiagnostics in
{ enable = true })
= v_dune_diagnostics
then bnds
if DuneDiagnostics.default = v_dune_diagnostics then bnds
else
let arg = DuneDiagnostics.yojson_of_t v_dune_diagnostics in
let bnd = ("duneDiagnostics", arg) in
bnd :: bnds
in
let bnds =
if None = v_extended_hover then bnds
if ExtendedHover.default = v_extended_hover then bnds
else
let arg =
(Json.Nullable_option.yojson_of_t ExtendedHover.yojson_of_t)
v_extended_hover
in
let arg = ExtendedHover.yojson_of_t v_extended_hover in
let bnd = ("extendedHover", arg) in
bnd :: bnds
in
let bnds =
if None = v_codelens then bnds
if Lens.default = v_codelens then bnds
else
let arg =
(Json.Nullable_option.yojson_of_t Lens.yojson_of_t) v_codelens
in
let arg = Lens.yojson_of_t v_codelens in
let bnd = ("codelens", arg) in
bnd :: bnds
in
Expand All @@ -362,7 +357,7 @@ let _ = yojson_of_t
[@@@end]

let default =
{ codelens = Some { enable = false }
; extended_hover = Some { enable = false }
; dune_diagnostics = { enable = true }
{ codelens = Lens.default
; extended_hover = ExtendedHover.default
; dune_diagnostics = DuneDiagnostics.default
}
14 changes: 7 additions & 7 deletions ocaml-lsp-server/src/ocaml_lsp_server.ml
Original file line number Diff line number Diff line change
Expand Up @@ -593,17 +593,17 @@ let on_request :
| TextDocumentColorPresentation _ -> now []
| TextDocumentHover req ->
let mode =
match state.configuration.data.extended_hover with
| Some { enable = true } -> Hover_req.Extended_variable
| Some _ | None -> Hover_req.Default
if state.configuration.data.extended_hover.enable then
Hover_req.Extended_variable
else Hover_req.Default
in
later (fun (_ : State.t) () -> Hover_req.handle rpc req mode) ()
| TextDocumentReferences req -> later references req
| TextDocumentCodeLensResolve codeLens -> now codeLens
| TextDocumentCodeLens req -> (
match state.configuration.data.codelens with
| Some { enable = true } -> later text_document_lens req
| _ -> now [])
| TextDocumentCodeLens req ->
if state.configuration.data.codelens.enable then
later text_document_lens req
else now []
| TextDocumentHighlight req -> later highlight req
| DocumentSymbol { textDocument = { uri }; _ } -> later document_symbol uri
| TextDocumentDeclaration { textDocument = { uri }; position } ->
Expand Down

0 comments on commit 468e4c3

Please sign in to comment.