diff --git a/crates/ra_hir/src/code_model_api.rs b/crates/ra_hir/src/code_model_api.rs index 9ae620efd4c..21ca36265d1 100644 --- a/crates/ra_hir/src/code_model_api.rs +++ b/crates/ra_hir/src/code_model_api.rs @@ -366,6 +366,28 @@ impl Function { Some(comments) } } + + pub fn label(&self, db: &impl HirDatabase) -> Option { + let def_loc = self.def_id.loc(db); + let syntax = db.file_item(def_loc.source_item_id); + let node = ast::FnDef::cast(&syntax).expect("fn def should point to FnDef node"); + + let label: String = if let Some(body) = node.body() { + let body_range = body.syntax().range(); + let label: String = node + .syntax() + .children() + .filter(|child| !child.range().is_subrange(&body_range)) // Filter out body + .filter(|child| ast::Comment::cast(child).is_none()) // Filter out comments + .map(|node| node.text().to_string()) + .collect(); + label + } else { + node.syntax().text().to_string() + }; + + Some(label.trim().to_owned()) + } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] diff --git a/crates/ra_ide_api/src/completion/completion_item.rs b/crates/ra_ide_api/src/completion/completion_item.rs index d70c3688988..b720a138210 100644 --- a/crates/ra_ide_api/src/completion/completion_item.rs +++ b/crates/ra_ide_api/src/completion/completion_item.rs @@ -263,6 +263,10 @@ impl Builder { self.documentation = Some(docs); } + if let Some(label) = function.label(ctx.db) { + self.detail = Some(label); + } + self.kind = Some(CompletionItemKind::Function); self } diff --git a/crates/ra_ide_api/src/completion/snapshots/completion_item__bindings_from_for.snap b/crates/ra_ide_api/src/completion/snapshots/completion_item__bindings_from_for.snap index 3d8d5af78a0..eb806ad6228 100644 --- a/crates/ra_ide_api/src/completion/snapshots/completion_item__bindings_from_for.snap +++ b/crates/ra_ide_api/src/completion/snapshots/completion_item__bindings_from_for.snap @@ -1,5 +1,5 @@ --- -created: "2019-01-22T14:45:00.858540400+00:00" +created: "2019-01-22T15:38:19.841148300+00:00" creator: insta@0.4.0 expression: kind_completions source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs" @@ -25,7 +25,9 @@ source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs" kind: Some( Function ), - detail: None, + detail: Some( + "fn quux()" + ), documentation: None, lookup: None, insert_text: Some( diff --git a/crates/ra_ide_api/src/completion/snapshots/completion_item__bindings_from_if_let.snap b/crates/ra_ide_api/src/completion/snapshots/completion_item__bindings_from_if_let.snap index 7ed1d5ccb5b..4bb28c7e893 100644 --- a/crates/ra_ide_api/src/completion/snapshots/completion_item__bindings_from_if_let.snap +++ b/crates/ra_ide_api/src/completion/snapshots/completion_item__bindings_from_if_let.snap @@ -1,5 +1,5 @@ --- -created: "2019-01-22T14:45:00.860535200+00:00" +created: "2019-01-22T15:38:19.863089100+00:00" creator: insta@0.4.0 expression: kind_completions source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs" @@ -39,7 +39,9 @@ source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs" kind: Some( Function ), - detail: None, + detail: Some( + "fn quux()" + ), documentation: None, lookup: None, insert_text: Some( diff --git a/crates/ra_ide_api/src/completion/snapshots/completion_item__bindings_from_let.snap b/crates/ra_ide_api/src/completion/snapshots/completion_item__bindings_from_let.snap index 95581122d35..0579d00ec49 100644 --- a/crates/ra_ide_api/src/completion/snapshots/completion_item__bindings_from_let.snap +++ b/crates/ra_ide_api/src/completion/snapshots/completion_item__bindings_from_let.snap @@ -1,5 +1,5 @@ --- -created: "2019-01-22T14:45:00.871506600+00:00" +created: "2019-01-22T15:38:19.881041600+00:00" creator: insta@0.4.0 expression: kind_completions source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs" @@ -39,7 +39,9 @@ source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs" kind: Some( Function ), - detail: None, + detail: Some( + "fn quux(x: i32)" + ), documentation: None, lookup: None, insert_text: Some( diff --git a/crates/ra_ide_api/src/completion/snapshots/completion_item__dont_render_function_parens_if_already_call.snap b/crates/ra_ide_api/src/completion/snapshots/completion_item__dont_render_function_parens_if_already_call.snap index 18d8b3fb3c3..091bf581e36 100644 --- a/crates/ra_ide_api/src/completion/snapshots/completion_item__dont_render_function_parens_if_already_call.snap +++ b/crates/ra_ide_api/src/completion/snapshots/completion_item__dont_render_function_parens_if_already_call.snap @@ -1,5 +1,5 @@ --- -created: "2019-01-22T14:45:00.797704900+00:00" +created: "2019-01-22T15:38:19.788294+00:00" creator: insta@0.4.0 expression: kind_completions source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs" @@ -11,7 +11,9 @@ source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs" kind: Some( Function ), - detail: None, + detail: Some( + "fn main()" + ), documentation: None, lookup: None, insert_text: None, @@ -25,7 +27,9 @@ source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs" kind: Some( Function ), - detail: None, + detail: Some( + "fn frobnicate()" + ), documentation: None, lookup: None, insert_text: None, diff --git a/crates/ra_ide_api/src/completion/snapshots/completion_item__dont_render_function_parens_in_use_item.snap b/crates/ra_ide_api/src/completion/snapshots/completion_item__dont_render_function_parens_in_use_item.snap index 8bf7bf06ce1..3bc3f5f38aa 100644 --- a/crates/ra_ide_api/src/completion/snapshots/completion_item__dont_render_function_parens_in_use_item.snap +++ b/crates/ra_ide_api/src/completion/snapshots/completion_item__dont_render_function_parens_in_use_item.snap @@ -1,5 +1,5 @@ --- -created: "2019-01-22T14:45:00.801693300+00:00" +created: "2019-01-22T15:38:19.815217100+00:00" creator: insta@0.4.0 expression: kind_completions source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs" @@ -11,7 +11,9 @@ source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs" kind: Some( Function ), - detail: None, + detail: Some( + "pub fn foo()" + ), documentation: None, lookup: None, insert_text: None, diff --git a/crates/ra_ide_api/src/completion/snapshots/completion_item__dont_show_both_completions_for_shadowing.snap b/crates/ra_ide_api/src/completion/snapshots/completion_item__dont_show_both_completions_for_shadowing.snap index 5844254e14c..3e88d8c8e0b 100644 --- a/crates/ra_ide_api/src/completion/snapshots/completion_item__dont_show_both_completions_for_shadowing.snap +++ b/crates/ra_ide_api/src/completion/snapshots/completion_item__dont_show_both_completions_for_shadowing.snap @@ -1,5 +1,5 @@ --- -created: "2019-01-22T14:45:00.912397100+00:00" +created: "2019-01-22T15:38:19.914951100+00:00" creator: insta@0.4.0 expression: kind_completions source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs" @@ -25,7 +25,9 @@ source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs" kind: Some( Function ), - detail: None, + detail: Some( + "fn foo() ->" + ), documentation: None, lookup: None, insert_text: Some( diff --git a/crates/ra_ide_api/src/completion/snapshots/completion_item__inserts_parens_for_function_calls1.snap b/crates/ra_ide_api/src/completion/snapshots/completion_item__inserts_parens_for_function_calls1.snap index 732a873824f..b30a4c9e96b 100644 --- a/crates/ra_ide_api/src/completion/snapshots/completion_item__inserts_parens_for_function_calls1.snap +++ b/crates/ra_ide_api/src/completion/snapshots/completion_item__inserts_parens_for_function_calls1.snap @@ -1,5 +1,5 @@ --- -created: "2019-01-22T14:45:00.932343200+00:00" +created: "2019-01-22T15:38:19.919937+00:00" creator: insta@0.4.0 expression: kind_completions source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs" @@ -11,7 +11,9 @@ source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs" kind: Some( Function ), - detail: None, + detail: Some( + "fn no_args()" + ), documentation: None, lookup: None, insert_text: Some( @@ -27,7 +29,9 @@ source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs" kind: Some( Function ), - detail: None, + detail: Some( + "fn main()" + ), documentation: None, lookup: None, insert_text: Some( diff --git a/crates/ra_ide_api/src/completion/snapshots/completion_item__inserts_parens_for_function_calls2.snap b/crates/ra_ide_api/src/completion/snapshots/completion_item__inserts_parens_for_function_calls2.snap index 2431b3276b2..c524f3587c9 100644 --- a/crates/ra_ide_api/src/completion/snapshots/completion_item__inserts_parens_for_function_calls2.snap +++ b/crates/ra_ide_api/src/completion/snapshots/completion_item__inserts_parens_for_function_calls2.snap @@ -1,5 +1,5 @@ --- -created: "2019-01-22T14:45:00.995180+00:00" +created: "2019-01-22T15:38:19.996733+00:00" creator: insta@0.4.0 expression: kind_completions source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs" @@ -11,7 +11,9 @@ source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs" kind: Some( Function ), - detail: None, + detail: Some( + "fn main()" + ), documentation: None, lookup: None, insert_text: Some( @@ -27,7 +29,9 @@ source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs" kind: Some( Function ), - detail: None, + detail: Some( + "fn with_args(x: i32, y: String)" + ), documentation: None, lookup: None, insert_text: Some( diff --git a/crates/ra_ide_api/src/completion/snapshots/completion_item__method_completion.snap b/crates/ra_ide_api/src/completion/snapshots/completion_item__method_completion.snap index c294de5cbf2..ffeac0bf430 100644 --- a/crates/ra_ide_api/src/completion/snapshots/completion_item__method_completion.snap +++ b/crates/ra_ide_api/src/completion/snapshots/completion_item__method_completion.snap @@ -1,5 +1,5 @@ --- -created: "2019-01-22T14:45:00.546394900+00:00" +created: "2019-01-22T15:38:19.541947400+00:00" creator: insta@0.4.0 expression: kind_completions source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs" @@ -11,7 +11,9 @@ source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs" kind: Some( Method ), - detail: None, + detail: Some( + "fn the_method(&self)" + ), documentation: None, lookup: None, insert_text: Some( diff --git a/crates/ra_ide_api/src/completion/snapshots/completion_item__module_items.snap b/crates/ra_ide_api/src/completion/snapshots/completion_item__module_items.snap index 032516ab402..df9677ba3d4 100644 --- a/crates/ra_ide_api/src/completion/snapshots/completion_item__module_items.snap +++ b/crates/ra_ide_api/src/completion/snapshots/completion_item__module_items.snap @@ -1,5 +1,5 @@ --- -created: "2019-01-22T14:45:00.874497400+00:00" +created: "2019-01-22T15:38:19.896999400+00:00" creator: insta@0.4.0 expression: kind_completions source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs" @@ -11,7 +11,9 @@ source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs" kind: Some( Function ), - detail: None, + detail: Some( + "fn quux()" + ), documentation: None, lookup: None, insert_text: Some( diff --git a/crates/ra_ide_api/src/completion/snapshots/completion_item__module_items_in_nested_modules.snap b/crates/ra_ide_api/src/completion/snapshots/completion_item__module_items_in_nested_modules.snap index b33babaf09f..f4b38feb061 100644 --- a/crates/ra_ide_api/src/completion/snapshots/completion_item__module_items_in_nested_modules.snap +++ b/crates/ra_ide_api/src/completion/snapshots/completion_item__module_items_in_nested_modules.snap @@ -1,5 +1,5 @@ --- -created: "2019-01-22T14:45:00.875495300+00:00" +created: "2019-01-22T15:38:19.896002200+00:00" creator: insta@0.4.0 expression: kind_completions source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs" @@ -11,7 +11,9 @@ source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs" kind: Some( Function ), - detail: None, + detail: Some( + "fn quux()" + ), documentation: None, lookup: None, insert_text: Some( diff --git a/crates/ra_ide_api/src/completion/snapshots/completion_item__return_type.snap b/crates/ra_ide_api/src/completion/snapshots/completion_item__return_type.snap index 24dbe6bb015..e6819f231cc 100644 --- a/crates/ra_ide_api/src/completion/snapshots/completion_item__return_type.snap +++ b/crates/ra_ide_api/src/completion/snapshots/completion_item__return_type.snap @@ -25,7 +25,9 @@ source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs" kind: Some( Function ), - detail: None, + detail: Some( + "fn x() ->" + ), documentation: None, lookup: None, insert_text: Some( diff --git a/crates/ra_ide_api/src/completion/snapshots/completion_item__struct_field_completion_autoderef.snap b/crates/ra_ide_api/src/completion/snapshots/completion_item__struct_field_completion_autoderef.snap index 9ee668b3598..5ef140b2812 100644 --- a/crates/ra_ide_api/src/completion/snapshots/completion_item__struct_field_completion_autoderef.snap +++ b/crates/ra_ide_api/src/completion/snapshots/completion_item__struct_field_completion_autoderef.snap @@ -1,5 +1,5 @@ --- -created: "2019-01-22T14:45:00.552379600+00:00" +created: "2019-01-22T15:38:19.541947400+00:00" creator: insta@0.4.0 expression: kind_completions source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs" @@ -27,7 +27,9 @@ source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs" kind: Some( Method ), - detail: None, + detail: Some( + "fn foo(&self)" + ), documentation: None, lookup: None, insert_text: Some( diff --git a/crates/ra_ide_api/src/completion/snapshots/completion_item__struct_field_completion_self.snap b/crates/ra_ide_api/src/completion/snapshots/completion_item__struct_field_completion_self.snap index b9d70ea3f25..b7903c5bcb4 100644 --- a/crates/ra_ide_api/src/completion/snapshots/completion_item__struct_field_completion_self.snap +++ b/crates/ra_ide_api/src/completion/snapshots/completion_item__struct_field_completion_self.snap @@ -1,5 +1,5 @@ --- -created: "2019-01-22T14:45:00.552379600+00:00" +created: "2019-01-22T15:38:19.541947400+00:00" creator: insta@0.4.0 expression: kind_completions source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs" @@ -27,7 +27,9 @@ source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs" kind: Some( Method ), - detail: None, + detail: Some( + "fn foo(self)" + ), documentation: None, lookup: None, insert_text: Some(