This commit is contained in:
Antonio Scandurra 2023-11-14 19:42:07 +01:00
parent 428be43710
commit 48b3a90fbf
3 changed files with 37 additions and 3 deletions

View file

@ -2,7 +2,7 @@ use super::{
wrap_map::{self, WrapEdit, WrapPoint, WrapSnapshot},
Highlights,
};
use crate::{Anchor, Editor, ExcerptId, ExcerptRange, ToPoint as _};
use crate::{Anchor, Editor, EditorStyle, ExcerptId, ExcerptRange, ToPoint as _};
use collections::{Bound, HashMap, HashSet};
use gpui::{AnyElement, Pixels, ViewContext};
use language::{BufferSnapshot, Chunk, Patch, Point};
@ -88,6 +88,7 @@ pub struct BlockContext<'a, 'b> {
pub em_width: Pixels,
pub line_height: Pixels,
pub block_id: usize,
pub editor_style: &'b EditorStyle,
}
#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord)]

View file

@ -7796,9 +7796,35 @@ impl Editor {
position: range.start.clone(),
height: 1,
render: Arc::new({
let editor = rename_editor.clone();
let rename_editor = rename_editor.clone();
move |cx: &mut BlockContext| {
div().pl(cx.anchor_x).child(editor.clone()).render()
let text_style = if let Some(highlight_style) = old_highlight_id
.and_then(|h| h.style(&cx.editor_style.syntax))
{
cx.editor_style
.text
.clone()
.highlight(highlight_style)
.unwrap_or_else(|_| cx.editor_style.text.clone())
} else {
cx.editor_style.text.clone()
};
div().pl(cx.anchor_x).child(with_view(
&rename_editor,
|_, _| {
EditorElement::new(EditorStyle {
background: cx.theme().system().transparent,
local_player: cx.editor_style.local_player,
text: text_style,
scrollbar_width: cx.editor_style.scrollbar_width,
syntax: cx.editor_style.syntax.clone(),
diagnostic_style: cx
.editor_style
.diagnostic_style
.clone(),
})
},
))
}
}),
disposition: BlockDisposition::Below,

View file

@ -2010,6 +2010,7 @@ impl EditorElement {
gutter_width,
em_width,
block_id,
editor_style: &self.style,
})
}
TransformBlock::ExcerptHeader {
@ -2658,6 +2659,12 @@ impl Element<Editor> for EditorElement {
}
}
impl Component<Editor> for EditorElement {
fn render(self) -> AnyElement<Editor> {
AnyElement::new(self)
}
}
// impl EditorElement {
// type LayoutState = LayoutState;
// type PaintState = ();