Add guarded Text alias rename with complete preview and editor reuse
This commit is contained in:
@@ -220,12 +220,22 @@ pub struct ReferenceRow {
|
||||
pub evidence: Evidence,
|
||||
}
|
||||
|
||||
/// Exact lexical occurrence that answered the query, independent of row limits.
|
||||
/// The optional @ marker is separate from the alias; comments between them do
|
||||
/// not become part of either hit.
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
|
||||
pub struct Origin {
|
||||
pub span: Span,
|
||||
pub marker: Option<Span>,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, PartialEq, Eq)]
|
||||
pub struct Results {
|
||||
pub stamp: QueryStamp,
|
||||
pub action: Action,
|
||||
pub origin_path: String,
|
||||
pub origin_offset: usize,
|
||||
pub origin: Option<Origin>,
|
||||
pub alias: Option<String>,
|
||||
pub scope: Scope,
|
||||
pub disposition: Disposition,
|
||||
@@ -823,10 +833,28 @@ impl Snapshot {
|
||||
.ok_or(QueryError::MissingFile)?;
|
||||
let index = self.index()?;
|
||||
let hit = index.hit(file, query.byte_offset)?;
|
||||
let alias = match hit {
|
||||
Some(symbols::Hit::Definition(handle)) => Some(index.definition(handle)?.alias),
|
||||
Some(symbols::Hit::Reference(handle)) => Some(index.reference(handle)?.alias),
|
||||
None => None,
|
||||
let (alias, origin) = match hit {
|
||||
Some(symbols::Hit::Definition(handle)) => {
|
||||
let definition = index.definition(handle)?;
|
||||
(
|
||||
Some(definition.alias),
|
||||
Some(Origin {
|
||||
span: definition.alias_location.span,
|
||||
marker: None,
|
||||
}),
|
||||
)
|
||||
}
|
||||
Some(symbols::Hit::Reference(handle)) => {
|
||||
let reference = index.reference(handle)?;
|
||||
(
|
||||
Some(reference.alias),
|
||||
Some(Origin {
|
||||
span: reference.alias_location.span,
|
||||
marker: Some(reference.at.span),
|
||||
}),
|
||||
)
|
||||
}
|
||||
None => (None, None),
|
||||
};
|
||||
let mut budget = RowBudget {
|
||||
rows: self.limits.result_rows,
|
||||
@@ -840,6 +868,7 @@ impl Snapshot {
|
||||
action: query.action,
|
||||
origin_path: query.path.to_owned(),
|
||||
origin_offset: query.byte_offset,
|
||||
origin,
|
||||
alias: alias.map(str::to_owned),
|
||||
scope: self.scope.clone(),
|
||||
disposition: Disposition::NoSymbol,
|
||||
|
||||
Reference in New Issue
Block a user