Add measure_widths config option

This commit is contained in:
Joscha 2023-04-24 18:21:46 +02:00
parent 39026a217d
commit f7f200a608
3 changed files with 16 additions and 3 deletions

View file

@ -17,6 +17,7 @@ Procedure when bumping the version number:
### Added ### Added
- `help-config` CLI command - `help-config` CLI command
- `measure_widths` config option
### Changed ### Changed
- Simplified flake dependencies - Simplified flake dependencies

View file

@ -90,6 +90,18 @@ pub struct Config {
#[document(default = "`false`")] #[document(default = "`false`")]
pub ephemeral: bool, pub ephemeral: bool,
/// Whether to measure the width of characters as displayed by the terminal
/// emulator instead of guessing the width.
///
/// Enabling this makes rendering a bit slower but more accurate. The screen
/// might also flash when encountering new characters (or, more accurately,
/// graphemes).
///
/// See also the `--measure-graphemes` command line option.
#[serde(default)]
#[document(default = "`false`")]
pub measure_widths: bool,
/// Whether to start in offline mode. /// Whether to start in offline mode.
/// ///
/// In offline mode, cove won't automatically join rooms marked via the /// In offline mode, cove won't automatically join rooms marked via the

View file

@ -120,6 +120,7 @@ fn update_config_with_args(config: &mut Config, args: &Args) {
} }
config.ephemeral |= args.ephemeral; config.ephemeral |= args.ephemeral;
config.measure_widths |= args.measure_widths;
config.offline |= args.offline; config.offline |= args.offline;
} }
@ -150,7 +151,7 @@ async fn main() -> anyhow::Result<()> {
let config = Box::leak(Box::new(config)); let config = Box::leak(Box::new(config));
match args.command.unwrap_or_default() { match args.command.unwrap_or_default() {
Command::Run => run(logger, logger_rx, config, &dirs, args.measure_widths).await?, Command::Run => run(logger, logger_rx, config, &dirs).await?,
Command::Export(args) => export(config, &dirs, args).await?, Command::Export(args) => export(config, &dirs, args).await?,
Command::Gc => gc(config, &dirs).await?, Command::Gc => gc(config, &dirs).await?,
Command::ClearCookies => clear_cookies(config, &dirs).await?, Command::ClearCookies => clear_cookies(config, &dirs).await?,
@ -171,7 +172,6 @@ async fn run(
logger_rx: mpsc::UnboundedReceiver<()>, logger_rx: mpsc::UnboundedReceiver<()>,
config: &'static Config, config: &'static Config,
dirs: &ProjectDirs, dirs: &ProjectDirs,
measure_widths: bool,
) -> anyhow::Result<()> { ) -> anyhow::Result<()> {
info!( info!(
"Welcome to {} {}", "Welcome to {} {}",
@ -182,7 +182,7 @@ async fn run(
let vault = open_vault(config, dirs)?; let vault = open_vault(config, dirs)?;
let mut terminal = Terminal::new()?; let mut terminal = Terminal::new()?;
terminal.set_measuring(measure_widths); terminal.set_measuring(config.measure_widths);
Ui::run(config, &mut terminal, vault.clone(), logger, logger_rx).await?; Ui::run(config, &mut terminal, vault.clone(), logger, logger_rx).await?;
drop(terminal); drop(terminal);