[GHC] #9364: GHCi (or haskeline?) confused by non-single-width characters
GHC
ghc-devs at haskell.org
Fri Jul 25 11:05:00 UTC 2014
#9364: GHCi (or haskeline?) confused by non-single-width characters
-------------------------------------+-------------------------------------
Reporter: cheater | Owner:
Type: bug | Status: new
Priority: normal | Milestone:
Component: GHCi | Version: 7.8.3
Keywords: linux, terminal, | Operating System:
colour, color, prompt | Unknown/Multiple
Architecture: Unknown/Multiple | Type of failure: Other
Difficulty: Unknown | Test Case:
Blocked By: | Blocking:
Related Tickets: | Differential Revisions:
-------------------------------------+-------------------------------------
Hi,
there's an issue in the GHCi prompt.
To reproduce:
1. Do everything in Linux (I don't have other operating systems); I'm
using a version of the gnome 2 gnome-terminal.
2. Use the following to colourise the prompt in GHCi:
echo -e :set prompt '"\033[32;1m%s\033[34;1m>\033[0m "' >>
~/.ghc/ghci.conf
3. Import quite a few modules (say, 5 to 10 should be enough)
4. Give the prompt enough text that it wraps around. It's best if you
start the text with -- so that it's a comment and doesn't produce any
output. For example, say I entered "--
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb", I
now see the following:
*Types Control.Monad.Writer Control.Monad Data.Functor Control.Applicative
Data.Monoid> -- bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
(do note that the first set of b's is located on the same line as the
prompt, and the second is located under the prompt)
5. Press Enter. You should now see:
*Types Control.Monad.Writer Control.Monad Data.Functor Control.Applicative
Data.Monoid> -- bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
*Types Control.Monad.Writer Control.Monad Data.Functor Control.Applicative
Data.Monoid>
6. Press Ctrl-P or the up arrow key to select the previous history item.
You will now see the following:
*Types Control.Monad.Writer Control.Monad Data.Functor Control.Applicative
Data.Monoid> -- bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
*Types Control.Monad.Writer Control.Monad Data.Functor Control.Applicative
Data.Monoid> -- bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
7. Press Ctrl-A or the Home cursor key to go to the beginning of the text
entry, and then type X. You will now see the last prompt to be:
*Types Control.Monad.Writer Control.Monad Data.Functor Control.Applicative
Data.Monoid> -- bbbbbbbbbbbbX-- bbbbbbbbbbbbbbbbb
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
8. If you press Enter, you will find out that prompt was actually (without
line breaks):
X-- bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
I tried resizing the terminal window to 45 chars to make the lines above
shorter; I imported Data.Monoid and Data.Functor in a new GHCi. The prompt
contained garbage, most likely badly wrapped escape codes. See attachment.
As both likely are a single bug in disguise, I include both reports in
this ticket.
Creating a test case for whether things actually work in a terminal might
be difficult, but creating test for whether things get wrapped correctly
(and not testing how things work out in a terminal) should be simple if
annoying.
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/9364>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list