Move completion label functions to display

This commit is contained in:
Ville Penttinen 2019-04-08 11:44:23 +03:00
parent dfaebd76ab
commit 946b5789d1
4 changed files with 32 additions and 31 deletions

View File

@ -13,12 +13,10 @@ mod complete_scope;
mod complete_postfix; mod complete_postfix;
use ra_db::SourceDatabase; use ra_db::SourceDatabase;
use ra_syntax::{ast::{self, AstNode}, SyntaxKind::{ATTR, COMMENT}};
use crate::{ use crate::{
db, db,
FilePosition, FilePosition,
FunctionSignature,
completion::{ completion::{
completion_item::{Completions, CompletionKind}, completion_item::{Completions, CompletionKind},
completion_context::CompletionContext, completion_context::CompletionContext,
@ -71,29 +69,3 @@ pub(crate) fn completions(db: &db::RootDatabase, position: FilePosition) -> Opti
complete_postfix::complete_postfix(&mut acc, &ctx); complete_postfix::complete_postfix(&mut acc, &ctx);
Some(acc) Some(acc)
} }
pub fn function_label(node: &ast::FnDef) -> Option<String> {
Some(FunctionSignature::from(node).to_string())
}
pub fn const_label(node: &ast::ConstDef) -> String {
let label: String = node
.syntax()
.children_with_tokens()
.filter(|child| !(child.kind() == COMMENT || child.kind() == ATTR))
.map(|node| node.to_string())
.collect();
label.trim().to_owned()
}
pub fn type_label(node: &ast::TypeAliasDef) -> String {
let label: String = node
.syntax()
.children_with_tokens()
.filter(|child| !(child.kind() == COMMENT || child.kind() == ATTR))
.map(|node| node.to_string())
.collect();
label.trim().to_owned()
}

View File

@ -6,6 +6,9 @@ use ra_syntax::ast::NameOwner;
use crate::completion::{ use crate::completion::{
Completions, CompletionKind, CompletionItemKind, CompletionContext, CompletionItem, Completions, CompletionKind, CompletionItemKind, CompletionContext, CompletionItem,
};
use crate::display::{
function_label, const_label, type_label, function_label, const_label, type_label,
}; };
@ -101,7 +104,7 @@ impl Completions {
CompletionItemKind::Function CompletionItemKind::Function
}) })
.set_documentation(func.docs(ctx.db)) .set_documentation(func.docs(ctx.db))
.set_detail(detail); .detail(detail);
// If not an import, add parenthesis automatically. // If not an import, add parenthesis automatically.
if ctx.use_item_syntax.is_none() && !ctx.is_call { if ctx.use_item_syntax.is_none() && !ctx.is_call {
tested_by!(inserts_parens_for_function_calls); tested_by!(inserts_parens_for_function_calls);

View File

@ -3,10 +3,36 @@
use super::*; use super::*;
use std::fmt::{self, Display}; use std::fmt::{self, Display};
use join_to_string::join; use join_to_string::join;
use ra_syntax::ast::{self, AstNode, NameOwner, VisibilityOwner, TypeParamsOwner}; use ra_syntax::{ast::{self, AstNode, NameOwner, VisibilityOwner, TypeParamsOwner}, SyntaxKind::{ATTR, COMMENT}};
use std::convert::From; use std::convert::From;
use hir::Docs; use hir::Docs;
pub(crate) fn function_label(node: &ast::FnDef) -> String {
FunctionSignature::from(node).to_string()
}
pub(crate) fn const_label(node: &ast::ConstDef) -> String {
let label: String = node
.syntax()
.children_with_tokens()
.filter(|child| !(child.kind() == COMMENT || child.kind() == ATTR))
.map(|node| node.to_string())
.collect();
label.trim().to_owned()
}
pub(crate) fn type_label(node: &ast::TypeAliasDef) -> String {
let label: String = node
.syntax()
.children_with_tokens()
.filter(|child| !(child.kind() == COMMENT || child.kind() == ATTR))
.map(|node| node.to_string())
.collect();
label.trim().to_owned()
}
/// Contains information about a function signature /// Contains information about a function signature
#[derive(Debug)] #[derive(Debug)]
pub struct FunctionSignature { pub struct FunctionSignature {

View File

@ -235,7 +235,7 @@ impl NavigationTarget {
} }
visitor() visitor()
.visit(crate::completion::function_label) .visit(|node: &ast::FnDef| Some(crate::display::function_label(node)))
.visit(|node: &ast::StructDef| visit_node(node, "struct ")) .visit(|node: &ast::StructDef| visit_node(node, "struct "))
.visit(|node: &ast::EnumDef| visit_node(node, "enum ")) .visit(|node: &ast::EnumDef| visit_node(node, "enum "))
.visit(|node: &ast::TraitDef| visit_node(node, "trait ")) .visit(|node: &ast::TraitDef| visit_node(node, "trait "))