Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Tab completion and arrow keys don't work in GHCI in Git Bash

When I open ghcii.sh (Glasgow Haskell Compiler Interactive) in Git Bash, normal tab, backspace, and arrow keys don't work as expected.

For example, if I type :lo + Tab, I'd expect it to complete the statement to :load. What instead happens is that the cursor jumps to the right (to the next tab stop, I guess).

Then, if I use Backspace to go back and fill out the command 'manually', this happens:

Prelude> :load PrettyJSON.hs

<interactive>:2:1:
    Not in scope: `ad'
    Perhaps you meant one of these:
      `and' (imported from Prelude), `id' (imported from Prelude)

<interactive>:2:4: Not in scope: `PrettyJSON.hs'

This is when I'm lucky. Sometimes, I can't even Backspace all the way back, but instead get stuck somewhere to the right of :lo (or whatever other command I'm attempting to issue). I can still hit Enter, though, to try again.

The arrow keys don't invoke command history. If I press , the cursor moves up, but I'd have expected it to cycle through my command history.

This issue seems to be related to Git Bash, because GHCI works correctly in PowerShell on the same machine. On other machines where I'm running an earlier version of Git Bash (git version 1.9.5.msysgit.1), I don't have this problem, so it seems to be related to this particular version (git version 2.5.1.windows.1).

My operating system is Windows 10 64-bit. At first I thought that this issue was related to 64-bit Git Bash, because this is the first time I've seen a 64-bit Git Bash on Windows, but I've also tried installing the 32-bit Git Bash, and it exhibits the exact same behaviour.

Is it possible to make GHCI behave correctly in this environment?

like image 892
Mark Seemann Avatar asked Sep 03 '15 07:09

Mark Seemann


Video Answer


2 Answers

For anyone who still comes here after a Google search...

Instead of changing the way Git Bash starts up, you can start GHCi directly from the Start menu (this already runs it using the Windows Console). Simply type GHCi in the Start menu/screen and wait for the result. The bonus is a nice Haskell icon in the console title bar :P

You can also try WinGHCi, which should already be installed.

like image 121
Michael Avatar answered Oct 04 '22 16:10

Michael


Not having received any responses here, I cross-posted the question to the project's GitHub repository.

Apparently, this issue seems to be related to the mintty terminal emulator. If you instead install Git Bash with the ConHost emulator, the problem goes away.

like image 44
Mark Seemann Avatar answered Oct 04 '22 16:10

Mark Seemann