fix a couple of issues with mention URIs
This commit is contained in:
parent
9fa49b89de
commit
d8131278f1
2 changed files with 19 additions and 24 deletions
|
@ -135,10 +135,12 @@ impl MentionUri {
|
|||
name,
|
||||
line_range,
|
||||
} => {
|
||||
let query = url::form_urlencoded::Serializer::new(String::new())
|
||||
.append_pair("symbol", name)
|
||||
.finish();
|
||||
format!(
|
||||
"file://{}?symbol={}#L{}:{}",
|
||||
"file://{}?{query}#L{}:{}",
|
||||
path.display(),
|
||||
name,
|
||||
line_range.start + 1,
|
||||
line_range.end + 1,
|
||||
)
|
||||
|
@ -152,13 +154,22 @@ impl MentionUri {
|
|||
)
|
||||
}
|
||||
MentionUri::Thread { name, id } => {
|
||||
format!("zed:///agent/thread/{id}?name={name}")
|
||||
let query = url::form_urlencoded::Serializer::new(String::new())
|
||||
.append_pair("name", name)
|
||||
.finish();
|
||||
format!("zed:///agent/thread/{id}?{query}")
|
||||
}
|
||||
MentionUri::TextThread { path, name } => {
|
||||
format!("zed:///agent/text-thread/{}?name={name}", path.display())
|
||||
let query = url::form_urlencoded::Serializer::new(String::new())
|
||||
.append_pair("name", name)
|
||||
.finish();
|
||||
format!("zed:///agent/text-thread/{}?{query}", path.display())
|
||||
}
|
||||
MentionUri::Rule { name, id } => {
|
||||
format!("zed:///agent/rule/{id}?name={name}")
|
||||
let query = url::form_urlencoded::Serializer::new(String::new())
|
||||
.append_pair("name", name)
|
||||
.finish();
|
||||
format!("zed:///agent/rule/{id}?{query}")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -688,29 +688,13 @@ impl ContextPickerCompletionProvider {
|
|||
workspace: Entity<Workspace>,
|
||||
cx: &mut App,
|
||||
) -> Option<Completion> {
|
||||
let path_prefix = workspace
|
||||
.read(cx)
|
||||
.project()
|
||||
.read(cx)
|
||||
.worktree_for_id(symbol.path.worktree_id, cx)?
|
||||
.read(cx)
|
||||
.root_name();
|
||||
|
||||
let (file_name, directory) =
|
||||
crate::context_picker::file_context_picker::extract_file_name_and_directory(
|
||||
&symbol.path.path,
|
||||
path_prefix,
|
||||
);
|
||||
let full_path = if let Some(directory) = directory {
|
||||
format!("{}{}", directory, file_name)
|
||||
} else {
|
||||
file_name.to_string()
|
||||
};
|
||||
let project = workspace.read(cx).project().clone();
|
||||
|
||||
let label = CodeLabel::plain(symbol.name.clone(), None);
|
||||
|
||||
let abs_path = project.read(cx).absolute_path(&symbol.path, cx)?;
|
||||
let uri = MentionUri::Symbol {
|
||||
path: full_path.into(),
|
||||
path: abs_path,
|
||||
name: symbol.name.clone(),
|
||||
line_range: symbol.range.start.0.row..symbol.range.end.0.row,
|
||||
};
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue