From ab8a9e912fbb73145d1ed703acb85fb77edd79a9 Mon Sep 17 00:00:00 2001 From: Nate Butler Date: Thu, 7 Sep 2023 16:19:06 -0400 Subject: [PATCH] Remove accidentally added files --- .../src/active_buffer_language.rs | 94 --------- .../src/language_selector.rs | 196 ------------------ 2 files changed, 290 deletions(-) delete mode 100644 crates/language_tools/language_selector/src/active_buffer_language.rs delete mode 100644 crates/language_tools/language_selector/src/language_selector.rs diff --git a/crates/language_tools/language_selector/src/active_buffer_language.rs b/crates/language_tools/language_selector/src/active_buffer_language.rs deleted file mode 100644 index 5ffcb13fba..0000000000 --- a/crates/language_tools/language_selector/src/active_buffer_language.rs +++ /dev/null @@ -1,94 +0,0 @@ -use editor::Editor; -use gpui::{ - elements::*, - platform::{CursorStyle, MouseButton}, - Entity, Subscription, View, ViewContext, ViewHandle, WeakViewHandle, -}; -use std::sync::Arc; -use workspace::{item::ItemHandle, StatusItemView, Workspace}; - -pub struct ActiveBufferLanguage { - active_language: Option>>, - workspace: WeakViewHandle, - _observe_active_editor: Option, -} - -impl ActiveBufferLanguage { - pub fn new(workspace: &Workspace) -> Self { - Self { - active_language: None, - workspace: workspace.weak_handle(), - _observe_active_editor: None, - } - } - - fn update_language(&mut self, editor: ViewHandle, cx: &mut ViewContext) { - self.active_language = Some(None); - - let editor = editor.read(cx); - if let Some((_, buffer, _)) = editor.active_excerpt(cx) { - if let Some(language) = buffer.read(cx).language() { - self.active_language = Some(Some(language.name())); - } - } - - cx.notify(); - } -} - -impl Entity for ActiveBufferLanguage { - type Event = (); -} - -impl View for ActiveBufferLanguage { - fn ui_name() -> &'static str { - "ActiveBufferLanguage" - } - - fn render(&mut self, cx: &mut ViewContext) -> AnyElement { - if let Some(active_language) = self.active_language.as_ref() { - let active_language_text = if let Some(active_language_text) = active_language { - active_language_text.to_string() - } else { - "Unknown".to_string() - }; - - MouseEventHandler::new::(0, cx, |state, cx| { - let theme = &theme::current(cx).workspace.status_bar; - let style = theme.active_language.style_for(state); - Label::new(active_language_text, style.text.clone()) - .contained() - .with_style(style.container) - }) - .with_cursor_style(CursorStyle::PointingHand) - .on_click(MouseButton::Left, |_, this, cx| { - if let Some(workspace) = this.workspace.upgrade(cx) { - workspace.update(cx, |workspace, cx| { - crate::toggle(workspace, &Default::default(), cx) - }); - } - }) - .into_any() - } else { - Empty::new().into_any() - } - } -} - -impl StatusItemView for ActiveBufferLanguage { - fn set_active_pane_item( - &mut self, - active_pane_item: Option<&dyn ItemHandle>, - cx: &mut ViewContext, - ) { - if let Some(editor) = active_pane_item.and_then(|item| item.act_as::(cx)) { - self._observe_active_editor = Some(cx.observe(&editor, Self::update_language)); - self.update_language(editor, cx); - } else { - self.active_language = None; - self._observe_active_editor = None; - } - - cx.notify(); - } -} diff --git a/crates/language_tools/language_selector/src/language_selector.rs b/crates/language_tools/language_selector/src/language_selector.rs deleted file mode 100644 index b5336d5b3b..0000000000 --- a/crates/language_tools/language_selector/src/language_selector.rs +++ /dev/null @@ -1,196 +0,0 @@ -mod active_buffer_language; - -pub use active_buffer_language::ActiveBufferLanguage; -use anyhow::anyhow; -use editor::Editor; -use fuzzy::{match_strings, StringMatch, StringMatchCandidate}; -use gpui::{actions, elements::*, AppContext, ModelHandle, MouseState, ViewContext}; -use language::{Buffer, LanguageRegistry}; -use picker::{Picker, PickerDelegate, PickerEvent}; -use project::Project; -use std::sync::Arc; -use util::ResultExt; -use workspace::Workspace; - -actions!(language_selector, [Toggle]); - -pub fn init(cx: &mut AppContext) { - Picker::::init(cx); - cx.add_action(toggle); -} - -pub fn toggle( - workspace: &mut Workspace, - _: &Toggle, - cx: &mut ViewContext, -) -> Option<()> { - let (_, buffer, _) = workspace - .active_item(cx)? - .act_as::(cx)? - .read(cx) - .active_excerpt(cx)?; - workspace.toggle_modal(cx, |workspace, cx| { - let registry = workspace.app_state().languages.clone(); - cx.add_view(|cx| { - Picker::new( - LanguageSelectorDelegate::new(buffer, workspace.project().clone(), registry), - cx, - ) - }) - }); - Some(()) -} - -pub struct LanguageSelectorDelegate { - buffer: ModelHandle, - project: ModelHandle, - language_registry: Arc, - candidates: Vec, - matches: Vec, - selected_index: usize, -} - -impl LanguageSelectorDelegate { - fn new( - buffer: ModelHandle, - project: ModelHandle, - language_registry: Arc, - ) -> Self { - let candidates = language_registry - .language_names() - .into_iter() - .enumerate() - .map(|(candidate_id, name)| StringMatchCandidate::new(candidate_id, name)) - .collect::>(); - let mut matches = candidates - .iter() - .map(|candidate| StringMatch { - candidate_id: candidate.id, - score: 0., - positions: Default::default(), - string: candidate.string.clone(), - }) - .collect::>(); - matches.sort_unstable_by(|mat1, mat2| mat1.string.cmp(&mat2.string)); - - Self { - buffer, - project, - language_registry, - candidates, - matches, - selected_index: 0, - } - } -} - -impl PickerDelegate for LanguageSelectorDelegate { - fn placeholder_text(&self) -> Arc { - "Select a language...".into() - } - - fn match_count(&self) -> usize { - self.matches.len() - } - - fn confirm(&mut self, _: bool, cx: &mut ViewContext>) { - if let Some(mat) = self.matches.get(self.selected_index) { - let language_name = &self.candidates[mat.candidate_id].string; - let language = self.language_registry.language_for_name(language_name); - let project = self.project.downgrade(); - let buffer = self.buffer.downgrade(); - cx.spawn(|_, mut cx| async move { - let language = language.await?; - let project = project - .upgrade(&cx) - .ok_or_else(|| anyhow!("project was dropped"))?; - let buffer = buffer - .upgrade(&cx) - .ok_or_else(|| anyhow!("buffer was dropped"))?; - project.update(&mut cx, |project, cx| { - project.set_language_for_buffer(&buffer, language, cx); - }); - anyhow::Ok(()) - }) - .detach_and_log_err(cx); - } - - cx.emit(PickerEvent::Dismiss); - } - - fn dismissed(&mut self, _cx: &mut ViewContext>) {} - - fn selected_index(&self) -> usize { - self.selected_index - } - - fn set_selected_index(&mut self, ix: usize, _: &mut ViewContext>) { - self.selected_index = ix; - } - - fn update_matches( - &mut self, - query: String, - cx: &mut ViewContext>, - ) -> gpui::Task<()> { - let background = cx.background().clone(); - let candidates = self.candidates.clone(); - cx.spawn(|this, mut cx| async move { - let matches = if query.is_empty() { - candidates - .into_iter() - .enumerate() - .map(|(index, candidate)| StringMatch { - candidate_id: index, - string: candidate.string, - positions: Vec::new(), - score: 0.0, - }) - .collect() - } else { - match_strings( - &candidates, - &query, - false, - 100, - &Default::default(), - background, - ) - .await - }; - - this.update(&mut cx, |this, cx| { - let delegate = this.delegate_mut(); - delegate.matches = matches; - delegate.selected_index = delegate - .selected_index - .min(delegate.matches.len().saturating_sub(1)); - cx.notify(); - }) - .log_err(); - }) - } - - fn render_match( - &self, - ix: usize, - mouse_state: &mut MouseState, - selected: bool, - cx: &AppContext, - ) -> AnyElement> { - let theme = theme::current(cx); - let mat = &self.matches[ix]; - let style = theme.picker.item.in_state(selected).style_for(mouse_state); - let buffer_language_name = self.buffer.read(cx).language().map(|l| l.name()); - let mut label = mat.string.clone(); - if buffer_language_name.as_deref() == Some(mat.string.as_str()) { - label.push_str(" (current)"); - } - - Label::new(label, style.label.clone()) - .with_highlights(mat.positions.clone()) - .contained() - .with_style(style.container) - .into_any() - } -}