Skip to content

Commit e192973

Browse files
committed
Implement the new codelens.forNestedBindings setting.
1 parent 30fea5d commit e192973

File tree

8 files changed

+57
-8
lines changed

8 files changed

+57
-8
lines changed

package.json

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -333,11 +333,16 @@
333333
"default": [],
334334
"markdownDescription": "Extra arguments to pass to ocamllsp."
335335
},
336-
"ocaml.server.codelens": {
336+
"ocaml.server.codelens.enable": {
337337
"type": "boolean",
338338
"default": true,
339339
"markdownDescription": "Enable/Disable codelens"
340340
},
341+
"ocaml.server.codelens.forNestedBindings": {
342+
"type": "boolean",
343+
"default": false,
344+
"markdownDescription": "Enable/Disable codelens for nested let bindings"
345+
},
341346
"ocaml.server.extendedHover": {
342347
"type": "boolean",
343348
"default": false,
@@ -1372,4 +1377,4 @@
13721377
"color": "#f29100",
13731378
"theme": "light"
13741379
}
1375-
}
1380+
}

src/extension_instance.ml

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ type t =
1212
; sandbox_info : StatusBarItem.t
1313
; ast_editor_state : Ast_editor_state.t
1414
; mutable codelens : bool option
15+
; mutable codelens_nested_bindings : bool option
1516
; mutable extended_hover : bool option
1617
; mutable standard_hover : bool option
1718
; mutable dune_diagnostics : bool option
@@ -26,14 +27,19 @@ let ocaml_version_exn t = Option.value_exn t.ocaml_version
2627

