Skip to content

Commit c081bf9

Browse files
authored
Merge pull request #19 from elixir-lang/doorgan/gen_lsp_datastructures
Use GenLSP data structures
2 parents 5ef410d + 6813b52 commit c081bf9

File tree

401 files changed

+1402
-25214
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

401 files changed

+1402
-25214
lines changed

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
poncho_dirs = forge expert_credo proto protocol engine expert
1+
poncho_dirs = forge expert_credo engine expert
22

33
compile.all: compile.poncho
44

README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -175,23 +175,23 @@ compile_project(:other)
175175
# the other project is compiled
176176
iex(2)> complete :other, "defmo|"
177177
[
178-
#Protocol.Types.Completion.Item<[
178+
#GenLSP.Structures.CompletionItem<[
179179
detail: "",
180180
insert_text: "defmacro ${1:name}($2) do\n $0\nend\n",
181181
insert_text_format: :snippet,
182182
kind: :class,
183183
label: "defmacro (Define a macro)",
184184
sort_text: "093_defmacro (Define a macro)"
185185
]>,
186-
#Protocol.Types.Completion.Item<[
186+
#GenLSP.Structures.CompletionItem<[
187187
detail: "",
188188
insert_text: "defmacrop ${1:name}($2) do\n $0\nend\n",
189189
insert_text_format: :snippet,
190190
kind: :class,
191191
label: "defmacrop (Define a private macro)",
192192
sort_text: "094_defmacrop (Define a private macro)"
193193
]>,
194-
#Protocol.Types.Completion.Item<[
194+
#GenLSP.Structures.CompletionItem<[
195195
detail: "",
196196
insert_text: "defmodule ${1:module name} do\n $0\nend\n",
197197
insert_text_format: :snippet,

apps/engine/lib/engine/engine/code_action.ex

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -5,20 +5,13 @@ defmodule Engine.CodeAction do
55
alias Forge.Document.Changes
66
alias Forge.Document.Range
77

8+
require Logger
9+
810
defstruct [:title, :kind, :changes, :uri]
911

10-
@type code_action_kind ::
11-
:empty
12-
| :quick_fix
13-
| :refactor
14-
| :refactor_extract
15-
| :refactor_inline
16-
| :refactor_rewrite
17-
| :source
18-
| :source_organize_imports
19-
| :source_fix_all
12+
@type code_action_kind :: GenLSP.Enumerations.CodeActionKind.t()
2013

21-
@type trigger_kind :: :invoked | :automatic
14+
@type trigger_kind :: GenLSP.Enumerations.CodeActionTriggerKind.t()
2215

