Skip to content

Commit

Permalink
fix(ocamllsp): Respect codeActionLiteralSupport capability (#1046)
Browse files Browse the repository at this point in the history
* Handle codeActionLiteralSupport capability
  • Loading branch information
3Rafal authored Mar 8, 2023
1 parent 527e4f2 commit 67f8860
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 16 deletions.
3 changes: 3 additions & 0 deletions CHANGES.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,10 @@

## Fixes

- Respect codeActionLiteralSupport capability (#1046)

- Fix a document syncing issue when utf-16 is the position encoding (#1004)

- Disable "Type-annotate" action for code that is already annotated.
([#1037](https://github.com/ocaml/ocaml-lsp/pull/1037)), fixes
[#1036](https://github.com/ocaml/ocaml-lsp/issues/1036)
Expand Down
33 changes: 18 additions & 15 deletions ocaml-lsp-server/src/ocaml_lsp_server.ml
Original file line number Diff line number Diff line change
Expand Up @@ -30,21 +30,24 @@ let view_metrics server =
let initialize_info (client_capabilities : ClientCapabilities.t) :
InitializeResult.t =
let codeActionProvider =
let codeActionKinds =
Action_inferred_intf.kind :: Action_destruct.kind
:: List.map
~f:(fun (c : Code_action.t) -> c.kind)
[ Action_type_annotate.t
; Action_remove_type_annotation.t
; Action_construct.t
; Action_refactor_open.unqualify
; Action_refactor_open.qualify
; Action_add_rec.t
; Action_inline.t
]
|> List.sort_uniq ~compare:Poly.compare
in
`CodeActionOptions (CodeActionOptions.create ~codeActionKinds ())
match client_capabilities.textDocument with
| Some { codeAction = Some { codeActionLiteralSupport = Some _; _ }; _ } ->
let codeActionKinds =
Action_inferred_intf.kind :: Action_destruct.kind
:: List.map
~f:(fun (c : Code_action.t) -> c.kind)
[ Action_type_annotate.t
; Action_remove_type_annotation.t
; Action_construct.t
; Action_refactor_open.unqualify
; Action_refactor_open.qualify
; Action_add_rec.t
; Action_inline.t
]
|> List.sort_uniq ~compare:Poly.compare
in
`CodeActionOptions (CodeActionOptions.create ~codeActionKinds ())
| _ -> `Bool true
in
let textDocumentSync =
`TextDocumentSyncOptions
Expand Down
15 changes: 14 additions & 1 deletion ocaml-lsp-server/test/e2e-new/start_stop.ml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,20 @@ let%expect_test "start/stop" =
in
WindowClientCapabilities.create ~showDocument ()
in
ClientCapabilities.create ~window ()
let textDocument =
let codeAction =
let codeActionLiteralSupport =
let codeActionKind =
CodeActionClientCapabilities.create_codeActionKind ~valueSet:[]
in
CodeActionClientCapabilities.create_codeActionLiteralSupport
~codeActionKind
in
CodeActionClientCapabilities.create ~codeActionLiteralSupport ()
in
TextDocumentClientCapabilities.create ~codeAction ()
in
ClientCapabilities.create ~window ~textDocument ()
in
Client.start client (InitializeParams.create ~capabilities ())
in
Expand Down

0 comments on commit 67f8860

Please sign in to comment.