From 1652c0bdb1d3c62c78c4e8bdde146464b6331539 Mon Sep 17 00:00:00 2001 From: Matan Kushner Date: Sun, 16 Aug 2020 23:33:40 -0400 Subject: [PATCH] fix: restore add_newline configuration (#1592) --- docs/config/README.md | 15 ++++----------- src/configs/starship_root.rs | 4 +++- src/modules/line_break.rs | 27 +++++++++++++++++++++++++++ 3 files changed, 34 insertions(+), 12 deletions(-) diff --git a/docs/config/README.md b/docs/config/README.md index f6dfc727..8afa0184 100644 --- a/docs/config/README.md +++ b/docs/config/README.md @@ -1,12 +1,5 @@ # Configuration -::: tip - -🔥 Configuration is currently being worked on. -Many new configuration options will be available in coming releases. - -::: - To get started configuring starship, create the following file: `~/.config/starship.toml`. ```sh @@ -14,10 +7,9 @@ mkdir -p ~/.config && touch ~/.config/starship.toml ``` All configuration for starship is done in this [TOML](https://github.com/toml-lang/toml) file: - ```toml # Don't print a new line at the start of the prompt -format = "$all" +add_newline = false # Replace the "❯" symbol in the prompt with "➜" [character] # The name of the module we are configuring is "character" @@ -145,6 +137,7 @@ This is the list of prompt-wide configuration options. | Option | Default | Description | | -------------- | ------------------------------ | ----------------------------------------------------- | +| `add_newline` | `true` | Add a new line before the start of the prompt. | | `format` | [link](#default-prompt-format) | Configure the format of the prompt. | | `scan_timeout` | `30` | Timeout for starship to scan files (in milliseconds). | @@ -154,7 +147,7 @@ This is the list of prompt-wide configuration options. # ~/.config/starship.toml # Disable the newline at the start of the prompt -format = "$all" +add_newline = false # Use custom format format = """ @@ -171,7 +164,7 @@ scan_timeout = 10 The default `format` is used to define the format of the prompt, if empty or no `format` is provided. The default is as shown: ```toml -format = "\n$all" +format = "$all" # Which is equivalent to format = """ diff --git a/src/configs/starship_root.rs b/src/configs/starship_root.rs index ad507c4d..b3f7a5b2 100644 --- a/src/configs/starship_root.rs +++ b/src/configs/starship_root.rs @@ -6,6 +6,7 @@ use starship_module_config_derive::ModuleConfig; pub struct StarshipRootConfig<'a> { pub format: &'a str, pub scan_timeout: u64, + pub add_newline: bool, } // List of default prompt order @@ -70,8 +71,9 @@ pub const PROMPT_ORDER: &[&str] = &[ impl<'a> RootModuleConfig<'a> for StarshipRootConfig<'a> { fn new() -> Self { StarshipRootConfig { - format: "\n$all", + format: "$all", scan_timeout: 30, + add_newline: true, } } } diff --git a/src/modules/line_break.rs b/src/modules/line_break.rs index e485458d..e8c00452 100644 --- a/src/modules/line_break.rs +++ b/src/modules/line_break.rs @@ -5,9 +5,36 @@ use crate::segment::Segment; pub fn module<'a>(context: &'a Context) -> Option> { const LINE_ENDING: &str = "\n"; + let show_newline = context.config.get_root_config().add_newline; + if !show_newline { + return None; + } + let mut module = context.new_module("line_break"); module.set_segments(vec![Segment::new(None, LINE_ENDING)]); Some(module) } + +#[cfg(test)] +mod tests { + use crate::test::ModuleRenderer; + + #[test] + fn add_newline_by_default() { + let expected = Some(String::from("\n")); + let actual = ModuleRenderer::new("line_break").collect(); + assert_eq!(expected, actual); + } + + #[test] + fn dont_add_newline_when_disabled() { + let expected = None; + let config = toml::toml! { + add_newline = false + }; + let actual = ModuleRenderer::new("line_break").config(config).collect(); + assert_eq!(expected, actual); + } +}