diff --git a/apps/els_lsp/src/els_dt_references.erl b/apps/els_lsp/src/els_dt_references.erl index 40f89bddc..6a6dc8ff9 100644 --- a/apps/els_lsp/src/els_dt_references.erl +++ b/apps/els_lsp/src/els_dt_references.erl @@ -61,7 +61,8 @@ | record | include | include_lib - | behaviour. + | behaviour + | atom. -export_type([poi_category/0]). %%============================================================================== @@ -185,4 +186,6 @@ kind_to_category(Kind) when Kind =:= include -> kind_to_category(Kind) when Kind =:= include_lib -> include_lib; kind_to_category(Kind) when Kind =:= behaviour -> - behaviour. + behaviour; +kind_to_category(Kind) when Kind =:= atom -> + atom. diff --git a/apps/els_lsp/src/els_indexing.erl b/apps/els_lsp/src/els_indexing.erl index 8a9927076..aaba0b60b 100644 --- a/apps/els_lsp/src/els_indexing.erl +++ b/apps/els_lsp/src/els_indexing.erl @@ -140,7 +140,9 @@ index_references(Id, Uri, POIs, Version) -> %% Behaviour behaviour, %% Type - type_application + type_application, + %% Atom + atom ], [ index_reference(Id, Uri, POI, Version) diff --git a/apps/els_lsp/src/els_references_provider.erl b/apps/els_lsp/src/els_references_provider.erl index c131d7929..9f2155727 100644 --- a/apps/els_lsp/src/els_references_provider.erl +++ b/apps/els_lsp/src/els_references_provider.erl @@ -142,7 +142,8 @@ find_references(Uri, #{kind := module}) -> Refs = find_references_to_module(Uri), [location(U, R) || #{uri := U, range := R} <- Refs]; find_references(_Uri, #{kind := Kind, id := Name}) when - Kind =:= behaviour + Kind =:= behaviour; + Kind =:= atom -> find_references_for_id(Kind, Name); find_references(_Uri, _POI) -> diff --git a/apps/els_lsp/src/els_text_search.erl b/apps/els_lsp/src/els_text_search.erl index 2e5b0a886..6a2258583 100644 --- a/apps/els_lsp/src/els_text_search.erl +++ b/apps/els_lsp/src/els_text_search.erl @@ -39,6 +39,8 @@ extract_pattern({include, Id}) -> extract_pattern({include_lib, Id}) -> include_id(Id); extract_pattern({behaviour, Name}) -> + Name; +extract_pattern({atom, Name}) -> Name. -spec include_id(string()) -> string(). diff --git a/apps/els_lsp/test/els_references_SUITE.erl b/apps/els_lsp/test/els_references_SUITE.erl index 065561bdc..eaa3fc692 100644 --- a/apps/els_lsp/test/els_references_SUITE.erl +++ b/apps/els_lsp/test/els_references_SUITE.erl @@ -32,6 +32,7 @@ type_local/1, type_remote/1, type_included/1, + atom/1, refresh_after_watched_file_deleted/1, refresh_after_watched_file_changed/1, refresh_after_watched_file_added/1, @@ -555,6 +556,32 @@ type_included(Config) -> assert_locations(Locations, ExpectedLocations), ok. +-spec atom(config()) -> ok. +atom(Config) -> + Uri = ?config(code_navigation_uri, Config), + %% References for the `code_navigation_extra' atom + #{result := Locations} = els_client:references(Uri, 85, 5), + ExpectedLocations = [ + #{ + uri => Uri, + range => #{from => {85, 3}, to => {85, 24}} + }, + #{ + uri => Uri, + range => #{from => {86, 14}, to => {86, 35}} + }, + #{ + uri => Uri, + range => #{from => {132, 36}, to => {132, 57}} + }, + #{ + uri => Uri, + range => #{from => {134, 35}, to => {134, 56}} + } + ], + assert_locations(Locations, ExpectedLocations), + ok. + -spec refresh_after_watched_file_deleted(config()) -> ok. refresh_after_watched_file_deleted(Config) -> %% Before