add function to extract buffer dimensions

pull/8675/merge^2
Matt Paras 2024-11-14 22:12:01 -08:00
parent 11338b9bbb
commit 72dc7e13d5
2 changed files with 19 additions and 0 deletions

View File

@ -857,6 +857,10 @@ fn languages_api(engine: &mut Engine, generate_sources: bool) {
todo!() todo!()
} }
// fn test(ctx: &mut Context) {
// ctx.editor.syn_loader.load()
// }
// TODO: // TODO:
// This isn't the best API since it pretty much requires deserializing // This isn't the best API since it pretty much requires deserializing
// the whole theme model each time. While its not _horrible_, it is // the whole theme model each time. While its not _horrible_, it is
@ -912,6 +916,11 @@ fn string_to_color(string: SteelString) -> Result<Color, anyhow::Error> {
helix_view::theme::ThemePalette::string_to_rgb(string.as_str()).map_err(anyhow::Error::msg) helix_view::theme::ThemePalette::string_to_rgb(string.as_str()).map_err(anyhow::Error::msg)
} }
fn current_buffer_area(cx: &mut Context) -> Option<helix_view::graphics::Rect> {
let focus = cx.editor.tree.focus;
cx.editor.tree.view_id_area(focus)
}
fn load_editor_api(engine: &mut Engine, generate_sources: bool) { fn load_editor_api(engine: &mut Engine, generate_sources: bool) {
let mut module = BuiltInModule::new("helix/core/editor"); let mut module = BuiltInModule::new("helix/core/editor");
@ -962,6 +971,8 @@ fn load_editor_api(engine: &mut Engine, generate_sources: bool) {
}, },
); );
module.register_fn("editor-focused-buffer-area", current_buffer_area);
if generate_sources { if generate_sources {
let mut builtin_editor_command_module = let mut builtin_editor_command_module =
"(require-builtin helix/core/editor as helix.)".to_string(); "(require-builtin helix/core/editor as helix.)".to_string();
@ -998,6 +1009,7 @@ fn load_editor_api(engine: &mut Engine, generate_sources: bool) {
template_function_arity_0("cx->themes"); template_function_arity_0("cx->themes");
template_function_arity_0("editor-all-documents"); template_function_arity_0("editor-all-documents");
template_function_arity_0("cx->cursor"); template_function_arity_0("cx->cursor");
template_function_arity_0("editor-focused-buffer-area");
let mut template_function_arity_1 = |name: &str| { let mut template_function_arity_1 = |name: &str| {
builtin_editor_command_module.push_str(&format!( builtin_editor_command_module.push_str(&format!(

View File

@ -669,6 +669,13 @@ impl Tree {
pub fn area(&self) -> Rect { pub fn area(&self) -> Rect {
self.area self.area
} }
pub fn view_id_area(&self, id: ViewId) -> Option<Rect> {
self.nodes.get(id).map(|node| match &node.content {
Content::View(v) => v.area,
Content::Container(c) => c.area,
})
}
} }
#[derive(Debug)] #[derive(Debug)]