2728
let send_configuration
2829
~codelens
30+
~codelens_nested_bindings
2931
~extended_hover
3032
~standard_hover
3133
~dune_diagnostics
3234
~syntax_documentation
3335
client
3436
=
3537
let codelens =
36-
Option.map codelens ~f:(fun enable -> Ocaml_lsp.OcamllspSettingEnable.create ~enable)
38+
Option.map codelens ~f:(fun enable ->
39+
Ocaml_lsp.OcamllspSettingCodeLens.create
40+
?for_nested_bindings:codelens_nested_bindings
41+
~enable
42+
())
3743
in
3844
let extendedHover =
3945
Option.map extended_hover ~f:(fun enable ->
@@ -73,13 +79,16 @@ let send_configuration
7379
let set_configuration
7480
t
7581
?codelens
82+
?codelens_nested_bindings
7683
?extended_hover
7784
?standard_hover
7885
?dune_diagnostics
7986
?syntax_documentation
8087
()
8188
=
8289
Option.iter codelens ~f:(fun codelens -> t.codelens <- codelens);
90+
Option.iter codelens_nested_bindings ~f:(fun codelens ->
91+
t.codelens_nested_bindings <- codelens);
8392
Option.iter extended_hover ~f:(fun extended_hover -> t.extended_hover <- extended_hover);
8493
Option.iter standard_hover ~f:(fun standard_hover -> t.standard_hover <- standard_hover);
8594
Option.iter dune_diagnostics ~f:(fun dune_diagnostics ->
@@ -91,6 +100,7 @@ let set_configuration
91100
| Some (client, (_ : Ocaml_lsp.t)) ->
92101
send_configuration
93102
~codelens:t.codelens
103+
~codelens_nested_bindings:t.codelens_nested_bindings
94104
~extended_hover:t.extended_hover
95105
~standard_hover:t.standard_hover
96106
~dune_diagnostics:t.dune_diagnostics
@@ -267,6 +277,7 @@ end = struct
267277
send_configuration
268278
client
269279
~codelens:t.codelens
280+
~codelens_nested_bindings:t.codelens_nested_bindings
270281
~extended_hover:t.extended_hover
271282
~standard_hover:t.standard_hover
272283
~dune_diagnostics:t.dune_diagnostics
@@ -359,6 +370,7 @@ let make () =
359370
; ast_editor_state
360371
; documentation_server = None
361372
; codelens = None
373+
; codelens_nested_bindings = None
362374
; extended_hover = None
363375
; standard_hover = None
364376
; dune_diagnostics = None

src/extension_instance.mli

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ val suggest_to_run_dune_pkg_lock : unit -> unit
2525
val set_configuration
2626
: t
2727
-> ?codelens:bool option
28+
-> ?codelens_nested_bindings:bool option
2829
-> ?extended_hover:bool option
2930
-> ?standard_hover:bool option
3031
-> ?dune_diagnostics:bool option

src/ocaml_lsp.ml

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,19 +10,29 @@ module OcamllspSettingEnable = struct
1010
val create : enable:bool -> t [@@js.builder]]
1111
end
1212

13+
module OcamllspSettingCodeLens = struct
14+
include Interface.Make ()
15+
16+
include
17+
[%js:
18+
val enable : t -> bool or_undefined [@@js.get]
19+
val forNestedBindings : t -> bool or_undefined [@@js.get]
20+
val create : ?for_nested_bindings:bool -> enable:bool -> unit -> t [@@js.builder]]
21+
end
22+
1323
module OcamllspSettings = struct
1424
include Interface.Make ()
1525

1626
include
1727
[%js:
18-
val codelens : t -> OcamllspSettingEnable.t or_undefined [@@js.get]
28+
val codelens : t -> OcamllspSettingCodeLens.t or_undefined [@@js.get]
1929
val extendedHover : t -> OcamllspSettingEnable.t or_undefined [@@js.get]
2030
val standardHover : t -> OcamllspSettingEnable.t or_undefined [@@js.get]
2131
val duneDiagnostics : t -> OcamllspSettingEnable.t or_undefined [@@js.get]
2232
val syntaxDocumentation : t -> OcamllspSettingEnable.t or_undefined [@@js.get]
2333

2434
val create
25-
: ?codelens:OcamllspSettingEnable.t
35+
: ?codelens:OcamllspSettingCodeLens.t
2636
-> ?extendedHover:OcamllspSettingEnable.t
2737
-> ?standardHover:OcamllspSettingEnable.t
2838
-> ?duneDiagnostics:OcamllspSettingEnable.t

src/ocaml_lsp.mli

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,17 +20,25 @@ module OcamllspSettingEnable : sig
2020
val create : enable:bool -> t
2121
end
2222

23+
module OcamllspSettingCodeLens : sig
24+
include Ojs.T
25+
26+
val enable : t -> bool option
27+
val forNestedBindings : t -> bool option
28+
val create : ?for_nested_bindings:bool -> enable:bool -> unit -> t
29+
end
30+
2331
module OcamllspSettings : sig
2432
include Ojs.T
2533

26-
val codelens : t -> OcamllspSettingEnable.t option
34+
val codelens : t -> OcamllspSettingCodeLens.t option
2735
val extendedHover : t -> OcamllspSettingEnable.t option
2836
val standardHover : t -> OcamllspSettingEnable.t option
2937
val duneDiagnostics : t -> OcamllspSettingEnable.t option
3038
val syntaxDocumentation : t -> OcamllspSettingEnable.t option
3139

3240
val create
33-
: codelens:OcamllspSettingEnable.t option
41+
: codelens:OcamllspSettingCodeLens.t option
3442
-> extendedHover:OcamllspSettingEnable.t option
3543
-> standardHover:OcamllspSettingEnable.t option
3644
-> duneDiagnostics:OcamllspSettingEnable.t option

src/settings.ml

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,15 @@ let server_args_setting =
120120
let server_codelens_setting =
121121
create_setting
122122
~scope:ConfigurationTarget.Workspace
123-
~key:"ocaml.server.codelens"
123+
~key:"ocaml.server.codelens.enable"
124+
~of_json:Jsonoo.Decode.bool
125+
~to_json:Jsonoo.Encode.bool
126+
;;
127+
128+
let server_codelens_nested_bindings_setting =
129+
create_setting
130+
~scope:ConfigurationTarget.Workspace
131+
~key:"ocaml.server.codelens.forNestedBindings"
124132
~of_json:Jsonoo.Decode.bool
125133
~to_json:Jsonoo.Encode.bool
126134
;;

src/settings.mli

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ val substitute_workspace_vars : string -> string
3636
val server_extraEnv : unit -> string Interop.Dict.t option
3737
val server_args_setting : string list setting
3838
val server_codelens_setting : bool setting
39+
val server_codelens_nested_bindings_setting : bool setting
3940
val server_extendedHover_setting : bool setting
4041
val server_duneDiagnostics_setting : bool setting
4142
val server_syntaxDocumentation_setting : bool setting

src/vscode_ocaml_platform.ml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,16 @@ let notify_configuration_changes instance =
2121
Workspace.onDidChangeConfiguration
2222
~listener:(fun _event ->
2323
let codelens = Settings.(get server_codelens_setting) in
24+
let codelens_nested_bindings =
25+
Settings.(get server_codelens_nested_bindings_setting)
26+
in
2427
let extended_hover = Settings.(get server_extendedHover_setting) in
2528
let dune_diagnostics = Settings.(get server_duneDiagnostics_setting) in
2629
let syntax_documentation = Settings.(get server_syntaxDocumentation_setting) in
2730
Extension_instance.set_configuration
2831
instance
2932
~codelens
33+
~codelens_nested_bindings
3034
~extended_hover
3135
~dune_diagnostics
3236
~syntax_documentation

0 commit comments

Comments
 (0)