Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'helix-view/src/lib.rs')
| -rw-r--r-- | helix-view/src/lib.rs | 48 |
1 files changed, 26 insertions, 22 deletions
diff --git a/helix-view/src/lib.rs b/helix-view/src/lib.rs index a7e9f461..9cf36ae0 100644 --- a/helix-view/src/lib.rs +++ b/helix-view/src/lib.rs @@ -1,19 +1,20 @@ #[macro_use] pub mod macros; -pub mod annotations; pub mod clipboard; pub mod document; pub mod editor; -pub mod events; -pub mod expansion; +pub mod env; pub mod graphics; pub mod gutter; -pub mod handlers; +pub mod handlers { + pub mod dap; + pub mod lsp; +} +pub mod base64; pub mod info; pub mod input; pub mod keyboard; -pub mod register; pub mod theme; pub mod tree; pub mod view; @@ -47,12 +48,14 @@ pub enum Align { Bottom, } -pub fn align_view(doc: &mut Document, view: &View, align: Align) { - let doc_text = doc.text().slice(..); - let cursor = doc.selection(view.id).primary().cursor(doc_text); - let viewport = view.inner_area(doc); - let last_line_height = viewport.height.saturating_sub(1); - let mut view_offset = doc.view_offset(view.id); +pub fn align_view(doc: &Document, view: &mut View, align: Align) { + let pos = doc + .selection(view.id) + .primary() + .cursor(doc.text().slice(..)); + let line = doc.text().char_to_line(pos); + + let last_line_height = view.inner_height().saturating_sub(1); let relative = match align { Align::Center => last_line_height / 2, @@ -60,20 +63,21 @@ pub fn align_view(doc: &mut Document, view: &View, align: Align) { Align::Bottom => last_line_height, }; - let text_fmt = doc.text_format(viewport.width, None); - (view_offset.anchor, view_offset.vertical_offset) = char_idx_at_visual_offset( - doc_text, - cursor, - -(relative as isize), - 0, - &text_fmt, - &view.text_annotations(doc, None), - ); - doc.set_view_offset(view.id, view_offset); + view.offset.row = line.saturating_sub(relative); +} + +/// Applies a [`helix_core::Transaction`] to the given [`Document`] +/// and [`View`]. +pub fn apply_transaction( + transaction: &helix_core::Transaction, + doc: &mut Document, + view: &View, +) -> bool { + // TODO remove this helper function. Just call Document::apply everywhere directly. + doc.apply(transaction, view.id) } pub use document::Document; pub use editor::Editor; -use helix_core::char_idx_at_visual_offset; pub use theme::Theme; pub use view::View; |