Skip to main content

Line error

info

This feature only works in powershell for the time being.

Line error, when enabled, replaces the last part of the prompt when the text entered is invalid. It leverages PSReadLine's -PromptText setting by adding two distinct prompts. One for a valid line, and one for when there's an error. As PSReadLine will rewrite the last part of your prompt with the value of either based on the line's context, you will need to make sure everything is compatible with your config as these values are only set once on shell start.

There are two config settings you need to tweak:

  • valid_line: displays when the line is valid (again)
  • error_line: displays when the line is faulty

You can use go text/template templates extended with sprig to enrich the text. Environment variables are available, just like the console_title_template functionality.

Configuration#

You need to extend or create a custom theme with your prompt overrides. For example:

{
"$schema": "https://raw.githubusercontent.com/JanDeDobbeleer/oh-my-posh/main/themes/schema.json",
"blocks": {
...
},
"valid_line": {
"background": "transparent",
"foreground": "#ffffff",
"template": "<#e0def4,#286983>\uf42e </><#286983,transparent>\ue0b4</> "
},
"error_line": {
"background": "transparent",
"foreground": "#ffffff",
"template": "<#eb6f92,#286983>\ue009 </><#286983,transparent>\ue0b4</> "
}
}

The configuration has the following properties:

  • background: string [color][colors]
  • foreground: string [color][colors]
  • template: string - a go text/template template extended with sprig utilizing the properties below - defaults to

Template (info)#

  • .Root: boolean - is the current user root/admin or not
  • .PWD: string - the current working directory
  • .Folder: string - the current working folder
  • .Shell: string - the current shell name
  • .UserName: string - the current user name
  • .HostName: string - the host name
  • .Env.VarName: string - Any environment variable where VarName is the environment variable name

Enable the feature#

Invoke Oh My Posh in your $PROFILE and add the following line below.

oh-my-posh init pwsh --config $env:POSH_THEMES_PATH/jandedobbeleer.omp.json | Invoke-Expression
Enable-PoshLineError
caution

If you import PSReadLine separately, make sure to import it before the Enable-PoshLineError command.

Restart your shell or reload your $PROFILE using . $PROFILE for the changes to take effect.