From 1a573475598cfbb94a39427678f53e89316b76ae Mon Sep 17 00:00:00 2001 From: TornaxO7 Date: Fri, 15 Dec 2023 19:05:04 +0100 Subject: [PATCH] fix `:indent-style` crash (#9087) * removing unreachable statement in `:indent-style` * update checks when setting indent line and update docs * `cargo xtask docgen` --- book/src/generated/typable-cmd.md | 2 +- helix-core/src/indent.rs | 2 +- helix-term/src/commands/typed.rs | 8 ++++---- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/book/src/generated/typable-cmd.md b/book/src/generated/typable-cmd.md index 6280d3c72fde..f4fcb6f6200e 100644 --- a/book/src/generated/typable-cmd.md +++ b/book/src/generated/typable-cmd.md @@ -17,7 +17,7 @@ | `:write-buffer-close!`, `:wbc!` | Force write changes to disk creating necessary subdirectories and closes the buffer. Accepts an optional path (:write-buffer-close! some/path.txt) | | `:new`, `:n` | Create a new scratch buffer. | | `:format`, `:fmt` | Format the file using the LSP formatter. | -| `:indent-style` | Set the indentation style for editing. ('t' for tabs or 1-8 for number of spaces.) | +| `:indent-style` | Set the indentation style for editing. ('t' for tabs or 1-16 for number of spaces.) | | `:line-ending` | Set the document's default line ending. Options: crlf, lf. | | `:earlier`, `:ear` | Jump back to an earlier point in edit history. Accepts a number of steps or a time span. | | `:later`, `:lat` | Jump to a later point in edit history. Accepts a number of steps or a time span. | diff --git a/helix-core/src/indent.rs b/helix-core/src/indent.rs index 9333460b4dd5..1e90db472f0a 100644 --- a/helix-core/src/indent.rs +++ b/helix-core/src/indent.rs @@ -22,7 +22,7 @@ pub enum IndentStyle { // 16 spaces const INDENTS: &str = " "; -const MAX_INDENT: u8 = 16; +pub const MAX_INDENT: u8 = 16; impl IndentStyle { /// Creates an `IndentStyle` from an indentation string. diff --git a/helix-term/src/commands/typed.rs b/helix-term/src/commands/typed.rs index 4148257fc494..1d4d65050973 100644 --- a/helix-term/src/commands/typed.rs +++ b/helix-term/src/commands/typed.rs @@ -6,6 +6,7 @@ use crate::job::Job; use super::*; use helix_core::fuzzy::fuzzy_match; +use helix_core::indent::MAX_INDENT; use helix_core::{encoding, line_ending, path::get_canonicalized_path, shellwords::Shellwords}; use helix_lsp::{OffsetEncoding, Url}; use helix_view::document::DEFAULT_LANGUAGE_NAME; @@ -476,8 +477,7 @@ fn set_indent_style( cx.editor.set_status(match style { Tabs => "tabs".to_owned(), Spaces(1) => "1 space".to_owned(), - Spaces(n) if (2..=8).contains(&n) => format!("{} spaces", n), - _ => unreachable!(), // Shouldn't happen. + Spaces(n) => format!("{} spaces", n), }); return Ok(()); } @@ -489,7 +489,7 @@ fn set_indent_style( Some(arg) => arg .parse::() .ok() - .filter(|n| (1..=8).contains(n)) + .filter(|n| (1..=MAX_INDENT).contains(n)) .map(Spaces), _ => None, }; @@ -2606,7 +2606,7 @@ pub const TYPABLE_COMMAND_LIST: &[TypableCommand] = &[ TypableCommand { name: "indent-style", aliases: &[], - doc: "Set the indentation style for editing. ('t' for tabs or 1-8 for number of spaces.)", + doc: "Set the indentation style for editing. ('t' for tabs or 1-16 for number of spaces.)", fun: set_indent_style, signature: CommandSignature::none(), },