diff --git a/lib/next_ls/extensions/elixir_extension.ex b/lib/next_ls/extensions/elixir_extension.ex index 24531ab5..d5dd2a75 100644 --- a/lib/next_ls/extensions/elixir_extension.ex +++ b/lib/next_ls/extensions/elixir_extension.ex @@ -44,7 +44,7 @@ defmodule NextLS.ElixirExtension do severity: severity(d.severity), message: IO.iodata_to_binary(d.message), source: d.compiler_name, - range: range(d.position) + range: range(d.position, Map.get(d, :span)) }) end @@ -58,7 +58,7 @@ defmodule NextLS.ElixirExtension do defp severity(:info), do: GenLSP.Enumerations.DiagnosticSeverity.information() defp severity(:hint), do: GenLSP.Enumerations.DiagnosticSeverity.hint() - defp range({start_line, start_col, end_line, end_col}) do + defp range({start_line, start_col, end_line, end_col}, _) do %GenLSP.Structures.Range{ start: %GenLSP.Structures.Position{ line: clamp(start_line - 1), @@ -71,7 +71,20 @@ defmodule NextLS.ElixirExtension do } end - defp range({line, col}) do + defp range({startl, startc}, {endl, endc}) do + %GenLSP.Structures.Range{ + start: %GenLSP.Structures.Position{ + line: clamp(startl - 1), + character: startc - 1 + }, + end: %GenLSP.Structures.Position{ + line: clamp(endl - 1), + character: endc - 1 + } + } + end + + defp range({line, col}, nil) do %GenLSP.Structures.Range{ start: %GenLSP.Structures.Position{ line: clamp(line - 1), @@ -84,7 +97,7 @@ defmodule NextLS.ElixirExtension do } end - defp range(line) do + defp range(line, _) do %GenLSP.Structures.Range{ start: %GenLSP.Structures.Position{ line: clamp(line - 1), diff --git a/test/next_ls/diagnostics_test.exs b/test/next_ls/diagnostics_test.exs index 6a1f368d..09589e97 100644 --- a/test/next_ls/diagnostics_test.exs +++ b/test/next_ls/diagnostics_test.exs @@ -99,7 +99,7 @@ defmodule NextLS.DiagnosticsTest do "variable \"arg1\" is unused (if the variable is not meant to be used, prefix it with an underscore)", "range" => %{ "start" => %{"line" => 3, "character" => ^char}, - "end" => %{"line" => 3, "character" => 999} + "end" => %{"line" => 3, "character" => 14} } } ]