Skip to content

Commit 67f8860

Browse files
authored
fix(ocamllsp): Respect codeActionLiteralSupport capability (#1046)
* Handle codeActionLiteralSupport capability
1 parent 527e4f2 commit 67f8860

File tree

3 files changed

+35
-16
lines changed

3 files changed

+35
-16
lines changed

CHANGES.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,10 @@
22

33
## Fixes
44

5+
- Respect codeActionLiteralSupport capability (#1046)
6+
57
- Fix a document syncing issue when utf-16 is the position encoding (#1004)
8+
69
- Disable "Type-annotate" action for code that is already annotated.
710
([#1037](https://github.com/ocaml/ocaml-lsp/pull/1037)), fixes
811
[#1036](https://github.com/ocaml/ocaml-lsp/issues/1036)

ocaml-lsp-server/src/ocaml_lsp_server.ml

Lines changed: 18 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -30,21 +30,24 @@ let view_metrics server =
3030
let initialize_info (client_capabilities : ClientCapabilities.t) :
3131
InitializeResult.t =
3232
let codeActionProvider =
33-
let codeActionKinds =
34-
Action_inferred_intf.kind :: Action_destruct.kind
35-
:: List.map
36-
~f:(fun (c : Code_action.t) -> c.kind)
37-
[ Action_type_annotate.t
38-
; Action_remove_type_annotation.t
39-
; Action_construct.t
40-
; Action_refactor_open.unqualify
41-
; Action_refactor_open.qualify
42-
; Action_add_rec.t
43-
; Action_inline.t
44-
]
45-
|> List.sort_uniq ~compare:Poly.compare
46-
in
47-
`CodeActionOptions (CodeActionOptions.create ~codeActionKinds ())
33+
match client_capabilities.textDocument with
34+
| Some { codeAction = Some { codeActionLiteralSupport = Some _; _ }; _ } ->
35+
let codeActionKinds =
36+
Action_inferred_intf.kind :: Action_destruct.kind
37+
:: List.map
38+
~f:(fun (c : Code_action.t) -> c.kind)
39+
[ Action_type_annotate.t
40+
; Action_remove_type_annotation.t
41+
; Action_construct.t
42+
; Action_refactor_open.unqualify
43+
; Action_refactor_open.qualify
44+
; Action_add_rec.t
45+
; Action_inline.t
46+
]
47+
|> List.sort_uniq ~compare:Poly.compare
48+
in
49+
`CodeActionOptions (CodeActionOptions.create ~codeActionKinds ())
50+
| _ -> `Bool true
4851
in
4952
let textDocumentSync =
5053
`TextDocumentSyncOptions

ocaml-lsp-server/test/e2e-new/start_stop.ml

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,20 @@ let%expect_test "start/stop" =
1616
in
1717
WindowClientCapabilities.create ~showDocument ()
1818
in
19-
ClientCapabilities.create ~window ()
19+
let textDocument =
20+
let codeAction =
21+
let codeActionLiteralSupport =
22+
let codeActionKind =
23+
CodeActionClientCapabilities.create_codeActionKind ~valueSet:[]
24+
in
25+
CodeActionClientCapabilities.create_codeActionLiteralSupport
26+
~codeActionKind
27+
in
28+
CodeActionClientCapabilities.create ~codeActionLiteralSupport ()
29+
in
30+
TextDocumentClientCapabilities.create ~codeAction ()
31+
in
32+
ClientCapabilities.create ~window ~textDocument ()
2033
in
2134
Client.start client (InitializeParams.create ~capabilities ())
2235
in

0 commit comments

Comments
 (0)