diff options
Diffstat (limited to 'crates')
-rw-r--r-- | crates/ra_ide/src/hover.rs | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/crates/ra_ide/src/hover.rs b/crates/ra_ide/src/hover.rs index b2909bf38..5b48b1998 100644 --- a/crates/ra_ide/src/hover.rs +++ b/crates/ra_ide/src/hover.rs | |||
@@ -1,11 +1,11 @@ | |||
1 | //! FIXME: write short doc here | 1 | //! FIXME: write short doc here |
2 | 2 | ||
3 | use hir::{db::AstDatabase, Adt, HasSource, HirDisplay}; | 3 | use hir::{db::AstDatabase, Adt, HasSource, HirDisplay, InFile}; |
4 | use ra_db::SourceDatabase; | 4 | use ra_db::SourceDatabase; |
5 | use ra_syntax::{ | 5 | use ra_syntax::{ |
6 | algo::find_covering_element, | 6 | algo::find_covering_element, |
7 | ast::{self, DocCommentsOwner}, | 7 | ast::{self, DocCommentsOwner}, |
8 | match_ast, AstNode, | 8 | match_ast, AstNode, SyntaxToken, |
9 | }; | 9 | }; |
10 | 10 | ||
11 | use crate::{ | 11 | use crate::{ |
@@ -156,9 +156,17 @@ fn hover_text_from_name_kind( | |||
156 | 156 | ||
157 | pub(crate) fn hover(db: &RootDatabase, position: FilePosition) -> Option<RangeInfo<HoverResult>> { | 157 | pub(crate) fn hover(db: &RootDatabase, position: FilePosition) -> Option<RangeInfo<HoverResult>> { |
158 | let file = db.parse_or_expand(position.file_id.into())?; | 158 | let file = db.parse_or_expand(position.file_id.into())?; |
159 | let token = file.token_at_offset(position.offset).find(|it| !it.kind().is_trivia())?; | 159 | file.token_at_offset(position.offset) |
160 | let token = descend_into_macros(db, position.file_id, token); | 160 | .filter(|token| !token.kind().is_trivia()) |
161 | .map(|token| descend_into_macros(db, position.file_id, token)) | ||
162 | .find_map(|token| hover_token(db, position, token)) | ||
163 | } | ||
161 | 164 | ||
165 | fn hover_token( | ||
166 | db: &RootDatabase, | ||
167 | position: FilePosition, | ||
168 | token: InFile<SyntaxToken>, | ||
169 | ) -> Option<RangeInfo<HoverResult>> { | ||
162 | let mut res = HoverResult::new(); | 170 | let mut res = HoverResult::new(); |
163 | 171 | ||
164 | let mut range = match_ast! { | 172 | let mut range = match_ast! { |