Rework inline assistant

This commit is contained in:
Antonio Scandurra
2023-08-25 11:39:27 +02:00
parent b6035ee6a6
commit c1bd035875
14 changed files with 600 additions and 438 deletions
+2 -2
View File
@@ -8209,7 +8209,7 @@ impl View for Editor {
"Editor"
}
fn focus_in(&mut self, _: AnyViewHandle, cx: &mut ViewContext<Self>) {
fn focus_in(&mut self, focused: AnyViewHandle, cx: &mut ViewContext<Self>) {
if cx.is_self_focused() {
let focused_event = EditorFocused(cx.handle());
cx.emit(Event::Focused);
@@ -8217,7 +8217,7 @@ impl View for Editor {
}
if let Some(rename) = self.pending_rename.as_ref() {
cx.focus(&rename.editor);
} else {
} else if cx.is_self_focused() || !focused.is::<Editor>() {
if !self.focused {
self.blink_manager.update(cx, BlinkManager::enable);
}
+14 -2
View File
@@ -626,7 +626,7 @@ impl MultiBuffer {
buffer.merge_transactions(transaction, destination)
});
} else {
if let Some(transaction) = self.history.remove_transaction(transaction) {
if let Some(transaction) = self.history.forget(transaction) {
if let Some(destination) = self.history.transaction_mut(destination) {
for (buffer_id, buffer_transaction_id) in transaction.buffer_transactions {
if let Some(destination_buffer_transaction_id) =
@@ -822,6 +822,18 @@ impl MultiBuffer {
None
}
pub fn undo_and_forget(&mut self, transaction_id: TransactionId, cx: &mut ModelContext<Self>) {
if let Some(buffer) = self.as_singleton() {
buffer.update(cx, |buffer, cx| buffer.undo_and_forget(transaction_id, cx));
} else if let Some(transaction) = self.history.forget(transaction_id) {
for (buffer_id, transaction_id) in transaction.buffer_transactions {
if let Some(BufferState { buffer, .. }) = self.buffers.borrow().get(&buffer_id) {
buffer.update(cx, |buffer, cx| buffer.undo_and_forget(transaction_id, cx));
}
}
}
}
pub fn stream_excerpts_with_context_lines(
&mut self,
excerpts: Vec<(ModelHandle<Buffer>, Vec<Range<text::Anchor>>)>,
@@ -3369,7 +3381,7 @@ impl History {
}
}
fn remove_transaction(&mut self, transaction_id: TransactionId) -> Option<Transaction> {
fn forget(&mut self, transaction_id: TransactionId) -> Option<Transaction> {
if let Some(ix) = self
.undo_stack
.iter()