Mention possible run options in the task modal placeholder (#8449)

Release Notes:

- Improved run task modal's placeholder

---------

Co-authored-by: Piotr Osiewicz <24362066+osiewicz@users.noreply.github.com>
This commit is contained in:
Kirill Bulatov 2024-02-27 00:04:56 +02:00 committed by GitHub
parent 009384f948
commit a0c8debd35
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 24 additions and 20 deletions

View file

@ -1124,6 +1124,22 @@ impl<'a> WindowContext<'a> {
false
}
/// Represent this action as a key binding string, to display in the UI.
pub fn keystroke_text_for(&self, action: &dyn Action) -> String {
self.bindings_for_action(action)
.into_iter()
.next()
.map(|binding| {
binding
.keystrokes()
.iter()
.map(ToString::to_string)
.collect::<Vec<_>>()
.join(" ")
})
.unwrap_or_else(|| action.name().to_string())
}
/// Dispatch a mouse or keyboard event on the window.
#[profiling::function]
pub fn dispatch_event(&mut self, event: PlatformInput) -> bool {

View file

@ -147,24 +147,10 @@ impl PickerDelegate for RecentProjectsDelegate {
type ListItem = ListItem;
fn placeholder_text(&self, cx: &mut WindowContext) -> Arc<str> {
let action_binding_text = |action: &dyn gpui::Action| {
cx.bindings_for_action(action)
.into_iter()
.next()
.map(|binding| {
binding
.keystrokes()
.into_iter()
.map(ToString::to_string)
.collect::<Vec<_>>()
.join(" ")
})
.unwrap_or_else(|| format!("{action:?}"))
};
Arc::from(format!(
"{} reuses the window, {} opens a new one",
action_binding_text(&menu::Confirm),
action_binding_text(&menu::SecondaryConfirm),
cx.keystroke_text_for(&menu::Confirm),
cx.keystroke_text_for(&menu::SecondaryConfirm),
))
}

View file

@ -23,7 +23,6 @@ pub(crate) struct TasksModalDelegate {
candidates: Vec<Arc<dyn Task>>,
matches: Vec<StringMatch>,
selected_index: usize,
placeholder_text: Arc<str>,
workspace: WeakView<Workspace>,
last_prompt: String,
}
@ -36,7 +35,6 @@ impl TasksModalDelegate {
candidates: Vec::new(),
matches: Vec::new(),
selected_index: 0,
placeholder_text: Arc::from("Select task..."),
last_prompt: String::default(),
}
}
@ -115,8 +113,12 @@ impl PickerDelegate for TasksModalDelegate {
self.selected_index = ix;
}
fn placeholder_text(&self, _cx: &mut WindowContext) -> Arc<str> {
self.placeholder_text.clone()
fn placeholder_text(&self, cx: &mut WindowContext) -> Arc<str> {
Arc::from(format!(
"{} runs the selected task, {} spawns a bash-like task from the prompt",
cx.keystroke_text_for(&menu::Confirm),
cx.keystroke_text_for(&menu::SecondaryConfirm),
))
}
fn update_matches(