Overhaul inline assistant (#12846)

This pull request introduces a new diff mechanism that helps users
understand exactly which lines were changed by the LLM.

Release Notes:

- N/A
This commit is contained in:
Antonio Scandurra 2024-06-11 12:39:45 +02:00 committed by GitHub
parent 3722275cfa
commit 98659eabf1
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
14 changed files with 824 additions and 176 deletions

View file

@ -52,8 +52,14 @@ use multi_buffer::{
ToOffset, ToPoint,
};
use serde::Deserialize;
use std::ops::Add;
use std::{any::TypeId, borrow::Cow, fmt::Debug, num::NonZeroU32, ops::Range, sync::Arc};
use std::{
any::TypeId,
borrow::Cow,
fmt::Debug,
num::NonZeroU32,
ops::{Add, Range, Sub},
sync::Arc,
};
use sum_tree::{Bias, TreeMap};
use tab_map::{TabMap, TabSnapshot};
use text::LineIndent;
@ -1027,6 +1033,14 @@ impl Add for DisplayRow {
}
}
impl Sub for DisplayRow {
type Output = Self;
fn sub(self, other: Self) -> Self::Output {
DisplayRow(self.0 - other.0)
}
}
impl DisplayPoint {
pub fn new(row: DisplayRow, column: u32) -> Self {
Self(BlockPoint(Point::new(row.0, column)))