Skip to content

Commit 43fcee4

Browse files
Tim-ats-dsmorimotomlantas
authored
Implement the new codelens.forNestedBindings setting (#1990)
* Implement the new `codelens.forNestedBindings` setting. * `nested_bindings` -> `for_nested_bindings` Signed-off-by: Sora Morimoto <[email protected]> * Refactor variable name in set_configuration function for clarity Updated the parameter name from `codelens` to `codelens_for_nested_bindings` in the set_configuration functionto enhance code readability and maintain consistency with the naming convention. Signed-off-by: Sora Morimoto <[email protected]> * Update CHANGELOG.md Signed-off-by: Sora Morimoto <[email protected]> * _ Signed-off-by: Sora Morimoto <[email protected]> * Use a single naming convention for the new setting: `forNestedBindings`. * Mark the new `forNestedBindings` as optional in JSON decoding. * Fix new setting binding by adding a default value. * Apply suggestion from @mlantas Co-authored-by: Max Lantas <[email protected]> --------- Signed-off-by: Sora Morimoto <[email protected]> Co-authored-by: Sora Morimoto <[email protected]> Co-authored-by: Max Lantas <[email protected]>
1 parent c5cf073 commit 43fcee4

File tree

9 files changed

+62
-7
lines changed

9 files changed

+62
-7
lines changed

CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,12 @@
22

33
## Unreleased
44

5+
- Add `ocaml.server.codelens.forNestedBindings` setting to control whether
6+
CodeLens should be displayed for nested bindings. Defaults to `false`,
7+
showing CodeLens only for top-level bindings.
8+
- ⚠️ This is a **breaking change** for users who have already used
9+
`ocaml.server.codelens`. The existing `ocaml.server.codelens` setting has
10+
been renamed to `ocaml.server.codelens.enable`. (#1990)
511
- Add `ocaml.mlx` language support to document selector. (#1964)
612
- Enable AST editor for MLX files. (#1964)
713
- Enable switching between implementation and interface for MLX files. (#1964)

package.json

Lines changed: 6 additions & 1 deletion
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,

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_for_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_for_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+
?forNestedBindings:codelens_for_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_for_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_for_nested_bindings ~f:(fun codelens_for_nested_bindings ->
91+
t.codelens_for_nested_bindings <- codelens_for_nested_bindings);
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_for_nested_bindings:t.codelens_for_nested_bindings
94104
~extended_hover:t.extended_hover
95105
~standard_hover:t.standard_hover
96106
~dune_diagnostics:t.dune_diagnostics
@@ -268,6 +278,7 @@ end = struct
268278
send_configuration
269279
client
270280
~codelens:t.codelens
281+
~codelens_for_nested_bindings:t.codelens_for_nested_bindings
271282
~extended_hover:t.extended_hover
272283
~standard_hover:t.standard_hover
273284
~dune_diagnostics:t.dune_diagnostics
@@ -360,6 +371,7 @@ let make () =
360371
; ast_editor_state
361372
; documentation_server = None
362373
; codelens = None
374+
; codelens_for_nested_bindings = None
363375
; extended_hover = None
364376
; standard_hover = None
365377
; 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_for_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 : ?forNestedBindings: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 : ?forNestedBindings: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,11 +120,19 @@ 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"
124124
~of_json:Jsonoo.Decode.bool
125125
~to_json:Jsonoo.Encode.bool
126126
;;
127127

128+
let server_codelens_for_nested_bindings_setting =
129+
create_setting
130+
~scope:ConfigurationTarget.Workspace
131+
~key:"ocaml.server.codelens"
132+
~of_json:Jsonoo.Decode.(try_default false (field "forNestedBindings" bool))
133+
~to_json:Jsonoo.Encode.bool
134+
;;
135+
128136
let server_extendedHover_setting =
129137
create_setting
130138
~scope:ConfigurationTarget.Workspace

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_for_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_for_nested_bindings =
25+
Settings.(get server_codelens_for_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_for_nested_bindings
3034
~extended_hover
3135
~dune_diagnostics
3236
~syntax_documentation

0 commit comments

Comments
 (0)