Skip to content

Commit

Permalink
feat: Add support for italic styles (#354) (#358)
Browse files Browse the repository at this point in the history
  • Loading branch information
hoop33 authored and chipbuster committed Sep 12, 2019
1 parent b25046e commit 373493b
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 4 deletions.
3 changes: 2 additions & 1 deletion docs/config/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
13 changes: 10 additions & 3 deletions src/config.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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> {
Expand Down Expand Up @@ -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

Expand Down Expand Up @@ -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
Expand Down

0 comments on commit 373493b

Please sign in to comment.