This commit is contained in:
Antonio Scandurra 2023-12-06 12:12:28 +01:00
parent d86da04584
commit b29cea287b
4 changed files with 40 additions and 35 deletions

View file

@ -2835,7 +2835,7 @@ impl InlineAssistant {
) )
})?; })?;
if answer.next().await == Some(0) { if answer.await? == 0 {
this.update(&mut cx, |this, _| { this.update(&mut cx, |this, _| {
this.semantic_permissioned = Some(true); this.semantic_permissioned = Some(true);
})?; })?;
@ -2875,7 +2875,7 @@ impl InlineAssistant {
// This has to be updated to accomodate for semantic_permissions // This has to be updated to accomodate for semantic_permissions
if semantic_permissioned.await.unwrap_or(false) { if semantic_permissioned.await.unwrap_or(false) {
semantic_index semantic_index
.update(&mut cx, |index, cx| index.index_project(project, cx)) .update(&mut cx, |index, cx| index.index_project(project, cx))?
.await .await
} else { } else {
Err(anyhow!("project is not permissioned for semantic indexing")) Err(anyhow!("project is not permissioned for semantic indexing"))
@ -3453,7 +3453,7 @@ fn report_assistant_event(
.default_open_ai_model .default_open_ai_model
.clone(); .clone();
let telemetry_settings = TelemetrySettings::get_global(cx); let telemetry_settings = TelemetrySettings::get_global(cx).clone();
telemetry.report_assistant_event( telemetry.report_assistant_event(
telemetry_settings, telemetry_settings,

View file

@ -109,13 +109,13 @@ impl Codegen {
.unwrap_or_else(|| snapshot.indent_size_for_line(selection_start.row)); .unwrap_or_else(|| snapshot.indent_size_for_line(selection_start.row));
let response = self.provider.complete(prompt); let response = self.provider.complete(prompt);
self.generation = cx.spawn_weak(|this, mut cx| { self.generation = cx.spawn(|this, mut cx| {
async move { async move {
let generate = async { let generate = async {
let mut edit_start = range.start.to_offset(&snapshot); let mut edit_start = range.start.to_offset(&snapshot);
let (mut hunks_tx, mut hunks_rx) = mpsc::channel(1); let (mut hunks_tx, mut hunks_rx) = mpsc::channel(1);
let diff = cx.background().spawn(async move { let diff = cx.background_executor().spawn(async move {
let chunks = strip_invalid_spans_from_codeblock(response.await?); let chunks = strip_invalid_spans_from_codeblock(response.await?);
futures::pin_mut!(chunks); futures::pin_mut!(chunks);
let mut diff = StreamingDiff::new(selected_text.to_string()); let mut diff = StreamingDiff::new(selected_text.to_string());
@ -181,7 +181,7 @@ impl Codegen {
}); });
while let Some(hunks) = hunks_rx.next().await { while let Some(hunks) = hunks_rx.next().await {
let this = if let Some(this) = this.upgrade(&cx) { let this = if let Some(this) = this.upgrade() {
this this
} else { } else {
break; break;
@ -251,17 +251,16 @@ impl Codegen {
}; };
let result = generate.await; let result = generate.await;
if let Some(this) = this.upgrade(&cx) { this.update(&mut cx, |this, cx| {
this.update(&mut cx, |this, cx| { this.last_equal_ranges.clear();
this.last_equal_ranges.clear(); this.idle = true;
this.idle = true; if let Err(error) = result {
if let Err(error) = result { this.error = Some(error);
this.error = Some(error); }
} cx.emit(Event::Finished);
cx.emit(Event::Finished); cx.notify();
cx.notify(); })
}); .ok();
}
} }
}); });
self.error.take(); self.error.take();
@ -370,7 +369,7 @@ mod tests {
use super::*; use super::*;
use ai::test::FakeCompletionProvider; use ai::test::FakeCompletionProvider;
use futures::stream::{self}; use futures::stream::{self};
use gpui::TestAppContext; use gpui::{Context, TestAppContext};
use indoc::indoc; use indoc::indoc;
use language::{language_settings, tree_sitter_rust, Buffer, Language, LanguageConfig, Point}; use language::{language_settings, tree_sitter_rust, Buffer, Language, LanguageConfig, Point};
use rand::prelude::*; use rand::prelude::*;
@ -390,7 +389,7 @@ mod tests {
#[gpui::test(iterations = 10)] #[gpui::test(iterations = 10)]
async fn test_transform_autoindent(cx: &mut TestAppContext, mut rng: StdRng) { async fn test_transform_autoindent(cx: &mut TestAppContext, mut rng: StdRng) {
cx.set_global(cx.read(SettingsStore::test)); cx.set_global(cx.update(SettingsStore::test));
cx.update(language_settings::init); cx.update(language_settings::init);
let text = indoc! {" let text = indoc! {"
@ -402,14 +401,14 @@ mod tests {
} }
"}; "};
let buffer = let buffer =
cx.add_model(|cx| Buffer::new(0, 0, text).with_language(Arc::new(rust_lang()), cx)); cx.build_model(|cx| Buffer::new(0, 0, text).with_language(Arc::new(rust_lang()), cx));
let buffer = cx.add_model(|cx| MultiBuffer::singleton(buffer, cx)); let buffer = cx.build_model(|cx| MultiBuffer::singleton(buffer, cx));
let range = buffer.read_with(cx, |buffer, cx| { let range = buffer.read_with(cx, |buffer, cx| {
let snapshot = buffer.snapshot(cx); let snapshot = buffer.snapshot(cx);
snapshot.anchor_before(Point::new(1, 0))..snapshot.anchor_after(Point::new(4, 5)) snapshot.anchor_before(Point::new(1, 0))..snapshot.anchor_after(Point::new(4, 5))
}); });
let provider = Arc::new(FakeCompletionProvider::new()); let provider = Arc::new(FakeCompletionProvider::new());
let codegen = cx.add_model(|cx| { let codegen = cx.build_model(|cx| {
Codegen::new( Codegen::new(
buffer.clone(), buffer.clone(),
CodegenKind::Transform { range }, CodegenKind::Transform { range },
@ -459,7 +458,7 @@ mod tests {
cx: &mut TestAppContext, cx: &mut TestAppContext,
mut rng: StdRng, mut rng: StdRng,
) { ) {
cx.set_global(cx.read(SettingsStore::test)); cx.set_global(cx.update(SettingsStore::test));
cx.update(language_settings::init); cx.update(language_settings::init);
let text = indoc! {" let text = indoc! {"
@ -468,14 +467,14 @@ mod tests {
} }
"}; "};
let buffer = let buffer =
cx.add_model(|cx| Buffer::new(0, 0, text).with_language(Arc::new(rust_lang()), cx)); cx.build_model(|cx| Buffer::new(0, 0, text).with_language(Arc::new(rust_lang()), cx));
let buffer = cx.add_model(|cx| MultiBuffer::singleton(buffer, cx)); let buffer = cx.build_model(|cx| MultiBuffer::singleton(buffer, cx));
let position = buffer.read_with(cx, |buffer, cx| { let position = buffer.read_with(cx, |buffer, cx| {
let snapshot = buffer.snapshot(cx); let snapshot = buffer.snapshot(cx);
snapshot.anchor_before(Point::new(1, 6)) snapshot.anchor_before(Point::new(1, 6))
}); });
let provider = Arc::new(FakeCompletionProvider::new()); let provider = Arc::new(FakeCompletionProvider::new());
let codegen = cx.add_model(|cx| { let codegen = cx.build_model(|cx| {
Codegen::new( Codegen::new(
buffer.clone(), buffer.clone(),
CodegenKind::Generate { position }, CodegenKind::Generate { position },
@ -524,7 +523,7 @@ mod tests {
cx: &mut TestAppContext, cx: &mut TestAppContext,
mut rng: StdRng, mut rng: StdRng,
) { ) {
cx.set_global(cx.read(SettingsStore::test)); cx.set_global(cx.update(SettingsStore::test));
cx.update(language_settings::init); cx.update(language_settings::init);
let text = concat!( let text = concat!(
@ -533,14 +532,14 @@ mod tests {
"}\n" // "}\n" //
); );
let buffer = let buffer =
cx.add_model(|cx| Buffer::new(0, 0, text).with_language(Arc::new(rust_lang()), cx)); cx.build_model(|cx| Buffer::new(0, 0, text).with_language(Arc::new(rust_lang()), cx));
let buffer = cx.add_model(|cx| MultiBuffer::singleton(buffer, cx)); let buffer = cx.build_model(|cx| MultiBuffer::singleton(buffer, cx));
let position = buffer.read_with(cx, |buffer, cx| { let position = buffer.read_with(cx, |buffer, cx| {
let snapshot = buffer.snapshot(cx); let snapshot = buffer.snapshot(cx);
snapshot.anchor_before(Point::new(1, 2)) snapshot.anchor_before(Point::new(1, 2))
}); });
let provider = Arc::new(FakeCompletionProvider::new()); let provider = Arc::new(FakeCompletionProvider::new());
let codegen = cx.add_model(|cx| { let codegen = cx.build_model(|cx| {
Codegen::new( Codegen::new(
buffer.clone(), buffer.clone(),
CodegenKind::Generate { position }, CodegenKind::Generate { position },

View file

@ -176,7 +176,7 @@ pub(crate) mod tests {
use super::*; use super::*;
use std::sync::Arc; use std::sync::Arc;
use gpui::AppContext; use gpui::{AppContext, Context};
use indoc::indoc; use indoc::indoc;
use language::{language_settings, tree_sitter_rust, Buffer, Language, LanguageConfig, Point}; use language::{language_settings, tree_sitter_rust, Buffer, Language, LanguageConfig, Point};
use settings::SettingsStore; use settings::SettingsStore;
@ -253,7 +253,7 @@ pub(crate) mod tests {
} }
"}; "};
let buffer = let buffer =
cx.add_model(|cx| Buffer::new(0, 0, text).with_language(Arc::new(rust_lang()), cx)); cx.build_model(|cx| Buffer::new(0, 0, text).with_language(Arc::new(rust_lang()), cx));
let snapshot = buffer.read(cx).snapshot(); let snapshot = buffer.read(cx).snapshot();
assert_eq!( assert_eq!(

View file

@ -10,9 +10,9 @@ use collections::HashMap;
use editor::{Editor, EditorMode}; use editor::{Editor, EditorMode};
use futures::channel::oneshot; use futures::channel::oneshot;
use gpui::{ use gpui::{
actions, div, red, Action, AppContext, Div, EventEmitter, InteractiveElement as _, IntoElement, actions, div, red, Action, AppContext, Div, EventEmitter, FocusableView,
ParentElement as _, Render, Styled, Subscription, Task, View, ViewContext, VisualContext as _, InteractiveElement as _, IntoElement, ParentElement as _, Render, Styled, Subscription, Task,
WeakView, WindowContext, View, ViewContext, VisualContext as _, WeakView, WindowContext,
}; };
use project::search::SearchQuery; use project::search::SearchQuery;
use serde::Deserialize; use serde::Deserialize;
@ -251,6 +251,12 @@ impl Render for BufferSearchBar {
} }
} }
impl FocusableView for BufferSearchBar {
fn focus_handle(&self, cx: &AppContext) -> gpui::FocusHandle {
self.query_editor.focus_handle(cx)
}
}
impl ToolbarItemView for BufferSearchBar { impl ToolbarItemView for BufferSearchBar {
fn set_active_pane_item( fn set_active_pane_item(
&mut self, &mut self,