mirror of https://github.com/helix-editor/helix
Extract compositor & jobs into helix-view
parent
18381fcbc8
commit
11b8f068da
@ -0,0 +1,23 @@
|
||||
[package]
|
||||
name = "helix-graphics"
|
||||
version = "0.6.0"
|
||||
authors = ["Blaž Hrastnik <blaz@mxxn.io>"]
|
||||
edition = "2021"
|
||||
license = "MPL-2.0"
|
||||
repository = "https://github.com/helix-editor/helix"
|
||||
homepage = "https://helix-editor.com"
|
||||
|
||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/
|
||||
|
||||
[features]
|
||||
term = ["crossterm"]
|
||||
|
||||
[dependencies]
|
||||
bitflags = "1.3"
|
||||
serde = { version = "1.0", features = ["derive"] }
|
||||
|
||||
crossterm = { version = "0.23", optional = true }
|
||||
|
||||
# TODO: graphics.rs tests rely on this, but we should remove that
|
||||
# [target.'cfg(not(target_arch = "wasm32"))'.dev-dependencies]
|
||||
# helix-tui = { path = "../helix-tui" }
|
@ -1,40 +0,0 @@
|
||||
use crate::compositor::{Component, RenderContext};
|
||||
use helix_view::graphics::{Margin, Rect};
|
||||
use helix_view::info::Info;
|
||||
use tui::widgets::{Block, Borders, Paragraph, Widget};
|
||||
|
||||
impl Component for Info {
|
||||
fn render(&mut self, viewport: Rect, cx: &mut RenderContext<'_>) {
|
||||
let text_style = cx.editor.theme.get("ui.text.info");
|
||||
let popup_style = cx.editor.theme.get("ui.popup.info");
|
||||
|
||||
// Calculate the area of the terminal to modify. Because we want to
|
||||
// render at the bottom right, we use the viewport's width and height
|
||||
// which evaluate to the most bottom right coordinate.
|
||||
let width = self.width + 2 + 2; // +2 for border, +2 for margin
|
||||
let height = self.height + 2; // +2 for border
|
||||
let area = viewport.intersection(Rect::new(
|
||||
viewport.width.saturating_sub(width),
|
||||
viewport.height.saturating_sub(height + 2), // +2 for statusline
|
||||
width,
|
||||
height,
|
||||
));
|
||||
cx.surface.clear_with(area, popup_style);
|
||||
|
||||
let block = Block::default()
|
||||
.title(self.title.as_str())
|
||||
.borders(Borders::ALL)
|
||||
.border_style(popup_style);
|
||||
|
||||
let margin = Margin {
|
||||
vertical: 0,
|
||||
horizontal: 1,
|
||||
};
|
||||
let inner = block.inner(area).inner(&margin);
|
||||
block.render(area, cx.surface);
|
||||
|
||||
Paragraph::new(self.text.as_str())
|
||||
.style(text_style)
|
||||
.render(inner, cx.surface);
|
||||
}
|
||||
}
|
@ -1,6 +1,5 @@
|
||||
use helix_view::Editor;
|
||||
|
||||
use crate::compositor::Compositor;
|
||||
use crate::Editor;
|
||||
|
||||
use futures_util::future::{self, BoxFuture, Future, FutureExt};
|
||||
use futures_util::stream::{FuturesUnordered, StreamExt};
|
Loading…
Reference in New Issue