From 1f02c4bfd8234106c415934384aa94f28ffae4fa Mon Sep 17 00:00:00 2001 From: Roig Date: Thu, 2 Sep 2021 09:58:04 -0400 Subject: [PATCH] List all workspace symbols when an empty query comes in According to the specification the workspace symbols provider should accept an empty query string and return all the symbols in that case https://microsoft.github.io/language-server-protocol/specification#workspace_symbol ``` /** * The parameters of a Workspace Symbol Request. */ interface WorkspaceSymbolParams extends WorkDoneProgressParams, PartialResultParams { /** * A query string to filter symbols by. Clients may send an empty * string here to request all symbols. */ query: string; } ``` --- .../language_server/providers/workspace_symbols.ex | 14 +++++++------- .../test/providers/workspace_symbols_test.exs | 4 +++- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/apps/language_server/lib/language_server/providers/workspace_symbols.ex b/apps/language_server/lib/language_server/providers/workspace_symbols.ex index ef28ff277..507c1c4be 100644 --- a/apps/language_server/lib/language_server/providers/workspace_symbols.ex +++ b/apps/language_server/lib/language_server/providers/workspace_symbols.ex @@ -348,13 +348,8 @@ defmodule ElixirLS.LanguageServer.Providers.WorkspaceSymbols do end defp query(query, server) do - case String.trim(query) do - "" -> - [] - - trimmed -> - GenServer.call(server, {:query, trimmed}) - end + trimmed = String.trim(query) + GenServer.call(server, {:query, trimmed}) end defp index(module_paths) do @@ -437,6 +432,11 @@ defmodule ElixirLS.LanguageServer.Providers.WorkspaceSymbols do :ok end + @spec get_results(state_t, String.t()) :: [symbol_information_t] + defp get_results(state, "") do + (state.modules ++ state.functions ++ state.types ++ state.callbacks) + end + @spec get_results(state_t, String.t()) :: [symbol_information_t] defp get_results(state, query) do query_downcase = String.downcase(query) diff --git a/apps/language_server/test/providers/workspace_symbols_test.exs b/apps/language_server/test/providers/workspace_symbols_test.exs index dcf86a3af..b581f031f 100644 --- a/apps/language_server/test/providers/workspace_symbols_test.exs +++ b/apps/language_server/test/providers/workspace_symbols_test.exs @@ -35,7 +35,9 @@ defmodule ElixirLS.LanguageServer.Providers.WorkspaceSymbolsTest do end test "empty query", %{server: server} do - assert {:ok, []} == WorkspaceSymbols.symbols("", server) + {status, all_symbols} = WorkspaceSymbols.symbols("", server) + assert :ok == status + assert 11 == length(all_symbols) assert_receive %{ "method" => "window/logMessage",