2316
@type t :: %__MODULE__{
2417
title: String.t(),

apps/engine/lib/engine/engine/code_action/handlers/add_alias.ex

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,11 @@
11
defmodule Engine.CodeAction.Handlers.AddAlias do
2+
alias Engine.Analyzer
3+
alias Engine.CodeAction
4+
alias Engine.CodeIntelligence.Entity
5+
alias Engine.CodeMod
6+
alias Engine.Modules
7+
alias Engine.Search.Fuzzy
8+
alias Engine.Search.Indexer.Entry
29
alias Forge.Ast
310
alias Forge.Ast.Analysis
411
alias Forge.Ast.Analysis.Alias
@@ -7,14 +14,7 @@ defmodule Engine.CodeAction.Handlers.AddAlias do
714
alias Forge.Document.Position
815
alias Forge.Document.Range
916
alias Forge.Formats
10-
11-
alias Engine.Analyzer
12-
alias Engine.CodeAction
13-
alias Engine.CodeIntelligence.Entity
14-
alias Engine.CodeMod
15-
alias Engine.Modules
16-
alias Engine.Search.Fuzzy
17-
alias Engine.Search.Indexer.Entry
17+
alias GenLSP.Enumerations.CodeActionKind
1818
alias Mix.Tasks.Namespace
1919
alias Sourceror.Zipper
2020

@@ -41,7 +41,7 @@ defmodule Engine.CodeAction.Handlers.AddAlias do
4141

4242
@impl CodeAction.Handler
4343
def kinds do
44-
[:quick_fix]
44+
[CodeActionKind.quick_fix()]
4545
end
4646

4747
@impl CodeAction.Handler
@@ -69,7 +69,7 @@ defmodule Engine.CodeAction.Handlers.AddAlias do
6969
CodeAction.new(
7070
analysis.document.uri,
7171
"alias #{Formats.module(potential_alias_module)}",
72-
:quick_fix,
72+
CodeActionKind.quick_fix(),
7373
changes
7474
)
7575
end

apps/engine/lib/engine/engine/code_action/handlers/organize_aliases.ex

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ defmodule Engine.CodeAction.Handlers.OrganizeAliases do
66
alias Forge.Document
77
alias Forge.Document.Changes
88
alias Forge.Document.Range
9+
alias GenLSP.Enumerations.CodeActionKind
910

1011
require Logger
1112

@@ -23,7 +24,15 @@ defmodule Engine.CodeAction.Handlers.OrganizeAliases do
2324
[]
2425
else
2526
changes = Changes.new(doc, edits)
26-
[CodeAction.new(doc.uri, "Organize aliases", :source_organize_imports, changes)]
27+
28+
[
29+
CodeAction.new(
30+
doc.uri,
31+
"Organize aliases",
32+
CodeActionKind.source_organize_imports(),
33+
changes
34+
)
35+
]
2736
end
2837
else
2938
_ ->
@@ -33,7 +42,7 @@ defmodule Engine.CodeAction.Handlers.OrganizeAliases do
3342

3443
@impl CodeAction.Handler
3544
def kinds do
36-
[:source, :source_organize_imports]
45+
[CodeActionKind.source(), CodeActionKind.source_organize_imports()]
3746
end
3847

3948
@impl CodeAction.Handler

apps/engine/lib/engine/engine/code_action/handlers/refactorex.ex

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
11
defmodule Engine.CodeAction.Handlers.Refactorex do
2+
alias Engine.CodeAction
3+
alias Engine.CodeMod
24
alias Forge.Document
35
alias Forge.Document.Changes
46
alias Forge.Document.Range
5-
6-
alias Engine.CodeAction
7-
alias Engine.CodeMod
8-
7+
alias GenLSP.Enumerations
98
alias Refactorex.Refactor
109

1110
@behaviour CodeAction.Handler
@@ -21,7 +20,7 @@ defmodule Engine.CodeAction.Handlers.Refactorex do
2120
CodeAction.new(
2221
doc.uri,
2322
refactoring.title,
24-
map_kind(refactoring.kind),
23+
refactoring.kind,
2524
ast_to_changes(doc, refactoring.refactored)
2625
)
2726
end)
@@ -31,10 +30,10 @@ defmodule Engine.CodeAction.Handlers.Refactorex do
3130
end
3231

3332
@impl CodeAction.Handler
34-
def kinds, do: [:refactor]
33+
def kinds, do: [Enumerations.CodeActionKind.refactor()]
3534

3635
@impl CodeAction.Handler
37-
def trigger_kind, do: :invoked
36+
def trigger_kind, do: Enumerations.CodeActionTriggerKind.invoked()
3837

3938
defp line_or_selection(_, %{start: start, end: start}), do: {:ok, start.line}
4039

@@ -44,9 +43,6 @@ defmodule Engine.CodeAction.Handlers.Refactorex do
4443
|> Sourceror.parse_string(line: start.line, column: start.character)
4544
end
4645

47-
defp map_kind("quickfix"), do: :quick_fix
48-
defp map_kind(kind), do: :"#{String.replace(kind, ".", "_")}"
49-
5046
defp ast_to_changes(doc, ast) do
5147
{formatter, opts} = CodeMod.Format.formatter_for_file(Engine.get_project(), doc.uri)
5248

apps/engine/lib/engine/engine/code_action/handlers/remove_unused_alias.ex

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ defmodule Engine.CodeAction.Handlers.RemoveUnusedAlias do
3131
alias Forge.Document.Edit
3232
alias Forge.Document.Position
3333
alias Forge.Document.Range
34+
alias GenLSP.Enumerations
3435
alias Sourceror.Zipper
3536

3637
import Record
@@ -51,7 +52,14 @@ defmodule Engine.CodeAction.Handlers.RemoveUnusedAlias do
5152
case to_edit(document, range.start, diagnostic) do
5253
{:ok, module_name, edit} ->
5354
changes = Changes.new(document, [edit])
54-
action = CodeAction.new(document.uri, "Remove alias #{module_name}", :source, changes)
55+
56+
action =
57+
CodeAction.new(
58+
document.uri,
59+
"Remove alias #{module_name}",
60+
Enumerations.CodeActionKind.source(),
61+
changes
62+
)
5563

