aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--crates/ra_ide_api/src/completion.rs28
-rw-r--r--crates/ra_ide_api/src/completion/presentation.rs5
-rw-r--r--crates/ra_ide_api/src/display.rs28
-rw-r--r--crates/ra_ide_api/src/hover.rs2
4 files changed, 32 insertions, 31 deletions
diff --git a/crates/ra_ide_api/src/completion.rs b/crates/ra_ide_api/src/completion.rs
index 71a35c689..deff59cd3 100644
--- a/crates/ra_ide_api/src/completion.rs
+++ b/crates/ra_ide_api/src/completion.rs
@@ -13,12 +13,10 @@ mod complete_scope;
13mod complete_postfix; 13mod complete_postfix;
14 14
15use ra_db::SourceDatabase; 15use ra_db::SourceDatabase;
16use ra_syntax::{ast::{self, AstNode}, SyntaxKind::{ATTR, COMMENT}};
17 16
18use crate::{ 17use crate::{
19 db, 18 db,
20 FilePosition, 19 FilePosition,
21 FunctionSignature,
22 completion::{ 20 completion::{
23 completion_item::{Completions, CompletionKind}, 21 completion_item::{Completions, CompletionKind},
24 completion_context::CompletionContext, 22 completion_context::CompletionContext,
@@ -71,29 +69,3 @@ pub(crate) fn completions(db: &db::RootDatabase, position: FilePosition) -> Opti
71 complete_postfix::complete_postfix(&mut acc, &ctx); 69 complete_postfix::complete_postfix(&mut acc, &ctx);
72 Some(acc) 70 Some(acc)
73} 71}
74
75pub fn function_label(node: &ast::FnDef) -> Option<String> {
76 Some(FunctionSignature::from(node).to_string())
77}
78
79pub fn const_label(node: &ast::ConstDef) -> String {
80 let label: String = node
81 .syntax()
82 .children_with_tokens()
83 .filter(|child| !(child.kind() == COMMENT || child.kind() == ATTR))
84 .map(|node| node.to_string())
85 .collect();
86
87 label.trim().to_owned()
88}
89
90pub fn type_label(node: &ast::TypeAliasDef) -> String {
91 let label: String = node
92 .syntax()
93 .children_with_tokens()
94 .filter(|child| !(child.kind() == COMMENT || child.kind() == ATTR))
95 .map(|node| node.to_string())
96 .collect();
97
98 label.trim().to_owned()
99}
diff --git a/crates/ra_ide_api/src/completion/presentation.rs b/crates/ra_ide_api/src/completion/presentation.rs
index 28c8f83ab..9aa346688 100644
--- a/crates/ra_ide_api/src/completion/presentation.rs
+++ b/crates/ra_ide_api/src/completion/presentation.rs
@@ -6,6 +6,9 @@ use ra_syntax::ast::NameOwner;
6 6
7use crate::completion::{ 7use crate::completion::{
8 Completions, CompletionKind, CompletionItemKind, CompletionContext, CompletionItem, 8 Completions, CompletionKind, CompletionItemKind, CompletionContext, CompletionItem,
9};
10
11use crate::display::{
9 function_label, const_label, type_label, 12 function_label, const_label, type_label,
10}; 13};
11 14
@@ -101,7 +104,7 @@ impl Completions {
101 CompletionItemKind::Function 104 CompletionItemKind::Function
102 }) 105 })
103 .set_documentation(func.docs(ctx.db)) 106 .set_documentation(func.docs(ctx.db))
104 .set_detail(detail); 107 .detail(detail);
105 // If not an import, add parenthesis automatically. 108 // If not an import, add parenthesis automatically.
106 if ctx.use_item_syntax.is_none() && !ctx.is_call { 109 if ctx.use_item_syntax.is_none() && !ctx.is_call {
107 tested_by!(inserts_parens_for_function_calls); 110 tested_by!(inserts_parens_for_function_calls);
diff --git a/crates/ra_ide_api/src/display.rs b/crates/ra_ide_api/src/display.rs
index c05d59689..efadb9b10 100644
--- a/crates/ra_ide_api/src/display.rs
+++ b/crates/ra_ide_api/src/display.rs
@@ -3,10 +3,36 @@
3use super::*; 3use super::*;
4use std::fmt::{self, Display}; 4use std::fmt::{self, Display};
5use join_to_string::join; 5use join_to_string::join;
6use ra_syntax::ast::{self, AstNode, NameOwner, VisibilityOwner, TypeParamsOwner}; 6use ra_syntax::{ast::{self, AstNode, NameOwner, VisibilityOwner, TypeParamsOwner}, SyntaxKind::{ATTR, COMMENT}};
7use std::convert::From; 7use std::convert::From;
8use hir::Docs; 8use hir::Docs;
9 9
10pub(crate) fn function_label(node: &ast::FnDef) -> String {
11 FunctionSignature::from(node).to_string()
12}
13
14pub(crate) fn const_label(node: &ast::ConstDef) -> String {
15 let label: String = node
16 .syntax()
17 .children_with_tokens()
18 .filter(|child| !(child.kind() == COMMENT || child.kind() == ATTR))
19 .map(|node| node.to_string())
20 .collect();
21
22 label.trim().to_owned()
23}
24
25pub(crate) fn type_label(node: &ast::TypeAliasDef) -> String {
26 let label: String = node
27 .syntax()
28 .children_with_tokens()
29 .filter(|child| !(child.kind() == COMMENT || child.kind() == ATTR))
30 .map(|node| node.to_string())
31 .collect();
32
33 label.trim().to_owned()
34}
35
10/// Contains information about a function signature 36/// Contains information about a function signature
11#[derive(Debug)] 37#[derive(Debug)]
12pub struct FunctionSignature { 38pub struct FunctionSignature {
diff --git a/crates/ra_ide_api/src/hover.rs b/crates/ra_ide_api/src/hover.rs
index bfa7cd67a..7d2c57f82 100644
--- a/crates/ra_ide_api/src/hover.rs
+++ b/crates/ra_ide_api/src/hover.rs
@@ -235,7 +235,7 @@ impl NavigationTarget {
235 } 235 }
236 236
237 visitor() 237 visitor()
238 .visit(crate::completion::function_label) 238 .visit(|node: &ast::FnDef| Some(crate::display::function_label(node)))
239 .visit(|node: &ast::StructDef| visit_node(node, "struct ")) 239 .visit(|node: &ast::StructDef| visit_node(node, "struct "))
240 .visit(|node: &ast::EnumDef| visit_node(node, "enum ")) 240 .visit(|node: &ast::EnumDef| visit_node(node, "enum "))
241 .visit(|node: &ast::TraitDef| visit_node(node, "trait ")) 241 .visit(|node: &ast::TraitDef| visit_node(node, "trait "))