Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,12 @@

## Unreleased

- Add `ocaml.server.codelens.forNestedBindings` setting to control whether
CodeLens should be displayed for nested bindings. Defaults to `false`,
showing CodeLens only for top-level bindings.
- ⚠️ This is a **breaking change** for users who have already used
`ocaml.server.codelens`. The existing `ocaml.server.codelens` setting has
been renamed to `ocaml.server.codelens.enable`. (#1990)
- Add `ocaml.mlx` language support to document selector. (#1964)
- Enable AST editor for MLX files. (#1964)
- Enable switching between implementation and interface for MLX files. (#1964)
Expand Down
7 changes: 6 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -333,11 +333,16 @@
"default": [],
"markdownDescription": "Extra arguments to pass to ocamllsp."
},
"ocaml.server.codelens": {
"ocaml.server.codelens.enable": {
"type": "boolean",
"default": true,
"markdownDescription": "Enable/Disable codelens"
},
"ocaml.server.codelens.forNestedBindings": {
"type": "boolean",
"default": false,
"markdownDescription": "Enable/Disable codelens for nested let bindings"
},
"ocaml.server.extendedHover": {
"type": "boolean",
"default": false,
Expand Down
14 changes: 13 additions & 1 deletion src/extension_instance.ml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ type t =
; sandbox_info : StatusBarItem.t
; ast_editor_state : Ast_editor_state.t
; mutable codelens : bool option
; mutable codelens_for_nested_bindings : bool option
; mutable extended_hover : bool option
; mutable standard_hover : bool option
; mutable dune_diagnostics : bool option
Expand All @@ -26,14 +27,19 @@ let ocaml_version_exn t = Option.value_exn t.ocaml_version

let send_configuration
~codelens
~codelens_for_nested_bindings
~extended_hover
~standard_hover
~dune_diagnostics
~syntax_documentation
client
=
let codelens =
Option.map codelens ~f:(fun enable -> Ocaml_lsp.OcamllspSettingEnable.create ~enable)
Option.map codelens ~f:(fun enable ->
Ocaml_lsp.OcamllspSettingCodeLens.create
?forNestedBindings:codelens_for_nested_bindings
~enable
())
in
let extendedHover =
Option.map extended_hover ~f:(fun enable ->
Expand Down Expand Up @@ -73,13 +79,16 @@ let send_configuration
let set_configuration
t
?codelens
?codelens_for_nested_bindings
?extended_hover
?standard_hover
?dune_diagnostics
?syntax_documentation
()
=
Option.iter codelens ~f:(fun codelens -> t.codelens <- codelens);
Option.iter codelens_for_nested_bindings ~f:(fun codelens_for_nested_bindings ->
t.codelens_for_nested_bindings <- codelens_for_nested_bindings);
Option.iter extended_hover ~f:(fun extended_hover -> t.extended_hover <- extended_hover);
Option.iter standard_hover ~f:(fun standard_hover -> t.standard_hover <- standard_hover);
Option.iter dune_diagnostics ~f:(fun dune_diagnostics ->
Expand All @@ -91,6 +100,7 @@ let set_configuration
| Some (client, (_ : Ocaml_lsp.t)) ->
send_configuration
~codelens:t.codelens
~codelens_for_nested_bindings:t.codelens_for_nested_bindings
~extended_hover:t.extended_hover
~standard_hover:t.standard_hover
~dune_diagnostics:t.dune_diagnostics
Expand Down Expand Up @@ -268,6 +278,7 @@ end = struct
send_configuration
client
~codelens:t.codelens
~codelens_for_nested_bindings:t.codelens_for_nested_bindings
~extended_hover:t.extended_hover
~standard_hover:t.standard_hover
~dune_diagnostics:t.dune_diagnostics
Expand Down Expand Up @@ -360,6 +371,7 @@ let make () =
; ast_editor_state
; documentation_server = None
; codelens = None
; codelens_for_nested_bindings = None
; extended_hover = None
; standard_hover = None
; dune_diagnostics = None
Expand Down
1 change: 1 addition & 0 deletions src/extension_instance.mli
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ val suggest_to_run_dune_pkg_lock : unit -> unit
val set_configuration
: t
-> ?codelens:bool option
-> ?codelens_for_nested_bindings:bool option
-> ?extended_hover:bool option
-> ?standard_hover:bool option
-> ?dune_diagnostics:bool option
Expand Down
14 changes: 12 additions & 2 deletions src/ocaml_lsp.ml
Original file line number Diff line number Diff line change
Expand Up @@ -10,19 +10,29 @@ module OcamllspSettingEnable = struct
val create : enable:bool -> t [@@js.builder]]
end

module OcamllspSettingCodeLens = struct
include Interface.Make ()

include
[%js:
val enable : t -> bool or_undefined [@@js.get]
val forNestedBindings : t -> bool or_undefined [@@js.get]
val create : ?forNestedBindings:bool -> enable:bool -> unit -> t [@@js.builder]]
end

module OcamllspSettings = struct
include Interface.Make ()

include
[%js:
val codelens : t -> OcamllspSettingEnable.t or_undefined [@@js.get]
val codelens : t -> OcamllspSettingCodeLens.t or_undefined [@@js.get]
val extendedHover : t -> OcamllspSettingEnable.t or_undefined [@@js.get]
val standardHover : t -> OcamllspSettingEnable.t or_undefined [@@js.get]
val duneDiagnostics : t -> OcamllspSettingEnable.t or_undefined [@@js.get]
val syntaxDocumentation : t -> OcamllspSettingEnable.t or_undefined [@@js.get]

val create
: ?codelens:OcamllspSettingEnable.t
: ?codelens:OcamllspSettingCodeLens.t
-> ?extendedHover:OcamllspSettingEnable.t
-> ?standardHover:OcamllspSettingEnable.t
-> ?duneDiagnostics:OcamllspSettingEnable.t
Expand Down
12 changes: 10 additions & 2 deletions src/ocaml_lsp.mli
Original file line number Diff line number Diff line change
Expand Up @@ -20,17 +20,25 @@ module OcamllspSettingEnable : sig
val create : enable:bool -> t
end

module OcamllspSettingCodeLens : sig
include Ojs.T

val enable : t -> bool option
val forNestedBindings : t -> bool option
val create : ?forNestedBindings:bool -> enable:bool -> unit -> t
end

module OcamllspSettings : sig
include Ojs.T

val codelens : t -> OcamllspSettingEnable.t option
val codelens : t -> OcamllspSettingCodeLens.t option
val extendedHover : t -> OcamllspSettingEnable.t option
val standardHover : t -> OcamllspSettingEnable.t option
val duneDiagnostics : t -> OcamllspSettingEnable.t option
val syntaxDocumentation : t -> OcamllspSettingEnable.t option

val create
: codelens:OcamllspSettingEnable.t option
: codelens:OcamllspSettingCodeLens.t option
-> extendedHover:OcamllspSettingEnable.t option
-> standardHover:OcamllspSettingEnable.t option
-> duneDiagnostics:OcamllspSettingEnable.t option
Expand Down
10 changes: 9 additions & 1 deletion src/settings.ml
Original file line number Diff line number Diff line change
Expand Up @@ -120,11 +120,19 @@ let server_args_setting =
let server_codelens_setting =
create_setting
~scope:ConfigurationTarget.Workspace
~key:"ocaml.server.codelens"
~key:"ocaml.server.codelens.enable"
~of_json:Jsonoo.Decode.bool
~to_json:Jsonoo.Encode.bool
;;

let server_codelens_for_nested_bindings_setting =
create_setting
~scope:ConfigurationTarget.Workspace
~key:"ocaml.server.codelens"
~of_json:Jsonoo.Decode.(try_default false (field "forNestedBindings" bool))
~to_json:Jsonoo.Encode.bool
;;

let server_extendedHover_setting =
create_setting
~scope:ConfigurationTarget.Workspace
Expand Down
1 change: 1 addition & 0 deletions src/settings.mli
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ val substitute_workspace_vars : string -> string
val server_extraEnv : unit -> string Interop.Dict.t option
val server_args_setting : string list setting
val server_codelens_setting : bool setting
val server_codelens_for_nested_bindings_setting : bool setting
val server_extendedHover_setting : bool setting
val server_duneDiagnostics_setting : bool setting
val server_syntaxDocumentation_setting : bool setting
Expand Down
4 changes: 4 additions & 0 deletions src/vscode_ocaml_platform.ml
Original file line number Diff line number Diff line change
Expand Up @@ -21,12 +21,16 @@ let notify_configuration_changes instance =
Workspace.onDidChangeConfiguration
~listener:(fun _event ->
let codelens = Settings.(get server_codelens_setting) in
let codelens_for_nested_bindings =
Settings.(get server_codelens_for_nested_bindings_setting)
in
let extended_hover = Settings.(get server_extendedHover_setting) in
let dune_diagnostics = Settings.(get server_duneDiagnostics_setting) in
let syntax_documentation = Settings.(get server_syntaxDocumentation_setting) in
Extension_instance.set_configuration
instance
~codelens
~codelens_for_nested_bindings
~extended_hover
~dune_diagnostics
~syntax_documentation
Expand Down