summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.github/config-schema.json6
-rw-r--r--docs/config/README.md33
-rw-r--r--src/configs/shell.rs3
-rw-r--r--src/context.rs4
-rw-r--r--src/modules/shell.rs46
5 files changed, 75 insertions, 17 deletions
diff --git a/.github/config-schema.json b/.github/config-schema.json
index 9931b8487..a01d83c01 100644
--- a/.github/config-schema.json
+++ b/.github/config-schema.json
@@ -5311,6 +5311,12 @@
"default": "psh",
"type": "string"
},
+ "pwsh_indicator": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
"ion_indicator": {
"default": "ion",
"type": "string"
diff --git a/docs/config/README.md b/docs/config/README.md
index e200115be..c267a37d5 100644
--- a/docs/config/README.md
+++ b/docs/config/README.md
@@ -3817,22 +3817,23 @@ To enable it, set `disabled` to `false` in your configuration file.
### Options
-| Option | Default | Description |
-| ---------------------- | ------------------------- | ------------------------------------------------------------ |
-| `bash_indicator` | `'bsh'` | A format string used to represent bash. |
-| `fish_indicator` | `'fsh'` | A format string used to represent fish. |
-| `zsh_indicator` | `'zsh'` | A format string used to represent zsh. |
-| `powershell_indicator` | `'psh'` | A format string used to represent powershell. |
-| `ion_indicator` | `'ion'` | A format string used to represent ion. |
-| `elvish_indicator` | `'esh'` | A format string used to represent elvish. |
-| `tcsh_indicator` | `'tsh'` | A format string used to represent tcsh. |
-| `xonsh_indicator` | `'xsh'` | A format string used to represent xonsh. |
-| `cmd_indicator` | `'cmd'` | A format string used to represent cmd. |
-| `nu_indicator` | `'nu'` | A format string used to represent nu. |
-| `unknown_indicator` | `''` | The default value to be displayed when the shell is unknown. |
-| `format` | `'[$indicator]($style) '` | The format for the module. |
-| `style` | `'white bold'` | The style for the module. |
-| `disabled` | `true` | Disables the `shell` module. |
+| Option | Default | Description |
+| ---------------------- | ------------------------- | ------------------------------------------------------------------------------------------------------ |
+| `bash_indicator` | `'bsh'` | A format string used to represent bash. |
+| `fish_indicator` | `'fsh'` | A format string used to represent fish. |
+| `zsh_indicator` | `'zsh'` | A format string used to represent zsh. |
+| `powershell_indicator` | `'psh'` | A format string used to represent powershell. |
+| `pwsh_indicator` | | A format string used to represent pwsh. The default value mirrors the value of `powershell_indicator`. |
+| `ion_indicator` | `'ion'` | A format string used to represent ion. |
+| `elvish_indicator` | `'esh'` | A format string used to represent elvish. |
+| `tcsh_indicator` | `'tsh'` | A format string used to represent tcsh. |
+| `xonsh_indicator` | `'xsh'` | A format string used to represent xonsh. |
+| `cmd_indicator` | `'cmd'` | A format string used to represent cmd. |
+| `nu_indicator` | `'nu'` | A format string used to represent nu. |
+| `unknown_indicator` | `''` | The default value to be displayed when the shell is unknown. |
+| `format` | `'[$indicator]($style) '` | The format for the module. |
+| `style` | `'white bold'` | The style for the module. |
+| `disabled` | `true` | Disables the `shell` module. |
### Variables
diff --git a/src/configs/shell.rs b/src/configs/shell.rs
index 540ea8e32..9d0bd3aa0 100644
--- a/src/configs/shell.rs
+++ b/src/configs/shell.rs
@@ -13,6 +13,8 @@ pub struct ShellConfig<'a> {
pub fish_indicator: &'a str,
pub zsh_indicator: &'a str,
pub powershell_indicator: &'a str,
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub pwsh_indicator: Option<&'a str>,
pub ion_indicator: &'a str,
pub elvish_indicator: &'a str,
pub tcsh_indicator: &'a str,
@@ -32,6 +34,7 @@ impl<'a> Default for ShellConfig<'a> {
fish_indicator: "fsh",
zsh_indicator: "zsh",
powershell_indicator: "psh",
+ pwsh_indicator: None,
ion_indicator: "ion",
elvish_indicator: "esh",
tcsh_indicator: "tsh",
diff --git a/src/context.rs b/src/context.rs
index 83af209a0..0a498c999 100644
--- a/src/context.rs
+++ b/src/context.rs
@@ -372,7 +372,8 @@ impl<'a> Context<'a> {
"bash" => Shell::Bash,
"fish" => Shell::Fish,
"ion" => Shell::Ion,
- "powershell" | "pwsh" => Shell::PowerShell,
+ "pwsh" => Shell::Pwsh,
+ "powershell" => Shell::PowerShell,
"zsh" => Shell::Zsh,
"elvish" => Shell::Elvish,
"tcsh" => Shell::Tcsh,
@@ -810,6 +811,7 @@ pub enum Shell {
Bash,
Fish,
Ion,
+ Pwsh,
PowerShell,
Zsh,
Elvish,
diff --git a/src/modules/shell.rs b/src/modules/shell.rs
index c9b6df157..98502a266 100644
--- a/src/modules/shell.rs
+++ b/src/modules/shell.rs
@@ -20,6 +20,7 @@ pub fn module<'a>(context: &'a Context) -> Option<Module<'a>> {
Shell::Bash => Some(config.bash_indicator),
Shell::Fish => Some(config.fish_indicator),
Shell::Zsh => Some(config.zsh_indicator),
+ Shell::Pwsh => config.pwsh_indicator.or(Some(config.powershell_indicator)),
Shell::PowerShell => Some(config.powershell_indicator),
Shell::Ion => Some(config.ion_indicator),
Shell::Elvish => Some(config.elvish_indicator),
@@ -40,6 +41,7 @@ pub fn module<'a>(context: &'a Context) -> Option<Module<'a>> {
"fish_indicator" => Some(Ok(config.fish_indicator)),
"zsh_indicator" => Some(Ok(config.zsh_indicator)),
"powershell_indicator" => Some(Ok(config.powershell_indicator)),
+ "pwsh_indicator" => config.pwsh_indicator.map(Ok),
"ion_indicator" => Some(Ok(config.ion_indicator)),
"elvish_indicator" => Some(Ok(config.elvish_indicator)),
"tcsh_indicator" => Some(Ok(config.tcsh_indicator)),
@@ -201,6 +203,50 @@ mod tests {
}
#[test]
+ fn test_pwsh_default_format() {
+ let expected = Some(format!("{} ", Color::White.bold().paint("psh")));
+ let actual = ModuleRenderer::new("shell")
+ .shell(Shell::Pwsh)
+ .config(toml::toml! {
+ [shell]
+ disabled = false
+ })
+ .collect();
+
+ assert_eq!(expected, actual);
+ }
+
+ #[test]
+ fn test_pwsh_custom_format() {
+ let expected = Some(format!("{} ", Color::Cyan.bold().paint("pwsh")));
+ let actual = ModuleRenderer::new("shell")
+ .shell(Shell::Pwsh)
+ .config(toml::toml! {
+ [shell]
+ pwsh_indicator = "[pwsh](bold cyan)"
+ disabled = false
+ })
+ .collect();
+
+ assert_eq!(expected, actual);
+ }
+
+ #[test]
+ fn test_pwsh_custom_format_fallback() {
+ let expected = Some(format!("{} ", Color::Cyan.bold().paint("pwsh")));
+ let actual = ModuleRenderer::new("shell")
+ .shell(Shell::Pwsh)
+ .config(toml::toml! {
+ [shell]
+ powershell_indicator = "[pwsh](bold cyan)"
+ disabled = false
+ })
+ .collect();
+
+ assert_eq!(expected, actual);
+ }
+
+ #[test]
fn test_ion_default_format() {
let expected = Some(format!("{} ", Color::White.bold().paint("ion")));
let actual = ModuleRenderer::new("shell")