From 12c8536d0ccb6c5affa269b40cdd77700f9e6f9c Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 8 Nov 2023 15:42:46 -0700 Subject: [PATCH] Update cosmic-text, status line for additional ViEditor modes --- Cargo.lock | 72 +++++++++++++++++++++++++---------------------------- src/main.rs | 23 ++++++++++------- 2 files changed, 48 insertions(+), 47 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 5585662..74f4a0d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -49,7 +49,7 @@ source = "git+https://github.com/wash2/accesskit.git?tag=winit-0.28#db6f2587f663 dependencies = [ "accesskit", "accesskit_consumer", - "async-channel 1.9.0", + "async-channel", "atspi", "futures-lite 1.13.0", "log", @@ -243,19 +243,6 @@ dependencies = [ "futures-core", ] -[[package]] -name = "async-channel" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d37875bd9915b7d67c2f117ea2c30a0989874d0b2cb694fe25403c85763c0c9e" -dependencies = [ - "concurrent-queue", - "event-listener 3.0.1", - "event-listener-strategy", - "futures-core", - "pin-project-lite", -] - [[package]] name = "async-executor" version = "1.6.0" @@ -569,16 +556,16 @@ dependencies = [ [[package]] name = "blocking" -version = "1.5.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "864b30e660d766b7e9b47347d9b6558a17f1cfa22274034fa6f55b274b3e4620" +checksum = "8c36a4d0d48574b3dd360b4b7d95cc651d2b6557b6402848a27d4b228a473e2a" dependencies = [ - "async-channel 2.1.0", - "async-lock 3.0.0", + "async-channel", + "async-lock 2.8.0", "async-task", "fastrand 2.0.1", "futures-io", - "futures-lite 2.0.1", + "futures-lite 1.13.0", "piper", "tracing", ] @@ -878,11 +865,12 @@ dependencies = [ [[package]] name = "cosmic-text" version = "0.10.0" -source = "git+https://github.com/pop-os/cosmic-text?branch=vi-editor#ac389d9eebe1a6d8fe21bae315a853a5e0205b73" +source = "git+https://github.com/pop-os/cosmic-text?branch=vi-editor#c79c1326944c0a688e5c35015b834c18b53aa5c0" dependencies = [ "fontdb 0.15.0", "libm", "log", + "modit", "rangemap", "rustc-hash", "rustybuzz 0.11.0", @@ -1237,9 +1225,9 @@ checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" [[package]] name = "errno" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3e13f66a2f95e32a39eaa81f6b95d42878ca0e1db0c7543723dfe12557e860" +checksum = "7c18ee0ed65a5f1f81cac6b1d213b69c35fa47d4252ad41f1486dbd8226fe36e" dependencies = [ "libc", "windows-sys 0.48.0", @@ -1713,9 +1701,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.10" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427" +checksum = "fe9006bed769170c11f845cf00c7c1e9092aeb3f268e007c3e760ac68008070f" dependencies = [ "cfg-if", "js-sys", @@ -1974,7 +1962,7 @@ dependencies = [ "serde", "serde_derive", "thiserror", - "toml 0.8.6", + "toml 0.8.8", "unic-langid", ] @@ -2548,9 +2536,9 @@ checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519" [[package]] name = "linux-raw-sys" -version = "0.4.10" +version = "0.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da2479e8c062e40bf0066ffa0bc823de0a9368974af99c9f6df941d2c231e03f" +checksum = "969488b55f8ac402214f3f5fd243ebb7206cf82de60d3172994707a4bcc2b829" [[package]] name = "locale_config" @@ -2753,6 +2741,14 @@ dependencies = [ "windows-sys 0.48.0", ] +[[package]] +name = "modit" +version = "0.1.0" +source = "git+https://github.com/pop-os/modit.git#d44cd44692685c2972747ca465a81791887c2cdd" +dependencies = [ + "log", +] + [[package]] name = "mutate_once" version = "0.1.1" @@ -3851,7 +3847,7 @@ dependencies = [ "bitflags 2.4.1", "errno", "libc", - "linux-raw-sys 0.4.10", + "linux-raw-sys 0.4.11", "windows-sys 0.48.0", ] @@ -3964,18 +3960,18 @@ checksum = "4c309e515543e67811222dbc9e3dd7e1056279b782e1dacffe4242b718734fb6" [[package]] name = "serde" -version = "1.0.190" +version = "1.0.192" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91d3c334ca1ee894a2c6f6ad698fe8c435b76d504b13d436f0685d648d6d96f7" +checksum = "bca2a08484b285dcb282d0f67b26cadc0df8b19f8c12502c13d966bf9482f001" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.190" +version = "1.0.192" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67c5609f394e5c2bd7fc51efda478004ea80ef42fee983d5c67a65e34f32c0e3" +checksum = "d6c7207fbec9faa48073f3e3074cbe553af6ea512d7c21ba46e434e70ea9fbc1" dependencies = [ "proc-macro2", "quote", @@ -4287,7 +4283,7 @@ dependencies = [ "cfg-expr", "heck", "pkg-config", - "toml 0.8.6", + "toml 0.8.8", "version-compare", ] @@ -4476,14 +4472,14 @@ dependencies = [ [[package]] name = "toml" -version = "0.8.6" +version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ff9e3abce27ee2c9a37f9ad37238c1bdd4e789c84ba37df76aa4d528f5072cc" +checksum = "a1a195ec8c9da26928f773888e0742ca3ca1040c6cd859c919c9f59c1954ab35" dependencies = [ "serde", "serde_spanned", "toml_datetime", - "toml_edit 0.20.7", + "toml_edit 0.21.0", ] [[package]] @@ -4508,9 +4504,9 @@ dependencies = [ [[package]] name = "toml_edit" -version = "0.20.7" +version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70f427fce4d84c72b5b732388bf4a9f4531b53f74e2887e3ecb2481f68f66d81" +checksum = "d34d383cd00a163b4a5b85053df514d45bc330f6de7737edfe0a93311d1eaa03" dependencies = [ "indexmap 2.1.0", "serde", diff --git a/src/main.rs b/src/main.rs index 223ec73..9714ba8 100644 --- a/src/main.rs +++ b/src/main.rs @@ -893,18 +893,23 @@ impl cosmic::Application for App { Some(tab) => { tab_column = tab_column.push(text_box(&tab.editor, self.config.metrics()).padding(8)); - let status = match tab.editor.lock().unwrap().mode() { - ViMode::Passthrough => { - //TODO: status line - String::new() - } - ViMode::Normal => { - //TODO: status line - String::new() - } + let status = match &tab.editor.lock().unwrap().parser().mode { + ViMode::Normal => String::new(), ViMode::Insert => { format!("-- INSERT --") } + ViMode::Extra(extra) => { + format!("{}", extra) + } + ViMode::Replace => { + format!("-- REPLACE --") + } + ViMode::Visual => { + format!("-- VISUAL --") + } + ViMode::VisualLine => { + format!("-- VISUAL LINE --") + } ViMode::Command { value } => { format!(":{value}|") }