summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRob Warner <rwarner@grailbox.com>2019-09-12 17:10:42 -0400
committerKevin Song <chipbuster@users.noreply.github.com>2019-09-12 16:10:42 -0500
commit373493be85f9bace92dd03e5595e43ad5dc59c9b (patch)
tree435e1959f611e246c780b47fa0e942cff4d76a16
parentb25046e89731ad51f09cf923c741d579098c9475 (diff)
feat: Add support for italic styles (#354) (#358)
-rw-r--r--docs/config/README.md3
-rw-r--r--src/config.rs13
2 files changed, 12 insertions, 4 deletions
diff --git a/docs/config/README.md b/docs/config/README.md
index ce97a1fac..c1944b957 100644
--- a/docs/config/README.md
+++ b/docs/config/README.md
@@ -48,9 +48,10 @@ Most modules in starship allow you to configure their display styles. This is do
- `"bg:blue fg:bright-green"` sets bright green text on a blue background
- `"bold fg:27"` sets bold text with [ANSI color](https://i.stack.imgur.com/KTSQa.png) 27
- `"underline bg:#bf5700"` sets underlined text on a burnt orange background
+- `"bold italic fg:purple"` sets bold italic purple text
- `""` explicitly disables all styling
-Note that what styling looks like will be controlled by your terminal emulator. For example, some terminal emulators will brighten the colors instead of bolding text, and some color themes use the same values for the normal and bright colors.
+Note that what styling looks like will be controlled by your terminal emulator. For example, some terminal emulators will brighten the colors instead of bolding text, and some color themes use the same values for the normal and bright colors. Also, to get italic text, your terminal must support italics.
## Prompt
diff --git a/src/config.rs b/src/config.rs
index fc23a327e..d54767a65 100644
--- a/src/config.rs
+++ b/src/config.rs
@@ -174,6 +174,7 @@ impl Config for Table {
- 'bg:<color>' (specifies that the color read should be a background color)
- 'underline'
- 'bold'
+ - 'italic'
- '<color>' (see the parse_color_string doc for valid color strings)
*/
fn parse_style_string(style_string: &str) -> Option<ansi_term::Style> {
@@ -201,6 +202,7 @@ fn parse_style_string(style_string: &str) -> Option<ansi_term::Style> {
match token.as_str() {
"underline" => style = style.underline(),
"bold" => style = style.bold(),
+ "italic" => style = style.italic(),
"dimmed" => style = style.dimmed(),
"none" => return Some(ansi_term::Style::new()), // Overrides other toks
@@ -339,16 +341,21 @@ mod tests {
fn table_get_styles_simple() {
let mut table = toml::value::Table::new();
- // Test for a bold underline green module (with SiLlY cApS)
+ // Test for a bold italic underline green module (with SiLlY cApS)
table.insert(
String::from("mystyle"),
- toml::value::Value::String(String::from("bOlD uNdErLiNe GrEeN")),
+ toml::value::Value::String(String::from("bOlD ItAlIc uNdErLiNe GrEeN")),
);
assert!(table.get_as_ansi_style("mystyle").unwrap().is_bold);
+ assert!(table.get_as_ansi_style("mystyle").unwrap().is_italic);
assert!(table.get_as_ansi_style("mystyle").unwrap().is_underline);
assert_eq!(
table.get_as_ansi_style("mystyle").unwrap(),
- ansi_term::Style::new().bold().underline().fg(Color::Green)
+ ansi_term::Style::new()
+ .bold()
+ .italic()
+ .underline()
+ .fg(Color::Green)
);
// Test a "plain" style with no formatting