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::compositor::Compositor;
|
||||||
|
use crate::Editor;
|
||||||
|
|
||||||
use futures_util::future::{self, BoxFuture, Future, FutureExt};
|
use futures_util::future::{self, BoxFuture, Future, FutureExt};
|
||||||
use futures_util::stream::{FuturesUnordered, StreamExt};
|
use futures_util::stream::{FuturesUnordered, StreamExt};
|
Loading…
Reference in New Issue