zed/crates/diagnostics/src/diagnostics.rs
Antonio Scandurra 85674ba506 WIP
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-12-13 16:46:35 +01:00

45 lines
1.2 KiB
Rust

use editor::{Editor, MultiBuffer};
use gpui::{elements::*, Entity, ModelHandle, RenderContext, View, ViewContext, ViewHandle};
use postage::watch;
use project::Project;
struct ProjectDiagnostics {
editor: ViewHandle<Editor>,
project: ModelHandle<Project>,
}
impl ProjectDiagnostics {
fn new(
project: ModelHandle<Project>,
settings: watch::Receiver<workspace::Settings>,
cx: &mut ViewContext<Self>,
) -> Self {
let mut buffer = cx.add_model(|cx| MultiBuffer::new(project.read(cx).replica_id(cx)));
for (path, diagnostics) in project.read(cx).diagnostics(cx) {}
Self {
editor: cx.add_view(|cx| {
Editor::for_buffer(
buffer.clone(),
editor::settings_builder(buffer.downgrade(), settings),
cx,
)
}),
project,
}
}
}
impl Entity for ProjectDiagnostics {
type Event = ();
}
impl View for ProjectDiagnostics {
fn ui_name() -> &'static str {
"ProjectDiagnostics"
}
fn render(&mut self, _: &mut RenderContext<Self>) -> ElementBox {
ChildView::new(self.editor.id()).boxed()
}
}