Haskell GHCI Pretty打印机-未使用可使其引人注目的颜色进行渲染

Haskell GHCI Pretty打印机-未使用可使其引人注目的颜色进行渲染,haskell,ghci,Haskell,Ghci,例如,在控制台中键入-1将呈现为1: 选择文本后,可以看到它实际上是-1: .ghci文件: import qualified IPPrint import qualified Language.Haskell.HsColour as HsColour import qualified Language.Haskell.HsColour.Colourise as HsColour import qualified Language.Haskell.HsColour.Output as HsC

例如,在控制台中键入-1将呈现为1:

选择文本后,可以看到它实际上是-1:

.ghci文件:

import qualified IPPrint
import qualified Language.Haskell.HsColour as HsColour
import qualified Language.Haskell.HsColour.Colourise as HsColour
import qualified Language.Haskell.HsColour.Output as HsColour

let myColourPrefs = HsColour.defaultColourPrefs { HsColour.conid = [HsColour.Foreground HsColour.Yellow, HsColour.Bold], HsColour.conop = [HsColour.Foreground HsColour.Yellow], HsColour.string = [HsColour.Foreground HsColour.Green], HsColour.char = [HsColour.Foreground HsColour.Cyan], HsColour.number = [HsColour.Foreground HsColour.Red, HsColour.Bold], HsColour.layout = [HsColour.Foreground HsColour.White], HsColour.keyglyph = [HsColour.Foreground HsColour.White] }

let myPrint :: (Show a) => a -> IO (); myPrint = putStrLn . HsColour.hscolour (HsColour.TTYg HsColour.XTerm256Compatible) myColourPrefs False False "" False . IPPrint.pshow
:set -interactive-print=myPrint

:set prompt "\ESC[33m\STXλ> \ESC[m\STX"
:set prompt-cont "   | "
:set +m
更新

以下结果稍微好一些,但仍然可以改进:

import Text.Show.Pretty (ppShow)
import Language.Haskell.HsColour
import Language.Haskell.HsColour.Colourise
let colorPrint = putStrLn . hscolour TTY defaultColourPrefs False False "" False . ppShow
:set -interactive-print=colorPrint
更新


问题在于,以负数为前缀的破折号被错误分类为注释。

因为没有一种简单的方法可以提交实际问题的修补程序,所以我将注释颜色设置为与数字相同,以便可读:

HsColour.comment  = [HsColour.Foreground HsColour.Red, HsColour.Bold]
格奇先生

.ghci.hs

import qualified IPPrint
import qualified Language.Haskell.HsColour as HsColour
import qualified Language.Haskell.HsColour.Colourise as HsColour
import qualified Language.Haskell.HsColour.Output as HsColour

myColourPrefs = HsColour.defaultColourPrefs
    { HsColour.conid    = [HsColour.Foreground HsColour.Yellow, HsColour.Bold]
    , HsColour.conop    = [HsColour.Foreground HsColour.Yellow]
    , HsColour.string   = [HsColour.Foreground HsColour.Green]
    , HsColour.char     = [HsColour.Foreground HsColour.Cyan]
    , HsColour.number   = [HsColour.Foreground HsColour.Red, HsColour.Bold]
    , HsColour.layout   = [HsColour.Foreground HsColour.White]
    , HsColour.keyglyph = [HsColour.Foreground HsColour.White]
    , HsColour.comment  = [HsColour.Foreground HsColour.Red, HsColour.Bold] }

myPrint :: (Show a) => a -> IO ()
myPrint = putStrLn . HsColour.hscolour (HsColour.TTYg HsColour.XTerm256Compatible) myColourPrefs False False "" False . IPPrint.pshow
import qualified IPPrint
import qualified Language.Haskell.HsColour as HsColour
import qualified Language.Haskell.HsColour.Colourise as HsColour
import qualified Language.Haskell.HsColour.Output as HsColour

myColourPrefs = HsColour.defaultColourPrefs
    { HsColour.conid    = [HsColour.Foreground HsColour.Yellow, HsColour.Bold]
    , HsColour.conop    = [HsColour.Foreground HsColour.Yellow]
    , HsColour.string   = [HsColour.Foreground HsColour.Green]
    , HsColour.char     = [HsColour.Foreground HsColour.Cyan]
    , HsColour.number   = [HsColour.Foreground HsColour.Red, HsColour.Bold]
    , HsColour.layout   = [HsColour.Foreground HsColour.White]
    , HsColour.keyglyph = [HsColour.Foreground HsColour.White]
    , HsColour.comment  = [HsColour.Foreground HsColour.Red, HsColour.Bold] }

myPrint :: (Show a) => a -> IO ()
myPrint = putStrLn . HsColour.hscolour (HsColour.TTYg HsColour.XTerm256Compatible) myColourPrefs False False "" False . IPPrint.pshow