Skip to content

ControlSequencesInPrompt

Judah Jacobson edited this page Sep 8, 2016 · 2 revisions

Escape Sequences in the Prompt String

As of version 0.6.3, Haskeline will compute the correct width for input prompts that contain POSIX escape sequences such as color changes. However, the prompt string must indicate the end of each escape sequence, since there's no way for Haskeline to detect it automatically.

The end is denoted by the control character '\STX' (i.e., ASCII '\002'). Any substring in the prompt of the form "\ESC...\STX" will be treated as zero-width for the purposes of line-breaking. (The trailing '\STX' is not printed to the terminal.)

On Windows, escape sequences of the form "\ESC...\STX" will be ignored.

Some examples

getInputLine "\ESC[1;32m\STXPrompt:\ESC[0m\STX"

prints out the prompt string "Prompt:" in green text. The first escape sequence ("\ESC[1;32m\STX") changes the text color to green, and the second ("\ESC[0m\STX") turns the color back to normal.

If GHC (or the ghci-haskeline package) has been compiled against haskeline-0.6.3 or newer, adding the following line to your ~/.ghci file will turn the prompt string green:

:set prompt "\ESC[1;32m\STX%s>\ESC[0m\STX"