如何设置 GHCi 提示以显示由自定义分隔符分隔的模块?
How to set GHCi prompt to display modules separated by a custom separator?
目前我的 ghci 提示是这样的:
我想让它看起来像这样:
或者像这样
关于如何执行此操作的任何想法?我的配置(ghci.conf)文件内容如下所示
:set prompt "\ESC[33m\STX[%s]\ESC[38;5;86m\STX \x03BB > \ESC[0m\STX"
其中我遵循的语法写在:
您可以使用 prompt-function
而不是 prompt
来 运行 更高级的 Haskell 提示功能。这是第二个提示的示例 ghci.conf
:
:{
prompter :: [String] -> Int -> IO String
prompter modules line = return $
concat [ "\ESC[33m\STX["
, Data.List.intercalate ", " modules
, "]\ESC[38;5;86m\STX \x03BB > \ESC[0m\STX"
]
:}
:set prompt-function prompter
或者,对于数字,您可以使用 zipWith
:
:{
prompter :: [String] -> Int -> IO String
prompter modules line = return $
concat [ "\ESC[33m\STX["
-- this is the only line that changed
, Data.List.intercalate ", " $ zipWith (\n m -> concat [show n, ".", m]) [1..] modules
, "]\ESC[38;5;86m\STX \x03BB > \ESC[0m\STX"
]
:}
:set prompt-function prompter
我将把它作为练习来编写续行,但它非常相似,只涉及 prompt-cont-function
。
目前我的 ghci 提示是这样的:
我想让它看起来像这样:
或者像这样
关于如何执行此操作的任何想法?我的配置(ghci.conf)文件内容如下所示
:set prompt "\ESC[33m\STX[%s]\ESC[38;5;86m\STX \x03BB > \ESC[0m\STX"
其中我遵循的语法写在:
您可以使用 prompt-function
而不是 prompt
来 运行 更高级的 Haskell 提示功能。这是第二个提示的示例 ghci.conf
:
:{
prompter :: [String] -> Int -> IO String
prompter modules line = return $
concat [ "\ESC[33m\STX["
, Data.List.intercalate ", " modules
, "]\ESC[38;5;86m\STX \x03BB > \ESC[0m\STX"
]
:}
:set prompt-function prompter
或者,对于数字,您可以使用 zipWith
:
:{
prompter :: [String] -> Int -> IO String
prompter modules line = return $
concat [ "\ESC[33m\STX["
-- this is the only line that changed
, Data.List.intercalate ", " $ zipWith (\n m -> concat [show n, ".", m]) [1..] modules
, "]\ESC[38;5;86m\STX \x03BB > \ESC[0m\STX"
]
:}
:set prompt-function prompter
我将把它作为练习来编写续行,但它非常相似,只涉及 prompt-cont-function
。