mirror of
https://github.com/rust-lang/rust-analyzer
synced 2024-12-27 05:23:24 +00:00
add config item for hover display
This commit is contained in:
parent
00358b1fe0
commit
35ec5955eb
10 changed files with 34 additions and 7 deletions
|
@ -62,7 +62,7 @@ pub struct HirFormatter<'a> {
|
||||||
fmt: &'a mut dyn HirWrite,
|
fmt: &'a mut dyn HirWrite,
|
||||||
buf: String,
|
buf: String,
|
||||||
curr_size: usize,
|
curr_size: usize,
|
||||||
pub(crate) max_size: Option<usize>,
|
pub max_size: Option<usize>,
|
||||||
omit_verbose_types: bool,
|
omit_verbose_types: bool,
|
||||||
closure_style: ClosureStyle,
|
closure_style: ClosureStyle,
|
||||||
display_target: DisplayTarget,
|
display_target: DisplayTarget,
|
||||||
|
|
|
@ -593,12 +593,14 @@ impl HirDisplay for Trait {
|
||||||
write_generic_params(def_id, f)?;
|
write_generic_params(def_id, f)?;
|
||||||
write_where_clause(def_id, f)?;
|
write_where_clause(def_id, f)?;
|
||||||
|
|
||||||
|
let mut display_size = 0;
|
||||||
|
let max_display_size = f.max_size.unwrap_or(7);
|
||||||
let assoc_items = self.items(f.db);
|
let assoc_items = self.items(f.db);
|
||||||
if assoc_items.is_empty() {
|
if assoc_items.is_empty() {
|
||||||
f.write_str(" {}")?;
|
f.write_str(" {}")?;
|
||||||
} else {
|
} else {
|
||||||
f.write_str(" {\n")?;
|
f.write_str(" {\n")?;
|
||||||
for item in assoc_items {
|
for (index, item) in assoc_items.iter().enumerate() {
|
||||||
f.write_str(" ")?;
|
f.write_str(" ")?;
|
||||||
match item {
|
match item {
|
||||||
AssocItem::Function(func) => {
|
AssocItem::Function(func) => {
|
||||||
|
@ -612,6 +614,11 @@ impl HirDisplay for Trait {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
f.write_str(",\n")?;
|
f.write_str(",\n")?;
|
||||||
|
display_size += 1;
|
||||||
|
if display_size == max_display_size && index != assoc_items.len() - 1{
|
||||||
|
f.write_str(" ...\n")?;
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
f.write_str("}")?;
|
f.write_str("}")?;
|
||||||
}
|
}
|
||||||
|
|
|
@ -213,7 +213,7 @@ impl Definition {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn label(&self, db: &RootDatabase) -> String {
|
pub fn label(&self, db: &RootDatabase, max_size: Option<usize>) -> String {
|
||||||
match *self {
|
match *self {
|
||||||
Definition::Macro(it) => it.display(db).to_string(),
|
Definition::Macro(it) => it.display(db).to_string(),
|
||||||
Definition::Field(it) => it.display(db).to_string(),
|
Definition::Field(it) => it.display(db).to_string(),
|
||||||
|
@ -224,7 +224,7 @@ impl Definition {
|
||||||
Definition::Variant(it) => it.display(db).to_string(),
|
Definition::Variant(it) => it.display(db).to_string(),
|
||||||
Definition::Const(it) => it.display(db).to_string(),
|
Definition::Const(it) => it.display(db).to_string(),
|
||||||
Definition::Static(it) => it.display(db).to_string(),
|
Definition::Static(it) => it.display(db).to_string(),
|
||||||
Definition::Trait(it) => it.display(db).to_string(),
|
Definition::Trait(it) => it.display_truncated(db, max_size).to_string(),
|
||||||
Definition::TraitAlias(it) => it.display(db).to_string(),
|
Definition::TraitAlias(it) => it.display(db).to_string(),
|
||||||
Definition::TypeAlias(it) => it.display(db).to_string(),
|
Definition::TypeAlias(it) => it.display(db).to_string(),
|
||||||
Definition::BuiltinType(it) => it.name().display(db).to_string(),
|
Definition::BuiltinType(it) => it.name().display(db).to_string(),
|
||||||
|
|
|
@ -32,6 +32,7 @@ pub struct HoverConfig {
|
||||||
pub documentation: bool,
|
pub documentation: bool,
|
||||||
pub keywords: bool,
|
pub keywords: bool,
|
||||||
pub format: HoverDocFormat,
|
pub format: HoverDocFormat,
|
||||||
|
pub trait_item_display_on_hover: Option<usize>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Copy, Clone, Debug, PartialEq, Eq)]
|
#[derive(Copy, Clone, Debug, PartialEq, Eq)]
|
||||||
|
|
|
@ -406,7 +406,7 @@ pub(super) fn definition(
|
||||||
config: &HoverConfig,
|
config: &HoverConfig,
|
||||||
) -> Markup {
|
) -> Markup {
|
||||||
let mod_path = definition_mod_path(db, &def);
|
let mod_path = definition_mod_path(db, &def);
|
||||||
let label = def.label(db);
|
let label = def.label(db, config.trait_item_display_on_hover);
|
||||||
let docs = def.docs(db, famous_defs);
|
let docs = def.docs(db, famous_defs);
|
||||||
let value = (|| match def {
|
let value = (|| match def {
|
||||||
Definition::Variant(it) => {
|
Definition::Variant(it) => {
|
||||||
|
|
|
@ -17,6 +17,7 @@ const HOVER_BASE_CONFIG: HoverConfig = HoverConfig {
|
||||||
documentation: true,
|
documentation: true,
|
||||||
format: HoverDocFormat::Markdown,
|
format: HoverDocFormat::Markdown,
|
||||||
keywords: true,
|
keywords: true,
|
||||||
|
trait_item_display_on_hover: Some(7),
|
||||||
};
|
};
|
||||||
|
|
||||||
fn check_hover_no_result(ra_fixture: &str) {
|
fn check_hover_no_result(ra_fixture: &str) {
|
||||||
|
|
|
@ -166,6 +166,7 @@ impl StaticIndex<'_> {
|
||||||
documentation: true,
|
documentation: true,
|
||||||
keywords: true,
|
keywords: true,
|
||||||
format: crate::HoverDocFormat::Markdown,
|
format: crate::HoverDocFormat::Markdown,
|
||||||
|
trait_item_display_on_hover: Some(7)
|
||||||
};
|
};
|
||||||
let tokens = tokens.filter(|token| {
|
let tokens = tokens.filter(|token| {
|
||||||
matches!(
|
matches!(
|
||||||
|
@ -196,7 +197,7 @@ impl StaticIndex<'_> {
|
||||||
enclosing_moniker: current_crate
|
enclosing_moniker: current_crate
|
||||||
.zip(def.enclosing_definition(self.db))
|
.zip(def.enclosing_definition(self.db))
|
||||||
.and_then(|(cc, enclosing_def)| def_to_moniker(self.db, enclosing_def, cc)),
|
.and_then(|(cc, enclosing_def)| def_to_moniker(self.db, enclosing_def, cc)),
|
||||||
signature: Some(def.label(self.db)),
|
signature: Some(def.label(self.db, hover_config.trait_item_display_on_hover)),
|
||||||
kind: def_to_kind(self.db, def),
|
kind: def_to_kind(self.db, def),
|
||||||
});
|
});
|
||||||
self.def_map.insert(def, it);
|
self.def_map.insert(def, it);
|
||||||
|
|
|
@ -511,7 +511,6 @@ config_data! {
|
||||||
/// Exclude tests from find-all-references.
|
/// Exclude tests from find-all-references.
|
||||||
references_excludeTests: bool = "false",
|
references_excludeTests: bool = "false",
|
||||||
|
|
||||||
|
|
||||||
/// Command to be executed instead of 'cargo' for runnables.
|
/// Command to be executed instead of 'cargo' for runnables.
|
||||||
runnables_command: Option<String> = "null",
|
runnables_command: Option<String> = "null",
|
||||||
/// Additional arguments to be passed to cargo for runnables such as
|
/// Additional arguments to be passed to cargo for runnables such as
|
||||||
|
@ -591,6 +590,9 @@ config_data! {
|
||||||
/// Show documentation.
|
/// Show documentation.
|
||||||
signatureInfo_documentation_enable: bool = "true",
|
signatureInfo_documentation_enable: bool = "true",
|
||||||
|
|
||||||
|
/// How many trait item display on hover.
|
||||||
|
trait_item_display_on_hover: Option<usize> = "7",
|
||||||
|
|
||||||
/// Whether to insert closing angle brackets when typing an opening angle bracket of a generic argument list.
|
/// Whether to insert closing angle brackets when typing an opening angle bracket of a generic argument list.
|
||||||
typing_autoClosingAngleBrackets_enable: bool = "false",
|
typing_autoClosingAngleBrackets_enable: bool = "false",
|
||||||
|
|
||||||
|
@ -1683,6 +1685,7 @@ impl Config {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
keywords: self.data.hover_documentation_keywords_enable,
|
keywords: self.data.hover_documentation_keywords_enable,
|
||||||
|
trait_item_display_on_hover: self.data.trait_item_display_on_hover,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -927,6 +927,11 @@ Show full signature of the callable. Only shows parameters if disabled.
|
||||||
--
|
--
|
||||||
Show documentation.
|
Show documentation.
|
||||||
--
|
--
|
||||||
|
[[rust-analyzer.trait.item.display.on.hover]]rust-analyzer.trait.item.display.on.hover (default: `7`)::
|
||||||
|
+
|
||||||
|
--
|
||||||
|
How many trait item display on hover.
|
||||||
|
--
|
||||||
[[rust-analyzer.typing.autoClosingAngleBrackets.enable]]rust-analyzer.typing.autoClosingAngleBrackets.enable (default: `false`)::
|
[[rust-analyzer.typing.autoClosingAngleBrackets.enable]]rust-analyzer.typing.autoClosingAngleBrackets.enable (default: `false`)::
|
||||||
+
|
+
|
||||||
--
|
--
|
||||||
|
|
|
@ -1648,6 +1648,15 @@
|
||||||
"default": true,
|
"default": true,
|
||||||
"type": "boolean"
|
"type": "boolean"
|
||||||
},
|
},
|
||||||
|
"rust-analyzer.trait.item.display.on.hover": {
|
||||||
|
"markdownDescription": "How many trait item display on hover.",
|
||||||
|
"default": 7,
|
||||||
|
"type": [
|
||||||
|
"null",
|
||||||
|
"integer"
|
||||||
|
],
|
||||||
|
"minimum": 0
|
||||||
|
},
|
||||||
"rust-analyzer.typing.autoClosingAngleBrackets.enable": {
|
"rust-analyzer.typing.autoClosingAngleBrackets.enable": {
|
||||||
"markdownDescription": "Whether to insert closing angle brackets when typing an opening angle bracket of a generic argument list.",
|
"markdownDescription": "Whether to insert closing angle brackets when typing an opening angle bracket of a generic argument list.",
|
||||||
"default": false,
|
"default": false,
|
||||||
|
|
Loading…
Reference in a new issue