packages feed

vty 5.32 → 5.33

raw patch · 23 files changed

+391/−294 lines, 23 filesdep ~basedep ~microlensdep ~random

Dependency ranges changed: base, microlens, random

Files

CHANGELOG.md view
@@ -1,4 +1,20 @@ +5.33+----++API changes:+* The `Cursor` type got a new `PositionOnly` constructor for cursor+  placement without visibility.++Package changes:+* Relaxed upper bound for `random`+* Updated `microlens` bounds to allow 0.4.12++Other improvements:+* Various hlint-driven improvements (thanks Willem Van Onsem)+* The implementation of `color240` was improved (thanks (Willem Van+  Onsem)+ 5.32 ---- 
src/Codec/Binary/UTF8/Debug.hs view
@@ -14,5 +14,4 @@ utf8FromIso = encode . map toEnum  ppUtf8 :: [Int] -> IO ()-ppUtf8 = print . map (\f -> f "") . map showHex . utf8FromIso-+ppUtf8 = print . map (`showHex` "") . utf8FromIso
src/Data/Terminfo/Eval.hs view
@@ -42,7 +42,7 @@  readParam :: Word -> Eval CapParam readParam pn = do-    !params <- get >>= return . evalParams+    !params <- evalParams <$> get     return $! genericIndex params pn  push :: CapParam -> Eval ()@@ -64,11 +64,11 @@     in snd $ runWriter (runStateT (writeCapOps (capOps cap)) s0)  writeCapOps :: CapOps -> Eval ()-writeCapOps ops = mapM_ writeCapOp ops+writeCapOps = mapM_ writeCapOp  writeCapOp :: CapOp -> Eval () writeCapOp (Bytes !offset !count) = do-    !cap <- get >>= return . evalExpression+    !cap <- evalExpression <$> get     let bytes = Vector.take count $ Vector.drop offset (capBytes cap)     Vector.forM_ bytes $ tell.writeWord8 writeCapOp DecOut = do
src/Data/Terminfo/Parse.hs view
@@ -2,7 +2,6 @@ {-# LANGUAGE CPP #-} {-# OPTIONS_HADDOCK hide #-} {-# LANGUAGE NoMonomorphismRestriction #-}-{-# LANGUAGE NamedFieldPuns #-} {-# OPTIONS_GHC -funbox-strict-fields -O #-}  module Data.Terminfo.Parse@@ -39,7 +38,7 @@         ++ " <= " ++ show (sourceString c)         where             hexDump :: [Word8] -> String-            hexDump = foldr (\b s -> showHex b s) ""+            hexDump = foldr showHex ""  instance NFData CapExpression where     rnf (CapExpression ops !_bytes !str !c !pOps)@@ -99,7 +98,7 @@         Left e -> Left e         Right buildResults -> Right $ constructCapExpression capString buildResults -constructCapExpression :: [Char] -> BuildResults -> CapExpression+constructCapExpression :: String -> BuildResults -> CapExpression constructCapExpression capString buildResults =     let expr = CapExpression                 { capOps = outCapOps buildResults@@ -128,7 +127,7 @@ literalPercentParser :: CapParser BuildResults literalPercentParser = do     _ <- char '%'-    startOffset <- getState >>= return . nextOffset+    startOffset <- nextOffset <$> getState     incOffset 1     return $ BuildResults 0 [Bytes startOffset 1] [] @@ -154,7 +153,7 @@ pushOpParser :: CapParser BuildResults pushOpParser = do     _ <- char 'p'-    paramN <- digit >>= return . (\d -> read [d])+    paramN <- read . pure <$> digit     incOffset 2     return $ BuildResults (fromEnum paramN) [PushParam $ paramN - 1] [] @@ -299,7 +298,7 @@ bytesOpParser :: CapParser BuildResults bytesOpParser = do     bytes <- many1 $ satisfy (/= '%')-    startOffset <- getState >>= return . nextOffset+    startOffset <- nextOffset <$> getState     let !c = length bytes     !s <- getState     let s' = s { nextOffset = startOffset + c }@@ -336,9 +335,9 @@ instance Semigroup BuildResults where     v0 <> v1         = BuildResults-        { outParamCount = (outParamCount v0) `max` (outParamCount v1)-        , outCapOps = (outCapOps v0) <> (outCapOps v1)-        , outParamOps = (outParamOps v0) <> (outParamOps v1)+        { outParamCount = outParamCount v0 `max` outParamCount v1+        , outCapOps = outCapOps v0 <> outCapOps v1+        , outParamOps = outParamOps v0 <> outParamOps v1         }  instance Monoid BuildResults where
src/Graphics/Vty.hs view
@@ -166,7 +166,7 @@ internalMkVty input out = do     reserveDisplay out -    shutdownVar <- atomically $ newTVar False+    shutdownVar <- newTVarIO False     let shutdownIo = do             alreadyShutdown <- atomically $ swapTVar shutdownVar True             when (not alreadyShutdown) $ do@@ -174,7 +174,7 @@                 releaseDisplay out                 releaseTerminal out -    let shutdownStatus = atomically $ readTVar shutdownVar+    let shutdownStatus = readTVarIO shutdownVar      lastPicRef <- newIORef Nothing     lastUpdateRef <- newIORef Nothing
src/Graphics/Vty/Attributes.hs view
@@ -1,7 +1,4 @@ {-# LANGUAGE CPP #-}-{-# LANGUAGE StandaloneDeriving #-}-{-# LANGUAGE GADTs #-}-{-# LANGUAGE RankNTypes #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE DeriveAnyClass #-} @@ -146,19 +143,13 @@ -- | The style and color attributes can either be the terminal defaults. -- Or be equivalent to the previously applied style. Or be a specific -- value.-data MaybeDefault v where-    Default :: MaybeDefault v-    KeepCurrent :: MaybeDefault v-    SetTo :: forall v . ( Eq v, Show v, Read v ) => !v -> MaybeDefault v+data MaybeDefault v = Default | KeepCurrent | SetTo !v+  deriving (Eq, Read, Show)  instance (NFData v) => NFData (MaybeDefault v) where     rnf Default = ()     rnf KeepCurrent = ()     rnf (SetTo v) = rnf v--deriving instance Eq v => Eq (MaybeDefault v)-deriving instance Eq v => Show (MaybeDefault v)-deriving instance (Eq v, Show v, Read v) => Read (MaybeDefault v)  instance Eq v => Semigroup (MaybeDefault v) where     Default     <> Default     = Default
src/Graphics/Vty/Attributes/Color240.hs view
@@ -39,226 +39,18 @@     | r == 218 && g == 218 && b == 218 = 237     | r == 228 && g == 228 && b == 228 = 238     | r == 238 && g == 238 && b == 238 = 239-    | r <= 0 && g <= 0 && b <= 0 = 0-    | r <= 0 && g <= 0 && b <= 95 = 1-    | r <= 0 && g <= 0 && b <= 135 = 2-    | r <= 0 && g <= 0 && b <= 175 = 3-    | r <= 0 && g <= 0 && b <= 215 = 4-    | r <= 0 && g <= 0 && b <= 255 = 5-    | r <= 0 && g <= 95 && b <= 0 = 6-    | r <= 0 && g <= 95 && b <= 95 = 7-    | r <= 0 && g <= 95 && b <= 135 = 8-    | r <= 0 && g <= 95 && b <= 175 = 9-    | r <= 0 && g <= 95 && b <= 215 = 10-    | r <= 0 && g <= 95 && b <= 255 = 11-    | r <= 0 && g <= 135 && b <= 0 = 12-    | r <= 0 && g <= 135 && b <= 95 = 13-    | r <= 0 && g <= 135 && b <= 135 = 14-    | r <= 0 && g <= 135 && b <= 175 = 15-    | r <= 0 && g <= 135 && b <= 215 = 16-    | r <= 0 && g <= 135 && b <= 255 = 17-    | r <= 0 && g <= 175 && b <= 0 = 18-    | r <= 0 && g <= 175 && b <= 95 = 19-    | r <= 0 && g <= 175 && b <= 135 = 20-    | r <= 0 && g <= 175 && b <= 175 = 21-    | r <= 0 && g <= 175 && b <= 215 = 22-    | r <= 0 && g <= 175 && b <= 255 = 23-    | r <= 0 && g <= 215 && b <= 0 = 24-    | r <= 0 && g <= 215 && b <= 95 = 25-    | r <= 0 && g <= 215 && b <= 135 = 26-    | r <= 0 && g <= 215 && b <= 175 = 27-    | r <= 0 && g <= 215 && b <= 215 = 28-    | r <= 0 && g <= 215 && b <= 255 = 29-    | r <= 0 && g <= 255 && b <= 0 = 30-    | r <= 0 && g <= 255 && b <= 95 = 31-    | r <= 0 && g <= 255 && b <= 135 = 32-    | r <= 0 && g <= 255 && b <= 175 = 33-    | r <= 0 && g <= 255 && b <= 215 = 34-    | r <= 0 && g <= 255 && b <= 255 = 35-    | r <= 95 && g <= 0 && b <= 0 = 36-    | r <= 95 && g <= 0 && b <= 95 = 37-    | r <= 95 && g <= 0 && b <= 135 = 38-    | r <= 95 && g <= 0 && b <= 175 = 39-    | r <= 95 && g <= 0 && b <= 215 = 40-    | r <= 95 && g <= 0 && b <= 255 = 41-    | r <= 95 && g <= 95 && b <= 0 = 42-    | r <= 95 && g <= 95 && b <= 95 = 43-    | r <= 95 && g <= 95 && b <= 135 = 44-    | r <= 95 && g <= 95 && b <= 175 = 45-    | r <= 95 && g <= 95 && b <= 215 = 46-    | r <= 95 && g <= 95 && b <= 255 = 47-    | r <= 95 && g <= 135 && b <= 0 = 48-    | r <= 95 && g <= 135 && b <= 95 = 49-    | r <= 95 && g <= 135 && b <= 135 = 50-    | r <= 95 && g <= 135 && b <= 175 = 51-    | r <= 95 && g <= 135 && b <= 215 = 52-    | r <= 95 && g <= 135 && b <= 255 = 53-    | r <= 95 && g <= 175 && b <= 0 = 54-    | r <= 95 && g <= 175 && b <= 95 = 55-    | r <= 95 && g <= 175 && b <= 135 = 56-    | r <= 95 && g <= 175 && b <= 175 = 57-    | r <= 95 && g <= 175 && b <= 215 = 58-    | r <= 95 && g <= 175 && b <= 255 = 59-    | r <= 95 && g <= 215 && b <= 0 = 60-    | r <= 95 && g <= 215 && b <= 95 = 61-    | r <= 95 && g <= 215 && b <= 135 = 62-    | r <= 95 && g <= 215 && b <= 175 = 63-    | r <= 95 && g <= 215 && b <= 215 = 64-    | r <= 95 && g <= 215 && b <= 255 = 65-    | r <= 95 && g <= 255 && b <= 0 = 66-    | r <= 95 && g <= 255 && b <= 95 = 67-    | r <= 95 && g <= 255 && b <= 135 = 68-    | r <= 95 && g <= 255 && b <= 175 = 69-    | r <= 95 && g <= 255 && b <= 215 = 70-    | r <= 95 && g <= 255 && b <= 255 = 71-    | r <= 135 && g <= 0 && b <= 0 = 72-    | r <= 135 && g <= 0 && b <= 95 = 73-    | r <= 135 && g <= 0 && b <= 135 = 74-    | r <= 135 && g <= 0 && b <= 175 = 75-    | r <= 135 && g <= 0 && b <= 215 = 76-    | r <= 135 && g <= 0 && b <= 255 = 77-    | r <= 135 && g <= 95 && b <= 0 = 78-    | r <= 135 && g <= 95 && b <= 95 = 79-    | r <= 135 && g <= 95 && b <= 135 = 80-    | r <= 135 && g <= 95 && b <= 175 = 81-    | r <= 135 && g <= 95 && b <= 215 = 82-    | r <= 135 && g <= 95 && b <= 255 = 83-    | r <= 135 && g <= 135 && b <= 0 = 84-    | r <= 135 && g <= 135 && b <= 95 = 85-    | r <= 135 && g <= 135 && b <= 135 = 86-    | r <= 135 && g <= 135 && b <= 175 = 87-    | r <= 135 && g <= 135 && b <= 215 = 88-    | r <= 135 && g <= 135 && b <= 255 = 89-    | r <= 135 && g <= 175 && b <= 0 = 90-    | r <= 135 && g <= 175 && b <= 95 = 91-    | r <= 135 && g <= 175 && b <= 135 = 92-    | r <= 135 && g <= 175 && b <= 175 = 93-    | r <= 135 && g <= 175 && b <= 215 = 94-    | r <= 135 && g <= 175 && b <= 255 = 95-    | r <= 135 && g <= 215 && b <= 0 = 96-    | r <= 135 && g <= 215 && b <= 95 = 97-    | r <= 135 && g <= 215 && b <= 135 = 98-    | r <= 135 && g <= 215 && b <= 175 = 99-    | r <= 135 && g <= 215 && b <= 215 = 100-    | r <= 135 && g <= 215 && b <= 255 = 101-    | r <= 135 && g <= 255 && b <= 0 = 102-    | r <= 135 && g <= 255 && b <= 95 = 103-    | r <= 135 && g <= 255 && b <= 135 = 104-    | r <= 135 && g <= 255 && b <= 175 = 105-    | r <= 135 && g <= 255 && b <= 215 = 106-    | r <= 135 && g <= 255 && b <= 255 = 107-    | r <= 175 && g <= 0 && b <= 0 = 108-    | r <= 175 && g <= 0 && b <= 95 = 109-    | r <= 175 && g <= 0 && b <= 135 = 110-    | r <= 175 && g <= 0 && b <= 175 = 111-    | r <= 175 && g <= 0 && b <= 215 = 112-    | r <= 175 && g <= 0 && b <= 255 = 113-    | r <= 175 && g <= 95 && b <= 0 = 114-    | r <= 175 && g <= 95 && b <= 95 = 115-    | r <= 175 && g <= 95 && b <= 135 = 116-    | r <= 175 && g <= 95 && b <= 175 = 117-    | r <= 175 && g <= 95 && b <= 215 = 118-    | r <= 175 && g <= 95 && b <= 255 = 119-    | r <= 175 && g <= 135 && b <= 0 = 120-    | r <= 175 && g <= 135 && b <= 95 = 121-    | r <= 175 && g <= 135 && b <= 135 = 122-    | r <= 175 && g <= 135 && b <= 175 = 123-    | r <= 175 && g <= 135 && b <= 215 = 124-    | r <= 175 && g <= 135 && b <= 255 = 125-    | r <= 175 && g <= 175 && b <= 0 = 126-    | r <= 175 && g <= 175 && b <= 95 = 127-    | r <= 175 && g <= 175 && b <= 135 = 128-    | r <= 175 && g <= 175 && b <= 175 = 129-    | r <= 175 && g <= 175 && b <= 215 = 130-    | r <= 175 && g <= 175 && b <= 255 = 131-    | r <= 175 && g <= 215 && b <= 0 = 132-    | r <= 175 && g <= 215 && b <= 95 = 133-    | r <= 175 && g <= 215 && b <= 135 = 134-    | r <= 175 && g <= 215 && b <= 175 = 135-    | r <= 175 && g <= 215 && b <= 215 = 136-    | r <= 175 && g <= 215 && b <= 255 = 137-    | r <= 175 && g <= 255 && b <= 0 = 138-    | r <= 175 && g <= 255 && b <= 95 = 139-    | r <= 175 && g <= 255 && b <= 135 = 140-    | r <= 175 && g <= 255 && b <= 175 = 141-    | r <= 175 && g <= 255 && b <= 215 = 142-    | r <= 175 && g <= 255 && b <= 255 = 143-    | r <= 215 && g <= 0 && b <= 0 = 144-    | r <= 215 && g <= 0 && b <= 95 = 145-    | r <= 215 && g <= 0 && b <= 135 = 146-    | r <= 215 && g <= 0 && b <= 175 = 147-    | r <= 215 && g <= 0 && b <= 215 = 148-    | r <= 215 && g <= 0 && b <= 255 = 149-    | r <= 215 && g <= 95 && b <= 0 = 150-    | r <= 215 && g <= 95 && b <= 95 = 151-    | r <= 215 && g <= 95 && b <= 135 = 152-    | r <= 215 && g <= 95 && b <= 175 = 153-    | r <= 215 && g <= 95 && b <= 215 = 154-    | r <= 215 && g <= 95 && b <= 255 = 155-    | r <= 215 && g <= 135 && b <= 0 = 156-    | r <= 215 && g <= 135 && b <= 95 = 157-    | r <= 215 && g <= 135 && b <= 135 = 158-    | r <= 215 && g <= 135 && b <= 175 = 159-    | r <= 215 && g <= 135 && b <= 215 = 160-    | r <= 215 && g <= 135 && b <= 255 = 161-    | r <= 215 && g <= 175 && b <= 0 = 162-    | r <= 215 && g <= 175 && b <= 95 = 163-    | r <= 215 && g <= 175 && b <= 135 = 164-    | r <= 215 && g <= 175 && b <= 175 = 165-    | r <= 215 && g <= 175 && b <= 215 = 166-    | r <= 215 && g <= 175 && b <= 255 = 167-    | r <= 215 && g <= 215 && b <= 0 = 168-    | r <= 215 && g <= 215 && b <= 95 = 169-    | r <= 215 && g <= 215 && b <= 135 = 170-    | r <= 215 && g <= 215 && b <= 175 = 171-    | r <= 215 && g <= 215 && b <= 215 = 172-    | r <= 215 && g <= 215 && b <= 255 = 173-    | r <= 215 && g <= 255 && b <= 0 = 174-    | r <= 215 && g <= 255 && b <= 95 = 175-    | r <= 215 && g <= 255 && b <= 135 = 176-    | r <= 215 && g <= 255 && b <= 175 = 177-    | r <= 215 && g <= 255 && b <= 215 = 178-    | r <= 215 && g <= 255 && b <= 255 = 179-    | r <= 255 && g <= 0 && b <= 0 = 180-    | r <= 255 && g <= 0 && b <= 95 = 181-    | r <= 255 && g <= 0 && b <= 135 = 182-    | r <= 255 && g <= 0 && b <= 175 = 183-    | r <= 255 && g <= 0 && b <= 215 = 184-    | r <= 255 && g <= 0 && b <= 255 = 185-    | r <= 255 && g <= 95 && b <= 0 = 186-    | r <= 255 && g <= 95 && b <= 95 = 187-    | r <= 255 && g <= 95 && b <= 135 = 188-    | r <= 255 && g <= 95 && b <= 175 = 189-    | r <= 255 && g <= 95 && b <= 215 = 190-    | r <= 255 && g <= 95 && b <= 255 = 191-    | r <= 255 && g <= 135 && b <= 0 = 192-    | r <= 255 && g <= 135 && b <= 95 = 193-    | r <= 255 && g <= 135 && b <= 135 = 194-    | r <= 255 && g <= 135 && b <= 175 = 195-    | r <= 255 && g <= 135 && b <= 215 = 196-    | r <= 255 && g <= 135 && b <= 255 = 197-    | r <= 255 && g <= 175 && b <= 0 = 198-    | r <= 255 && g <= 175 && b <= 95 = 199-    | r <= 255 && g <= 175 && b <= 135 = 200-    | r <= 255 && g <= 175 && b <= 175 = 201-    | r <= 255 && g <= 175 && b <= 215 = 202-    | r <= 255 && g <= 175 && b <= 255 = 203-    | r <= 255 && g <= 215 && b <= 0 = 204-    | r <= 255 && g <= 215 && b <= 95 = 205-    | r <= 255 && g <= 215 && b <= 135 = 206-    | r <= 255 && g <= 215 && b <= 175 = 207-    | r <= 255 && g <= 215 && b <= 215 = 208-    | r <= 255 && g <= 215 && b <= 255 = 209-    | r <= 255 && g <= 255 && b <= 0 = 210-    | r <= 255 && g <= 255 && b <= 95 = 211-    | r <= 255 && g <= 255 && b <= 135 = 212-    | r <= 255 && g <= 255 && b <= 175 = 213-    | r <= 255 && g <= 255 && b <= 215 = 214-    | r <= 255 && g <= 255 && b <= 255 = 215-    | otherwise = error (printf "RGB color %d %d %d does not map to 240 palette."+    | otherwise = 36 * go r + 6 * go g + go b+    where go = simpleColor_ (error (printf "RGB color %d %d %d does not map to 240 palette."                                 (fromIntegral r :: Int)                                 (fromIntegral g :: Int)-                                (fromIntegral b :: Int))+                                (fromIntegral b :: Int)))++simpleColor_ :: Integral i => Word8 -> i -> Word8+simpleColor_ e c+    | c <= 0 = 0+    | c <= 95 = 1+    | c <= 255 = fromIntegral ((c-16) `div` 40)+    | otherwise = e  -- | Create a RGB triple from a value in the Color240 set. color240CodeToRGB :: Word8 -> Maybe (Int, Int, Int)
src/Graphics/Vty/Image.hs view
@@ -1,5 +1,4 @@ -- Copyright 2009-2010 Corey O'Connor-{-# LANGUAGE BangPatterns #-} {-# LANGUAGE NamedFieldPuns #-} {-# LANGUAGE DisambiguateRecordFields #-} -- | A Vty program makes 'Picture's from 'Image's. This module provides
src/Graphics/Vty/Image/Internal.hs view
@@ -146,7 +146,7 @@  -- | pretty print just the structure of an image. ppImageStructure :: Image -> String-ppImageStructure inImg = go 0 inImg+ppImageStructure = go 0     where         go indent img = tab indent ++ pp indent img         tab indent = concat $ replicate indent "  "
src/Graphics/Vty/Inline.hs view
@@ -1,5 +1,3 @@-{-# LANGUAGE BangPatterns #-}- -- | The inline module provides a limited interface to changing the -- style of terminal output. The intention is for this interface to be -- used inline with other output systems.@@ -85,8 +83,8 @@ removeStyle sMask = modify $ \s ->     s { inlineAttr =           let style' = case attrStyle (inlineAttr s) of-                Default -> error $ "Graphics.Vty.Inline: Cannot removeStyle if applyStyle never used."-                KeepCurrent -> error $ "Graphics.Vty.Inline: Cannot removeStyle if applyStyle never used."+                Default -> error "Graphics.Vty.Inline: Cannot removeStyle if applyStyle never used."+                KeepCurrent -> error "Graphics.Vty.Inline: Cannot removeStyle if applyStyle never used."                 SetTo st -> st .&. complement sMask           in (inlineAttr s) { attrStyle = SetTo style' }       }
src/Graphics/Vty/Input/Classify.hs view
@@ -24,10 +24,10 @@ import Data.Char import Data.Word -compile :: ClassifyMap -> [Char] -> KClass+compile :: ClassifyMap -> String -> KClass compile table = cl' where     -- take all prefixes and create a set of these-    prefixSet = S.fromList $ concatMap (init . inits . fst) $ table+    prefixSet = S.fromList $ concatMap (init . inits . fst) table     maxValidInputLength = maximum (map (length . fst) table)     eventForInput = M.fromList table     cl' [] = Prefix@@ -51,7 +51,7 @@                         -- neither a prefix or a full event.                         [] -> Invalid -classify :: ClassifyMap -> [Char] -> KClass+classify :: ClassifyMap -> String -> KClass classify table =     let standardClassifier = compile table     in \s -> case s of@@ -64,7 +64,7 @@         c:cs | ord c >= 0xC2 -> classifyUtf8 c cs         _                    -> standardClassifier s -classifyUtf8 :: Char -> [Char] -> KClass+classifyUtf8 :: Char -> String -> KClass classifyUtf8 c cs =   let n = utf8Length (ord c)       (codepoint,rest) = splitAt n (c:cs)
src/Graphics/Vty/Input/Classify/Types.hs view
@@ -8,7 +8,7 @@ import Graphics.Vty.Input.Events  data KClass-    = Valid Event [Char]+    = Valid Event String     -- ^ A valid event was parsed. Any unused characters from the input     -- stream are also provided.     | Invalid
src/Graphics/Vty/Input/Loop.hs view
@@ -137,7 +137,7 @@         threadWaitRead fd         bytesRead <- fdReadBuf fd bufferPtr (fromIntegral maxBytes)         if bytesRead > 0-        then fmap (map $ chr . fromIntegral) $ peekArray (fromIntegral bytesRead) bufferPtr+        then map (chr . fromIntegral) <$> peekArray (fromIntegral bytesRead) bufferPtr         else return []     when (not $ null stringRep) $ logMsg $ "input bytes: " ++ show stringRep     return stringRep@@ -224,7 +224,7 @@     Just h  -> do         Config{ vmin = Just theVmin               , vtime = Just theVtime-              , termName = Just theTerm, .. } <- readIORef $ _configRef input+              , termName = Just theTerm } <- readIORef $ _configRef input         _ <- hPrintf h "initial (vmin,vtime): %s\n" (show (theVmin, theVtime))         forM_ classifyTable $ \i -> case i of             (inBytes, EvKey k mods) -> hPrintf h "map %s %s %s %s\n" (show theTerm)
src/Graphics/Vty/Input/Terminfo.hs view
@@ -74,7 +74,7 @@ ctrlChars :: ClassifyMap ctrlChars =     [ ([toEnum x],EvKey (KChar y) [MCtrl])-    | (x,y) <- zip ([0..31]) ('@':['a'..'z']++['['..'_'])+    | (x,y) <- zip [0..31] ('@':['a'..'z']++['['..'_'])     , y /= 'i'  -- Resolve issue #3 where CTRL-i hides TAB.     , y /= 'h'  -- CTRL-h should not hide BS     ]
src/Graphics/Vty/Input/Terminfo/ANSIVT.hs view
@@ -59,7 +59,7 @@ -- This encoding depends on the terminal. functionKeys1 :: ClassifyMap functionKeys1 =-    let f ff nrs m = [ ("\ESC["++show n++"~",EvKey (KFun $ n-(nrs!!0)+ff) m) | n <- nrs ] in+    let f ff nrs m = [ ("\ESC["++show n++"~",EvKey (KFun $ n-head nrs+ff) m) | n <- nrs ] in     concat [f 1 [25,26] [MShift], f 3 [28,29] [MShift], f 5 [31..34] [MShift] ]  -- | encoding for meta plus char
src/Graphics/Vty/Output.hs view
@@ -1,4 +1,4 @@-{-# LANGUAGE RecordWildCards, NamedFieldPuns, CPP #-}+{-# LANGUAGE RecordWildCards, CPP #-} -- | This module provides functions for accessing the current terminal -- or a specific terminal device. --
src/Graphics/Vty/Output/Interface.hs view
@@ -1,5 +1,4 @@ -- Copyright Corey O'Connor-{-# LANGUAGE BangPatterns #-} {-# LANGUAGE RankNTypes #-} {-# LANGUAGE ExistentialQuantification #-} {-# LANGUAGE GADTs #-}@@ -207,6 +206,12 @@                     AbsoluteCursor x y ->                         writeShowCursor dc `mappend`                         writeMoveCursor dc (clampX x) (clampY y)+                    PositionOnly isAbs x y ->+                        if isAbs+                           then writeMoveCursor dc (clampX x) (clampY y)+                           else let (ox, oy) = charToOutputPos m (clampX x, clampY y)+                                    m = cursorOutputMap ops $ picCursor pic+                                in writeMoveCursor dc (clampX ox) (clampY oy)                     Cursor x y           ->                         let m = cursorOutputMap ops $ picCursor pic                             (ox, oy) = charToOutputPos m (clampX x, clampY y)
src/Graphics/Vty/Output/TerminfoBased.hs view
@@ -1,4 +1,3 @@-{-# LANGUAGE RecordWildCards #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE CPP #-}@@ -15,7 +14,7 @@ where  import Control.Monad (when)-import Data.Bits (shiftL)+import Data.Bits (shiftL, (.&.)) import qualified Data.ByteString as BS import Data.ByteString.Internal (toForeignPtr) import Data.Terminfo.Parse@@ -28,7 +27,6 @@  import Blaze.ByteString.Builder (Write, writeToByteString, writeStorable) -import Data.Bits ((.&.)) import Data.IORef import Data.Maybe (isJust, isNothing, fromJust) import Data.Word@@ -209,7 +207,7 @@             , assumedStateRef = newAssumedStateRef             -- I think fix would help assure tActual is the only             -- reference. I was having issues tho.-            , mkDisplayContext = \tActual -> terminfoDisplayContext tActual terminfoCaps+            , mkDisplayContext = (`terminfoDisplayContext` terminfoCaps)             }         sendCap s = sendCapToTerminal t (s terminfoCaps)         maybeSendCap s = when (isJust $ s terminfoCaps) . sendCap (fromJust . s)@@ -355,8 +353,7 @@                                      setColors                 -- implicitly resets the colors to the defaults                 SetState state -> writeCapExpr (fromJust $ setAttrStates-                                                         $ displayAttrCaps-                                                         $ terminfoCaps+                                                         $ displayAttrCaps terminfoCaps                                                )                                                (sgrArgsForState state)                                   `mappend` setItalics
src/Graphics/Vty/Picture.hs view
@@ -1,4 +1,3 @@-{-# LANGUAGE BangPatterns #-} -- A 'Picture' is a background paired with a set of 'Image' layers. The -- 'Picture' data structure is representative of the final terminal -- view.@@ -82,6 +81,14 @@     NoCursor     -- | Show the cursor at the given logical column accounting for     -- character width in the presence of multi-column characters.+    | PositionOnly !Bool !Int !Int+    -- | Set the terminal's cursor position without displaying a cursor+    -- character. This is important for accessibility with screen+    -- readers where a cursor position needs to be reported but we may+    -- not want to show a block cursor in that location for cosmetic+    -- reasons. The boolean argument indicates whether the positioning+    -- should be absolute as with 'AbsoluteCursor' ('True') or logical+    -- as with 'Cursor' ('False').     | Cursor !Int !Int     -- | Show the cursor at the given absolute terminal column and row     | AbsoluteCursor !Int !Int
src/Graphics/Vty/PictureToSpans.hs view
@@ -81,7 +81,7 @@ combinedOpsForLayers pic r     | regionWidth r == 0 || regionHeight r == 0 = MVector.new 0     | otherwise = do-        layerOps <- mapM (\layer -> buildSpans layer r) (picLayers pic)+        layerOps <- mapM (`buildSpans` r) (picLayers pic)         case layerOps of             []    -> fail "empty picture"             [ops] -> substituteSkips (picBackground pic) ops@@ -136,8 +136,8 @@     return upper  mergeRowUnder :: SpanOps -> SpanOps -> SpanOps-mergeRowUnder upperRowOps lowerRowOps =-    onUpperOp Vector.empty (Vector.head upperRowOps) (Vector.tail upperRowOps) lowerRowOps+mergeRowUnder upperRowOps =+    onUpperOp Vector.empty (Vector.head upperRowOps) (Vector.tail upperRowOps)     where         -- H: it will never be the case that we are out of upper ops         -- before lower ops.
src/Graphics/Vty/Span.hs view
@@ -1,6 +1,4 @@ -- Copyright Corey O'Connor-{-# LANGUAGE BangPatterns #-}-{-# LANGUAGE NamedFieldPuns #-} {-# LANGUAGE GADTs #-} -- | A picture is translated into a sequences of state changes and -- character spans. The attribute is applied to all following spans,@@ -52,7 +50,7 @@ dropOps w = snd . splitOpsAt w  splitOpsAt :: Int -> SpanOps -> (SpanOps, SpanOps)-splitOpsAt inW inOps = splitOpsAt' inW inOps+splitOpsAt = splitOpsAt'     where         splitOpsAt' 0 ops = (Vector.empty, ops)         splitOpsAt' remainingColumns ops = case Vector.head ops of@@ -103,7 +101,7 @@  -- | The number of rows the DisplayOps are defined for. displayOpsRows :: DisplayOps -> Int-displayOpsRows ops = Vector.length ops+displayOpsRows = Vector.length  affectedRegion :: DisplayOps -> DisplayRegion affectedRegion ops = (displayOpsColumns ops, displayOpsRows ops)
+ test/VerifyColor240.hs view
@@ -0,0 +1,269 @@+module VerifyColor240 where++import Data.Word(Word8)+import Verify++import Graphics.Vty.Attributes.Color240(rgbColorToColor240)++oldRgbColorToColor240 :: Integral i => i -> i -> i -> Word8+oldRgbColorToColor240 r g b+    | r < 0 && g < 0 && b < 0 = error "rgbColor with negative color component intensity"+    | r == 8 && g == 8 && b == 8 = 216+    | r == 18 && g == 18 && b == 18 = 217+    | r == 28 && g == 28 && b == 28 = 218+    | r == 38 && g == 38 && b == 38 = 219+    | r == 48 && g == 48 && b == 48 = 220+    | r == 58 && g == 58 && b == 58 = 221+    | r == 68 && g == 68 && b == 68 = 222+    | r == 78 && g == 78 && b == 78 = 223+    | r == 88 && g == 88 && b == 88 = 224+    | r == 98 && g == 98 && b == 98 = 225+    | r == 108 && g == 108 && b == 108 = 226+    | r == 118 && g == 118 && b == 118 = 227+    | r == 128 && g == 128 && b == 128 = 228+    | r == 138 && g == 138 && b == 138 = 229+    | r == 148 && g == 148 && b == 148 = 230+    | r == 158 && g == 158 && b == 158 = 231+    | r == 168 && g == 168 && b == 168 = 232+    | r == 178 && g == 178 && b == 178 = 233+    | r == 188 && g == 188 && b == 188 = 234+    | r == 198 && g == 198 && b == 198 = 235+    | r == 208 && g == 208 && b == 208 = 236+    | r == 218 && g == 218 && b == 218 = 237+    | r == 228 && g == 228 && b == 228 = 238+    | r == 238 && g == 238 && b == 238 = 239+    | r <= 0 && g <= 0 && b <= 0 = 0+    | r <= 0 && g <= 0 && b <= 95 = 1+    | r <= 0 && g <= 0 && b <= 135 = 2+    | r <= 0 && g <= 0 && b <= 175 = 3+    | r <= 0 && g <= 0 && b <= 215 = 4+    | r <= 0 && g <= 0 && b <= 255 = 5+    | r <= 0 && g <= 95 && b <= 0 = 6+    | r <= 0 && g <= 95 && b <= 95 = 7+    | r <= 0 && g <= 95 && b <= 135 = 8+    | r <= 0 && g <= 95 && b <= 175 = 9+    | r <= 0 && g <= 95 && b <= 215 = 10+    | r <= 0 && g <= 95 && b <= 255 = 11+    | r <= 0 && g <= 135 && b <= 0 = 12+    | r <= 0 && g <= 135 && b <= 95 = 13+    | r <= 0 && g <= 135 && b <= 135 = 14+    | r <= 0 && g <= 135 && b <= 175 = 15+    | r <= 0 && g <= 135 && b <= 215 = 16+    | r <= 0 && g <= 135 && b <= 255 = 17+    | r <= 0 && g <= 175 && b <= 0 = 18+    | r <= 0 && g <= 175 && b <= 95 = 19+    | r <= 0 && g <= 175 && b <= 135 = 20+    | r <= 0 && g <= 175 && b <= 175 = 21+    | r <= 0 && g <= 175 && b <= 215 = 22+    | r <= 0 && g <= 175 && b <= 255 = 23+    | r <= 0 && g <= 215 && b <= 0 = 24+    | r <= 0 && g <= 215 && b <= 95 = 25+    | r <= 0 && g <= 215 && b <= 135 = 26+    | r <= 0 && g <= 215 && b <= 175 = 27+    | r <= 0 && g <= 215 && b <= 215 = 28+    | r <= 0 && g <= 215 && b <= 255 = 29+    | r <= 0 && g <= 255 && b <= 0 = 30+    | r <= 0 && g <= 255 && b <= 95 = 31+    | r <= 0 && g <= 255 && b <= 135 = 32+    | r <= 0 && g <= 255 && b <= 175 = 33+    | r <= 0 && g <= 255 && b <= 215 = 34+    | r <= 0 && g <= 255 && b <= 255 = 35+    | r <= 95 && g <= 0 && b <= 0 = 36+    | r <= 95 && g <= 0 && b <= 95 = 37+    | r <= 95 && g <= 0 && b <= 135 = 38+    | r <= 95 && g <= 0 && b <= 175 = 39+    | r <= 95 && g <= 0 && b <= 215 = 40+    | r <= 95 && g <= 0 && b <= 255 = 41+    | r <= 95 && g <= 95 && b <= 0 = 42+    | r <= 95 && g <= 95 && b <= 95 = 43+    | r <= 95 && g <= 95 && b <= 135 = 44+    | r <= 95 && g <= 95 && b <= 175 = 45+    | r <= 95 && g <= 95 && b <= 215 = 46+    | r <= 95 && g <= 95 && b <= 255 = 47+    | r <= 95 && g <= 135 && b <= 0 = 48+    | r <= 95 && g <= 135 && b <= 95 = 49+    | r <= 95 && g <= 135 && b <= 135 = 50+    | r <= 95 && g <= 135 && b <= 175 = 51+    | r <= 95 && g <= 135 && b <= 215 = 52+    | r <= 95 && g <= 135 && b <= 255 = 53+    | r <= 95 && g <= 175 && b <= 0 = 54+    | r <= 95 && g <= 175 && b <= 95 = 55+    | r <= 95 && g <= 175 && b <= 135 = 56+    | r <= 95 && g <= 175 && b <= 175 = 57+    | r <= 95 && g <= 175 && b <= 215 = 58+    | r <= 95 && g <= 175 && b <= 255 = 59+    | r <= 95 && g <= 215 && b <= 0 = 60+    | r <= 95 && g <= 215 && b <= 95 = 61+    | r <= 95 && g <= 215 && b <= 135 = 62+    | r <= 95 && g <= 215 && b <= 175 = 63+    | r <= 95 && g <= 215 && b <= 215 = 64+    | r <= 95 && g <= 215 && b <= 255 = 65+    | r <= 95 && g <= 255 && b <= 0 = 66+    | r <= 95 && g <= 255 && b <= 95 = 67+    | r <= 95 && g <= 255 && b <= 135 = 68+    | r <= 95 && g <= 255 && b <= 175 = 69+    | r <= 95 && g <= 255 && b <= 215 = 70+    | r <= 95 && g <= 255 && b <= 255 = 71+    | r <= 135 && g <= 0 && b <= 0 = 72+    | r <= 135 && g <= 0 && b <= 95 = 73+    | r <= 135 && g <= 0 && b <= 135 = 74+    | r <= 135 && g <= 0 && b <= 175 = 75+    | r <= 135 && g <= 0 && b <= 215 = 76+    | r <= 135 && g <= 0 && b <= 255 = 77+    | r <= 135 && g <= 95 && b <= 0 = 78+    | r <= 135 && g <= 95 && b <= 95 = 79+    | r <= 135 && g <= 95 && b <= 135 = 80+    | r <= 135 && g <= 95 && b <= 175 = 81+    | r <= 135 && g <= 95 && b <= 215 = 82+    | r <= 135 && g <= 95 && b <= 255 = 83+    | r <= 135 && g <= 135 && b <= 0 = 84+    | r <= 135 && g <= 135 && b <= 95 = 85+    | r <= 135 && g <= 135 && b <= 135 = 86+    | r <= 135 && g <= 135 && b <= 175 = 87+    | r <= 135 && g <= 135 && b <= 215 = 88+    | r <= 135 && g <= 135 && b <= 255 = 89+    | r <= 135 && g <= 175 && b <= 0 = 90+    | r <= 135 && g <= 175 && b <= 95 = 91+    | r <= 135 && g <= 175 && b <= 135 = 92+    | r <= 135 && g <= 175 && b <= 175 = 93+    | r <= 135 && g <= 175 && b <= 215 = 94+    | r <= 135 && g <= 175 && b <= 255 = 95+    | r <= 135 && g <= 215 && b <= 0 = 96+    | r <= 135 && g <= 215 && b <= 95 = 97+    | r <= 135 && g <= 215 && b <= 135 = 98+    | r <= 135 && g <= 215 && b <= 175 = 99+    | r <= 135 && g <= 215 && b <= 215 = 100+    | r <= 135 && g <= 215 && b <= 255 = 101+    | r <= 135 && g <= 255 && b <= 0 = 102+    | r <= 135 && g <= 255 && b <= 95 = 103+    | r <= 135 && g <= 255 && b <= 135 = 104+    | r <= 135 && g <= 255 && b <= 175 = 105+    | r <= 135 && g <= 255 && b <= 215 = 106+    | r <= 135 && g <= 255 && b <= 255 = 107+    | r <= 175 && g <= 0 && b <= 0 = 108+    | r <= 175 && g <= 0 && b <= 95 = 109+    | r <= 175 && g <= 0 && b <= 135 = 110+    | r <= 175 && g <= 0 && b <= 175 = 111+    | r <= 175 && g <= 0 && b <= 215 = 112+    | r <= 175 && g <= 0 && b <= 255 = 113+    | r <= 175 && g <= 95 && b <= 0 = 114+    | r <= 175 && g <= 95 && b <= 95 = 115+    | r <= 175 && g <= 95 && b <= 135 = 116+    | r <= 175 && g <= 95 && b <= 175 = 117+    | r <= 175 && g <= 95 && b <= 215 = 118+    | r <= 175 && g <= 95 && b <= 255 = 119+    | r <= 175 && g <= 135 && b <= 0 = 120+    | r <= 175 && g <= 135 && b <= 95 = 121+    | r <= 175 && g <= 135 && b <= 135 = 122+    | r <= 175 && g <= 135 && b <= 175 = 123+    | r <= 175 && g <= 135 && b <= 215 = 124+    | r <= 175 && g <= 135 && b <= 255 = 125+    | r <= 175 && g <= 175 && b <= 0 = 126+    | r <= 175 && g <= 175 && b <= 95 = 127+    | r <= 175 && g <= 175 && b <= 135 = 128+    | r <= 175 && g <= 175 && b <= 175 = 129+    | r <= 175 && g <= 175 && b <= 215 = 130+    | r <= 175 && g <= 175 && b <= 255 = 131+    | r <= 175 && g <= 215 && b <= 0 = 132+    | r <= 175 && g <= 215 && b <= 95 = 133+    | r <= 175 && g <= 215 && b <= 135 = 134+    | r <= 175 && g <= 215 && b <= 175 = 135+    | r <= 175 && g <= 215 && b <= 215 = 136+    | r <= 175 && g <= 215 && b <= 255 = 137+    | r <= 175 && g <= 255 && b <= 0 = 138+    | r <= 175 && g <= 255 && b <= 95 = 139+    | r <= 175 && g <= 255 && b <= 135 = 140+    | r <= 175 && g <= 255 && b <= 175 = 141+    | r <= 175 && g <= 255 && b <= 215 = 142+    | r <= 175 && g <= 255 && b <= 255 = 143+    | r <= 215 && g <= 0 && b <= 0 = 144+    | r <= 215 && g <= 0 && b <= 95 = 145+    | r <= 215 && g <= 0 && b <= 135 = 146+    | r <= 215 && g <= 0 && b <= 175 = 147+    | r <= 215 && g <= 0 && b <= 215 = 148+    | r <= 215 && g <= 0 && b <= 255 = 149+    | r <= 215 && g <= 95 && b <= 0 = 150+    | r <= 215 && g <= 95 && b <= 95 = 151+    | r <= 215 && g <= 95 && b <= 135 = 152+    | r <= 215 && g <= 95 && b <= 175 = 153+    | r <= 215 && g <= 95 && b <= 215 = 154+    | r <= 215 && g <= 95 && b <= 255 = 155+    | r <= 215 && g <= 135 && b <= 0 = 156+    | r <= 215 && g <= 135 && b <= 95 = 157+    | r <= 215 && g <= 135 && b <= 135 = 158+    | r <= 215 && g <= 135 && b <= 175 = 159+    | r <= 215 && g <= 135 && b <= 215 = 160+    | r <= 215 && g <= 135 && b <= 255 = 161+    | r <= 215 && g <= 175 && b <= 0 = 162+    | r <= 215 && g <= 175 && b <= 95 = 163+    | r <= 215 && g <= 175 && b <= 135 = 164+    | r <= 215 && g <= 175 && b <= 175 = 165+    | r <= 215 && g <= 175 && b <= 215 = 166+    | r <= 215 && g <= 175 && b <= 255 = 167+    | r <= 215 && g <= 215 && b <= 0 = 168+    | r <= 215 && g <= 215 && b <= 95 = 169+    | r <= 215 && g <= 215 && b <= 135 = 170+    | r <= 215 && g <= 215 && b <= 175 = 171+    | r <= 215 && g <= 215 && b <= 215 = 172+    | r <= 215 && g <= 215 && b <= 255 = 173+    | r <= 215 && g <= 255 && b <= 0 = 174+    | r <= 215 && g <= 255 && b <= 95 = 175+    | r <= 215 && g <= 255 && b <= 135 = 176+    | r <= 215 && g <= 255 && b <= 175 = 177+    | r <= 215 && g <= 255 && b <= 215 = 178+    | r <= 215 && g <= 255 && b <= 255 = 179+    | r <= 255 && g <= 0 && b <= 0 = 180+    | r <= 255 && g <= 0 && b <= 95 = 181+    | r <= 255 && g <= 0 && b <= 135 = 182+    | r <= 255 && g <= 0 && b <= 175 = 183+    | r <= 255 && g <= 0 && b <= 215 = 184+    | r <= 255 && g <= 0 && b <= 255 = 185+    | r <= 255 && g <= 95 && b <= 0 = 186+    | r <= 255 && g <= 95 && b <= 95 = 187+    | r <= 255 && g <= 95 && b <= 135 = 188+    | r <= 255 && g <= 95 && b <= 175 = 189+    | r <= 255 && g <= 95 && b <= 215 = 190+    | r <= 255 && g <= 95 && b <= 255 = 191+    | r <= 255 && g <= 135 && b <= 0 = 192+    | r <= 255 && g <= 135 && b <= 95 = 193+    | r <= 255 && g <= 135 && b <= 135 = 194+    | r <= 255 && g <= 135 && b <= 175 = 195+    | r <= 255 && g <= 135 && b <= 215 = 196+    | r <= 255 && g <= 135 && b <= 255 = 197+    | r <= 255 && g <= 175 && b <= 0 = 198+    | r <= 255 && g <= 175 && b <= 95 = 199+    | r <= 255 && g <= 175 && b <= 135 = 200+    | r <= 255 && g <= 175 && b <= 175 = 201+    | r <= 255 && g <= 175 && b <= 215 = 202+    | r <= 255 && g <= 175 && b <= 255 = 203+    | r <= 255 && g <= 215 && b <= 0 = 204+    | r <= 255 && g <= 215 && b <= 95 = 205+    | r <= 255 && g <= 215 && b <= 135 = 206+    | r <= 255 && g <= 215 && b <= 175 = 207+    | r <= 255 && g <= 215 && b <= 215 = 208+    | r <= 255 && g <= 215 && b <= 255 = 209+    | r <= 255 && g <= 255 && b <= 0 = 210+    | r <= 255 && g <= 255 && b <= 95 = 211+    | r <= 255 && g <= 255 && b <= 135 = 212+    | r <= 255 && g <= 255 && b <= 175 = 213+    | r <= 255 && g <= 255 && b <= 215 = 214+    | r <= 255 && g <= 255 && b <= 255 = 215+    | otherwise = error (printf "RGB color %d %d %d does not map to 240 palette."+                                (fromIntegral r :: Int)+                                (fromIntegral g :: Int)+                                (fromIntegral b :: Int))++sameColor :: Int -> Int -> Int -> Bool+sameColor r g b = oldRgbColorToColor240 r g b == rgbColorToColor240 r g b++genVal :: Gen Int+genVal = chooseInt (0, 255)++sameColorCheck :: Property+sameColorCheck = forAll genVal (\r -> forAll genVal (\g -> forAll genVal (sameColor r g)))++tests :: IO [Test]+tests = return+  [ verify "check rgbColorToColor240 optimization is correct" sameColorCheck+  ]+
vty.cabal view
@@ -1,5 +1,5 @@ name:                vty-version:             5.32+version:             5.33 license:             BSD3 license-file:        LICENSE author:              AUTHORS@@ -45,7 +45,7 @@                        deepseq >= 1.1 && < 1.5,                        directory,                        filepath >= 1.0 && < 2.0,-                       microlens < 0.4.12,+                       microlens < 0.4.13,                        microlens-mtl,                        microlens-th,                        hashable >= 1.2,@@ -69,6 +69,7 @@   exposed-modules:     Graphics.Vty                        Graphics.Vty.Attributes                        Graphics.Vty.Attributes.Color +                       Graphics.Vty.Attributes.Color240                        Graphics.Vty.Config                        Graphics.Vty.Error                        Graphics.Vty.Image@@ -104,8 +105,7 @@                        Graphics.Vty.UnicodeWidthTable.Query                        Graphics.Vty.UnicodeWidthTable.Install -  other-modules:       Graphics.Vty.Attributes.Color240-                       Graphics.Vty.Debug.Image+  other-modules:       Graphics.Vty.Debug.Image                        Graphics.Vty.Input.Terminfo.ANSIVT    c-sources:           cbits/gwinsz.c@@ -189,7 +189,7 @@   build-depends:       vty,                        Cabal >= 1.20,                        QuickCheck >= 2.7,-                       random >= 1.0 && < 1.2,+                       random >= 1.0 && < 1.3,                        base >= 4.8 && < 5,                        bytestring,                        containers,@@ -222,7 +222,7 @@   build-depends:       vty,                        Cabal >= 1.20,                        QuickCheck >= 2.7,-                       random >= 1.0 && < 1.2,+                       random >= 1.0 && < 1.3,                        base >= 4.8 && < 5,                        bytestring,                        containers,@@ -255,7 +255,7 @@   build-depends:       vty,                        Cabal >= 1.20,                        QuickCheck >= 2.7,-                       random >= 1.0 && < 1.2,+                       random >= 1.0 && < 1.3,                        base >= 4.8 && < 5,                        bytestring,                        containers,@@ -281,7 +281,7 @@   build-depends:       vty,                        Cabal >= 1.20,                        QuickCheck >= 2.7,-                       random >= 1.0 && < 1.2,+                       random >= 1.0 && < 1.3,                        base >= 4.8 && < 5,                        bytestring,                        containers,@@ -308,7 +308,7 @@   build-depends:       vty,                        Cabal >= 1.20,                        QuickCheck >= 2.7,-                       random >= 1.0 && < 1.2,+                       random >= 1.0 && < 1.3,                        base >= 4.8 && < 5,                        blaze-builder >= 0.3.3.2 && < 0.5,                        bytestring,@@ -338,7 +338,7 @@   build-depends:       vty,                        Cabal >= 1.20,                        QuickCheck >= 2.7,-                       random >= 1.0 && < 1.2,+                       random >= 1.0 && < 1.3,                        base >= 4.8 && < 5,                        bytestring,                        containers,@@ -366,7 +366,7 @@   build-depends:       vty,                        Cabal >= 1.20,                        QuickCheck >= 2.7,-                       random >= 1.0 && < 1.2,+                       random >= 1.0 && < 1.3,                        base >= 4.8 && < 5,                        bytestring,                        containers,@@ -393,7 +393,7 @@   build-depends:       vty,                        Cabal >= 1.20,                        QuickCheck >= 2.7,-                       random >= 1.0 && < 1.2,+                       random >= 1.0 && < 1.3,                        base >= 4.8 && < 5,                        bytestring,                        containers,@@ -421,7 +421,7 @@   build-depends:       vty,                        Cabal >= 1.20,                        QuickCheck >= 2.7,-                       random >= 1.0 && < 1.2,+                       random >= 1.0 && < 1.3,                        base >= 4.8 && < 5,                        bytestring,                        containers,@@ -453,7 +453,7 @@   build-depends:       vty,                        Cabal >= 1.20,                        QuickCheck >= 2.7,-                       random >= 1.0 && < 1.2,+                       random >= 1.0 && < 1.3,                        base >= 4.8 && < 5,                        bytestring,                        containers,@@ -485,7 +485,7 @@   build-depends:       vty,                        Cabal >= 1.20,                        QuickCheck >= 2.7,-                       random >= 1.0 && < 1.2,+                       random >= 1.0 && < 1.3,                        base >= 4.8 && < 5,                        bytestring,                        containers,@@ -517,6 +517,32 @@   build-depends:       vty,                        Cabal >= 1.20,                        QuickCheck >= 2.7,+                       random >= 1.0 && < 1.3,+                       base >= 4.8 && < 5,+                       bytestring,+                       containers,+                       deepseq >= 1.1 && < 1.5,+                       mtl >= 1.1.1.0 && < 2.3,+                       text >= 0.11.3,+                       unix,+                       utf8-string >= 0.3 && < 1.1,+                       vector >= 0.7++test-suite verify-color-mapping+  default-language:    Haskell2010+  default-extensions:  ScopedTypeVariables++  type:                detailed-0.9++  hs-source-dirs:      test++  test-module:         VerifyColor240++  other-modules:       Verify++  build-depends:       vty,+                       Cabal >= 1.20,+                       QuickCheck >= 2.7,                        random >= 1.0 && < 1.2,                        base >= 4.8 && < 5,                        bytestring,@@ -528,6 +554,7 @@                        utf8-string >= 0.3 && < 1.1,                        vector >= 0.7 + test-suite verify-utf8-width   default-language:    Haskell2010   default-extensions:  ScopedTypeVariables@@ -543,7 +570,7 @@   build-depends:       vty,                        Cabal >= 1.20,                        QuickCheck >= 2.7,-                       random >= 1.0 && < 1.2,+                       random >= 1.0 && < 1.3,                        base >= 4.8 && < 5,                        bytestring,                        containers,@@ -571,7 +598,7 @@                        quickcheck-assertions >= 0.1.1,                        test-framework == 0.8.*,                        test-framework-smallcheck == 0.2.*,-                       random >= 1.0 && < 1.2,+                       random >= 1.0 && < 1.3,                        base >= 4.8 && < 5,                        bytestring,                        containers,@@ -607,7 +634,7 @@                        test-framework == 0.8.*,                        test-framework-smallcheck == 0.2.*,                        test-framework-hunit,-                       random >= 1.0 && < 1.2,+                       random >= 1.0 && < 1.3,                        base >= 4.8 && < 5,                        bytestring,                        containers,