From f0d9bc06e1bdbbc832fa3fd2dc2d9a478713542c Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 16 Nov 2023 09:00:48 -0700 Subject: [PATCH] Add auto-indent support --- Cargo.lock | 2 +- src/config.rs | 2 ++ src/main.rs | 5 +++++ src/menu.rs | 6 +++++- src/tab.rs | 1 + 5 files changed, 14 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 8556947..1e7875c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -897,7 +897,7 @@ dependencies = [ [[package]] name = "cosmic-text" version = "0.10.0" -source = "git+https://github.com/pop-os/cosmic-text?branch=vi-editor#1207fd6d804b76b52137a368a58b27150eb865b8" +source = "git+https://github.com/pop-os/cosmic-text?branch=vi-editor#7d21045b2f93a382f7ddea209b8f28204888d418" dependencies = [ "cosmic_undo_2", "fontdb 0.16.0", diff --git a/src/config.rs b/src/config.rs index bd1f167..c781c44 100644 --- a/src/config.rs +++ b/src/config.rs @@ -142,6 +142,7 @@ impl fmt::Display for KeyBind { #[derive(Clone, CosmicConfigEntry, Debug, Deserialize, Eq, PartialEq, Serialize)] pub struct Config { pub app_theme: AppTheme, + pub auto_indent: bool, pub font_name: String, pub font_size: u16, pub syntax_theme_dark: String, @@ -156,6 +157,7 @@ impl Default for Config { fn default() -> Self { Self { app_theme: AppTheme::System, + auto_indent: true, font_name: "Fira Mono".to_string(), font_size: 14, syntax_theme_dark: "gruvbox-dark".to_string(), diff --git a/src/main.rs b/src/main.rs index f53949a..81ccdc5 100644 --- a/src/main.rs +++ b/src/main.rs @@ -135,6 +135,7 @@ pub enum Message { TabClose(segmented_button::Entity), TabWidth(u16), Todo, + ToggleAutoIndent, ToggleContextPage(ContextPage), ToggleWordWrap, Undo, @@ -835,6 +836,10 @@ impl Application for App { Message::Todo => { log::warn!("TODO"); } + Message::ToggleAutoIndent => { + self.config.auto_indent = !self.config.auto_indent; + return self.save_config(); + } Message::ToggleContextPage(context_page) => { if self.context_page == context_page { self.core.window.show_context = !self.core.window.show_context; diff --git a/src/menu.rs b/src/menu.rs index 6f90395..65c073b 100644 --- a/src/menu.rs +++ b/src/menu.rs @@ -160,7 +160,11 @@ pub fn menu_bar<'a>(config: &Config) -> Element<'a, Message> { MenuTree::with_children( menu_folder(fl!("indentation")), vec![ - menu_item(fl!("automatic-indentation"), Message::Todo), + menu_checkbox( + fl!("automatic-indentation"), + config.auto_indent, + Message::ToggleAutoIndent, + ), MenuTree::new(horizontal_rule(1)), menu_tab_width(1), menu_tab_width(2), diff --git a/src/tab.rs b/src/tab.rs index abca5e3..cf20a7f 100644 --- a/src/tab.rs +++ b/src/tab.rs @@ -43,6 +43,7 @@ impl Tab { let mut editor = self.editor.lock().unwrap(); let mut font_system = FONT_SYSTEM.lock().unwrap(); let mut editor = editor.borrow_with(&mut font_system); + editor.set_auto_indent(config.auto_indent); editor.set_passthrough(!config.vim_bindings); editor.set_tab_width(config.tab_width); editor.buffer_mut().set_wrap(if config.word_wrap {