"serde 1.0.82 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_derive 1.0.82 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_json 1.0.33 (registry+https://github.com/rust-lang/crates.io-index)",
- "smol_str 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
+ "smol_str 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
"tempdir 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)",
"test_utils 0.1.0",
"text_unit 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"parking_lot 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)",
- "smol_str 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
+ "smol_str 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
"text_unit 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "smol_str"
-version = "0.1.7"
+version = "0.1.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"serde 1.0.82 (registry+https://github.com/rust-lang/crates.io-index)",
"checksum sha-1 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "51b9d1f3b5de8a167ab06834a7c883bd197f2191e1dda1a22d9ccfeedbf9aded"
"checksum slug 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "b3bc762e6a4b6c6fcaade73e77f9ebc6991b676f88bb2358bddb56560f073373"
"checksum smallvec 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)" = "b73ea3738b47563803ef814925e69be00799a8c07420be8b996f8e98fb2336db"
-"checksum smol_str 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "f3ed6f19b800d76574926e458d5f8e2dbea86c2b58c08d33a982448f09ac8d0c"
+"checksum smol_str 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "486a74e9b9fc53373808f7a17e10fc728adcb1fbe272292271d8bea61175e181"
"checksum stable_deref_trait 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "dba1a27d3efae4351c8051072d619e3ade2820635c3958d826bfea39d59b54c8"
"checksum strsim 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bb4f380125926a99e52bc279241539c018323fab05ad6368b56f93d9369ff550"
"checksum superslice 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b50b13d42370e0f5fc62eafdd5c2d20065eaf5458dab215ff3e20e63eea96b30"
fn complete_fn(name_ref: ast::NameRef, scopes: &FnScopes, acc: &mut Vec<CompletionItem>) {
let mut shadowed = FxHashSet::default();
- acc.extend(
- scopes
- .scope_chain(name_ref.syntax())
- .flat_map(|scope| scopes.entries(scope).iter())
- .filter(|entry| shadowed.insert(entry.name()))
- .map(|entry| CompletionItem {
- label: entry.name().to_string(),
- lookup: None,
- snippet: None,
- }),
- );
+ scopes
+ .scope_chain(name_ref.syntax())
+ .flat_map(|scope| scopes.entries(scope).iter())
+ .filter(|entry| shadowed.insert(entry.name()))
+ .for_each(|entry| CompletionItem::new(entry.name().to_string()).add_to(acc));
if scopes.self_param.is_some() {
- acc.push(CompletionItem {
- label: "self".to_string(),
- lookup: None,
- snippet: None,
- })
+ CompletionItem::new("self").add_to(acc);
}
}
_ => return Ok(()),
};
let module_scope = target_module.scope(db)?;
- let completions = module_scope.entries().map(|(name, _res)| CompletionItem {
- label: name.to_string(),
- lookup: None,
- snippet: None,
- });
- acc.extend(completions);
+ module_scope
+ .entries()
+ .for_each(|(name, _res)| CompletionItem::new(name.to_string()).add_to(acc));
Ok(())
}
fn complete_mod_item_snippets(acc: &mut Vec<CompletionItem>) {
- acc.push(CompletionItem {
- label: "Test function".to_string(),
- lookup: Some("tfn".to_string()),
- snippet: Some(
- "#[test]\n\
- fn ${1:feature}() {\n\
- $0\n\
- }"
- .to_string(),
- ),
- });
- acc.push(CompletionItem {
- label: "pub(crate)".to_string(),
- lookup: None,
- snippet: Some("pub(crate) $0".to_string()),
- })
+ CompletionItem::new("Test function")
+ .lookup_by("tfn")
+ .snippet(
+ "\
+#[test]
+fn ${1:feature}() {
+ $0
+}",
+ )
+ .add_to(acc);
+ CompletionItem::new("pub(crate)")
+ .snippet("pub(crate) $0")
+ .add_to(acc);
}
fn complete_expr_keywords(
Some(keyword("return", snip))
}
-fn keyword(kw: &str, snip: &str) -> CompletionItem {
- CompletionItem {
- label: kw.to_string(),
- lookup: None,
- snippet: Some(snip.to_string()),
- }
+fn keyword(kw: &str, snippet: &str) -> CompletionItem {
+ CompletionItem::new(kw).snippet(snippet).build()
}
fn complete_expr_snippets(acc: &mut Vec<CompletionItem>) {
- acc.push(CompletionItem {
- label: "pd".to_string(),
- lookup: None,
- snippet: Some("eprintln!(\"$0 = {:?}\", $0);".to_string()),
- });
- acc.push(CompletionItem {
- label: "ppd".to_string(),
- lookup: None,
- snippet: Some("eprintln!(\"$0 = {:#?}\", $0);".to_string()),
- });
+ CompletionItem::new("pd")
+ .snippet("eprintln!(\"$0 = {:?}\", $0);")
+ .add_to(acc);
+ CompletionItem::new("ppd")
+ .snippet("eprintln!(\"$0 = {:#?}\", $0);")
+ .add_to(acc);
}