5664
[action | acc]
5765

@@ -63,7 +71,7 @@ defmodule Engine.CodeAction.Handlers.RemoveUnusedAlias do
6371

6472
@impl CodeAction.Handler
6573
def kinds do
66-
[:source]
74+
[Enumerations.CodeActionKind.source()]
6775
end
6876

6977
@impl CodeAction.Handler

apps/engine/lib/engine/engine/code_action/handlers/replace_remote_function.ex

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
defmodule Engine.CodeAction.Handlers.ReplaceRemoteFunction do
2+
alias Engine.CodeAction
3+
alias Engine.CodeAction.Diagnostic
4+
alias Engine.Modules
25
alias Forge.Ast
36
alias Forge.Document
47
alias Forge.Document.Changes
58
alias Forge.Document.Edit
69
alias Forge.Document.Range
7-
8-
alias Engine.CodeAction
9-
alias Engine.CodeAction.Diagnostic
10-
alias Engine.Modules
10+
alias GenLSP.Enumerations.CodeActionKind
1111
alias Sourceror.Zipper
1212

1313
@behaviour CodeAction.Handler
@@ -27,7 +27,7 @@ defmodule Engine.CodeAction.Handlers.ReplaceRemoteFunction do
2727

2828
@impl CodeAction.Handler
2929
def kinds do
30-
[:quick_fix]
30+
[CodeActionKind.quick_fix()]
3131
end
3232

3333
@impl CodeAction.Handler
@@ -41,7 +41,14 @@ defmodule Engine.CodeAction.Handlers.ReplaceRemoteFunction do
4141
case apply_transform(doc, line_number, module, function, suggestion) do
4242
{:ok, edits} ->
4343
changes = Changes.new(doc, edits)
44-
code_action = CodeAction.new(doc.uri, "Rename to #{suggestion}", :quick_fix, changes)
44+
45+
code_action =
46+
CodeAction.new(
47+
doc.uri,
48+
"Rename to #{suggestion}",
49+
CodeActionKind.quick_fix(),
50+
changes
51+
)
4552

4653
[code_action | acc]
4754

apps/engine/lib/engine/engine/code_action/handlers/replace_with_underscore.ex

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ defmodule Engine.CodeAction.Handlers.ReplaceWithUnderscore do
55
alias Forge.Document
66
alias Forge.Document.Changes
77
alias Forge.Document.Range
8+
alias GenLSP.Enumerations.CodeActionKind
89
alias Sourceror.Zipper
910

1011
@behaviour CodeAction.Handler
@@ -14,7 +15,13 @@ defmodule Engine.CodeAction.Handlers.ReplaceWithUnderscore do
1415
Enum.reduce(diagnostics, [], fn %Diagnostic{} = diagnostic, acc ->
1516
with {:ok, variable_name, line_number} <- extract_variable_and_line(diagnostic),
1617
{:ok, changes} <- to_changes(doc, line_number, variable_name) do
17-
action = CodeAction.new(doc.uri, "Rename to _#{variable_name}", :quick_fix, changes)
18+
action =
19+
CodeAction.new(
20+
doc.uri,
21+
"Rename to _#{variable_name}",
22+
CodeActionKind.quick_fix(),
23+
changes
24+
)
1825

1926
[action | acc]
2027
else
@@ -26,7 +33,7 @@ defmodule Engine.CodeAction.Handlers.ReplaceWithUnderscore do
2633

2734
@impl CodeAction.Handler
2835
def kinds do
29-
[:quick_fix]
36+
[CodeActionKind.quick_fix()]
3037
end
3138

3239
@impl CodeAction.Handler

apps/engine/mix.exs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ defmodule Engine.MixProject do
4646
Mix.Dialyzer.dependency(),
4747
{:elixir_sense,
4848
github: "elixir-lsp/elixir_sense", ref: "73ce7e0d239342fb9527d7ba567203e77dbb9b25"},
49+
{:gen_lsp, "~> 0.10"},
4950
{:patch, "~> 0.15", only: [:dev, :test], optional: true, runtime: false},
5051
{:path_glob, "~> 0.2", optional: true},
5152
{:phoenix_live_view, "~> 1.0", only: [:test], optional: true, runtime: false},

0 commit comments

Comments
 (0)