diff options
Diffstat (limited to 'helix-view/src/editor.rs')
-rw-r--r-- | helix-view/src/editor.rs | 28 |
1 files changed, 26 insertions, 2 deletions
diff --git a/helix-view/src/editor.rs b/helix-view/src/editor.rs index 7e8548e7..e5ba0d51 100644 --- a/helix-view/src/editor.rs +++ b/helix-view/src/editor.rs @@ -18,6 +18,26 @@ pub use helix_core::register::Registers; use helix_core::syntax; use helix_core::Position; +use serde::Deserialize; + +#[derive(Debug, Clone, PartialEq, Deserialize)] +#[serde(rename_all = "kebab-case")] +pub struct Config { + /// Padding to keep between the edge of the screen and the cursor when scrolling. Defaults to 5. + pub scrolloff: usize, + /// Mouse support. Defaults to true. + pub mouse: bool, +} + +impl Default for Config { + fn default() -> Self { + Self { + scrolloff: 5, + mouse: true, + } + } +} + #[derive(Debug)] pub struct Editor { pub tree: Tree, @@ -33,6 +53,8 @@ pub struct Editor { pub theme_loader: Arc<theme::Loader>, pub status_msg: Option<(String, Severity)>, + + pub config: Config, } #[derive(Debug, Copy, Clone)] @@ -48,6 +70,7 @@ impl Editor { mut area: Rect, themes: Arc<theme::Loader>, config_loader: Arc<syntax::Loader>, + config: Config, ) -> Self { let language_servers = helix_lsp::Registry::new(); @@ -66,6 +89,7 @@ impl Editor { registers: Registers::default(), clipboard_provider: get_clipboard_provider(), status_msg: None, + config, } } @@ -108,7 +132,7 @@ impl Editor { fn _refresh(&mut self) { for (view, _) in self.tree.views_mut() { let doc = &self.documents[view.doc]; - view.ensure_cursor_in_view(doc) + view.ensure_cursor_in_view(doc, self.config.scrolloff) } } @@ -267,7 +291,7 @@ impl Editor { pub fn ensure_cursor_in_view(&mut self, id: ViewId) { let view = self.tree.get_mut(id); let doc = &self.documents[view.doc]; - view.ensure_cursor_in_view(doc) + view.ensure_cursor_in_view(doc, self.config.scrolloff) } pub fn document(&self, id: DocumentId) -> Option<&Document> { |