Skip to content

Commit 89b6324

Browse files
committed
Fix commercialhaskell#4205: Push env down to displayANSISimple
1 parent ad524e5 commit 89b6324

2 files changed

Lines changed: 24 additions & 8 deletions

File tree

src/Stack/PrettyPrint.hs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ displayWithColor
5555
displayWithColor x = do
5656
useAnsi <- view useColorL
5757
termWidth <- view $ runnerL.to runnerTermWidth
58-
return $ (if useAnsi then displayAnsi else displayPlain) termWidth x
58+
(if useAnsi then displayAnsi else displayPlain) termWidth x
5959

6060
-- TODO: switch to using implicit callstacks once 7.8 support is dropped
6161

src/Text/PrettyPrint/Leijen/Extended.hs

Lines changed: 23 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,8 @@ module Text.PrettyPrint.Leijen.Extended
2626
-- See "System.Console.ANSI" for 'SGR' values to use beyond the colors
2727
-- provided.
2828
AnsiDoc, AnsiAnn(..), HasAnsiAnn(..),
29-
hDisplayAnsi, displayAnsi, displayPlain, renderDefault,
29+
-- hDisplayAnsi,
30+
displayAnsi, displayPlain, renderDefault,
3031

3132
-- ** Color combinators
3233
black, red, green, yellow, blue, magenta, cyan, white,
@@ -125,6 +126,7 @@ import qualified Data.Text.IO as T
125126
import qualified Data.Text.Lazy as LT
126127
import qualified Data.Text.Lazy.Builder as LTB
127128
import Stack.Prelude hiding (Display (..))
129+
import Stack.Types.Runner (HasRunner)
128130
import System.Console.ANSI (Color(..), ColorIntensity(..), ConsoleLayer(..), ConsoleIntensity(..), SGR(..), setSGRCode, hSupportsANSI)
129131
import qualified Text.PrettyPrint.Annotated.Leijen as P
130132
import Text.PrettyPrint.Annotated.Leijen hiding ((<>), display)
@@ -178,27 +180,41 @@ instance HasAnsiAnn AnsiAnn where
178180
instance HasAnsiAnn () where
179181
getAnsiAnn _ = mempty
180182

181-
displayPlain :: Display a => Int -> a -> T.Text
182-
displayPlain w = LT.toStrict . displayAnsiSimple . renderDefault w . fmap (const mempty) . display
183+
displayPlain
184+
:: (Display a, HasRunner env, HasLogFunc env, MonadReader env m,
185+
HasCallStack)
186+
=> Int -> a -> m T.Text
187+
displayPlain w x = do
188+
t <- (displayAnsiSimple . renderDefault w . fmap (const mempty) . display) x
189+
return $ LT.toStrict t
183190

184191
-- TODO: tweak these settings more?
185192
-- TODO: options for settings if this is released as a lib
186193

187194
renderDefault :: Int -> Doc a -> SimpleDoc a
188195
renderDefault = renderPretty 1
189196

190-
displayAnsi :: (Display a, HasAnsiAnn (Ann a)) => Int -> a -> T.Text
191-
displayAnsi w = LT.toStrict . displayAnsiSimple . renderDefault w . toAnsiDoc . display
197+
displayAnsi
198+
:: (Display a, HasAnsiAnn (Ann a), HasRunner env, HasLogFunc env,
199+
MonadReader env m, HasCallStack)
200+
=> Int -> a -> m T.Text
201+
displayAnsi w x = do
202+
t <- (displayAnsiSimple . renderDefault w . toAnsiDoc . display) x
203+
return $ LT.toStrict t
192204

205+
{-
193206
hDisplayAnsi
194207
:: (Display a, HasAnsiAnn (Ann a), MonadIO m)
195208
=> Handle -> Int -> a -> m ()
196209
hDisplayAnsi h w x = liftIO $ do
197210
useAnsi <- hSupportsANSI h
198211
T.hPutStr h $ if useAnsi then displayAnsi w x else displayPlain w x
212+
-}
199213

200-
displayAnsiSimple :: SimpleDoc AnsiAnn -> LT.Text
201-
displayAnsiSimple doc =
214+
displayAnsiSimple
215+
:: (HasRunner env, HasLogFunc env, MonadReader env m, HasCallStack)
216+
=> SimpleDoc AnsiAnn -> m LT.Text
217+
displayAnsiSimple doc = return $
202218
LTB.toLazyText $ flip runReader mempty $ displayDecoratedWrap go doc
203219
where
204220
go (AnsiAnn sgrs) inner = do

0 commit comments

Comments
 (0)