WIP
This commit is contained in:
parent
3d1f522566
commit
cdd5cb16ed
14 changed files with 348 additions and 258 deletions
|
@ -1,4 +1,5 @@
|
|||
use super::base_keymap_setting::BaseKeymap;
|
||||
use client::telemetry::Telemetry;
|
||||
use fuzzy::{match_strings, StringMatch, StringMatchCandidate};
|
||||
use gpui::{
|
||||
actions, AppContext, DismissEvent, EventEmitter, FocusableView, Render, Task, View,
|
||||
|
@ -27,9 +28,10 @@ pub fn toggle(
|
|||
cx: &mut ViewContext<Workspace>,
|
||||
) {
|
||||
let fs = workspace.app_state().fs.clone();
|
||||
let telemetry = workspace.client().telemetry().clone();
|
||||
workspace.toggle_modal(cx, |cx| {
|
||||
BaseKeymapSelector::new(
|
||||
BaseKeymapSelectorDelegate::new(cx.view().downgrade(), fs, cx),
|
||||
BaseKeymapSelectorDelegate::new(cx.view().downgrade(), fs, telemetry, cx),
|
||||
cx,
|
||||
)
|
||||
});
|
||||
|
@ -73,6 +75,7 @@ pub struct BaseKeymapSelectorDelegate {
|
|||
view: WeakView<BaseKeymapSelector>,
|
||||
matches: Vec<StringMatch>,
|
||||
selected_index: usize,
|
||||
telemetry: Arc<Telemetry>,
|
||||
fs: Arc<dyn Fs>,
|
||||
}
|
||||
|
||||
|
@ -80,6 +83,7 @@ impl BaseKeymapSelectorDelegate {
|
|||
fn new(
|
||||
weak_view: WeakView<BaseKeymapSelector>,
|
||||
fs: Arc<dyn Fs>,
|
||||
telemetry: Arc<Telemetry>,
|
||||
cx: &mut ViewContext<BaseKeymapSelector>,
|
||||
) -> Self {
|
||||
let base = BaseKeymap::get(None, cx);
|
||||
|
@ -91,6 +95,7 @@ impl BaseKeymapSelectorDelegate {
|
|||
view: weak_view,
|
||||
matches: Vec::new(),
|
||||
selected_index,
|
||||
telemetry,
|
||||
fs,
|
||||
}
|
||||
}
|
||||
|
@ -172,6 +177,10 @@ impl PickerDelegate for BaseKeymapSelectorDelegate {
|
|||
fn confirm(&mut self, _: bool, cx: &mut ViewContext<Picker<BaseKeymapSelectorDelegate>>) {
|
||||
if let Some(selection) = self.matches.get(self.selected_index) {
|
||||
let base_keymap = BaseKeymap::from_names(&selection.string);
|
||||
|
||||
self.telemetry
|
||||
.report_setting_event("keymap", base_keymap.to_string());
|
||||
|
||||
update_settings_file::<BaseKeymap>(self.fs.clone(), cx, move |setting| {
|
||||
*setting = Some(base_keymap)
|
||||
});
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue