Greater customization of GHCi prompt
authorniksaz <nikitasazanovich@gmail.com>
Sun, 1 May 2016 11:34:45 +0000 (13:34 +0200)
committerBen Gamari <ben@smart-cactus.org>
Sun, 1 May 2016 21:29:49 +0000 (23:29 +0200)
commit533037cc58a7c50e1c014e27e8b971d53e7b47bd
tree6bdc053c60cc3b8d2254a0cc14569c2207c317f8
parent18676a4a0dfe79e2704e48be5c8716a656825efe
Greater customization of GHCi prompt

This patch is trying to redesign the :set prompt option to take not a
String but a Haskell function, like [String] -> Int -> IO String, where
[String] is the list of the names of the currently loaded modules and
Int is the line number. Currently you may set prompt function with
**:set promt-function [String] -> Int -> IO String** option and old
version is also available - :set prompt String.

So, it looks like I've almost completed this patch:

1) Now we have a lot of escape sequences - 13 to be exact. Most of them
   are similar to bash prompt escape sequences. Thus they are quite handy.

2) We may use the special escape sequence to call shell functions, for
   example "%call(ls -l -a)".

3) We may use :set prompt-function to set PFunction to handle prompt.
   It is just [String] -> Int -> IO String.

Reviewers: erikd, austin, mpickering, bgamari

Reviewed By: mpickering, bgamari

Subscribers: mpickering, thomie

Differential Revision: https://phabricator.haskell.org/D2084

GHC Trac Issues: #5850
docs/users_guide/ghci.rst
ghc/GHCi/UI.hs
ghc/GHCi/UI/Monad.hs
testsuite/tests/ghci/scripts/all.T
testsuite/tests/ghci/scripts/ghci060.script [new file with mode: 0644]
testsuite/tests/ghci/scripts/ghci060.stderr [new file with mode: 0644]
testsuite/tests/ghci/scripts/ghci061.hs [new file with mode: 0644]
testsuite/tests/ghci/scripts/ghci061.script [new file with mode: 0644]
testsuite/tests/ghci/scripts/ghci061.stderr [new file with mode: 0644]