diff --git a/example/terminal-ev/Main.hs b/example/terminal-ev/Main.hs index c4e1602..5a03cd7 100644 --- a/example/terminal-ev/Main.hs +++ b/example/terminal-ev/Main.hs @@ -7,7 +7,7 @@ import Control.Monad.IO.Class import Data.Char import Data.Function (fix) -import Data.Text.Prettyprint.Doc +import Prettyprinter import System.Terminal main :: IO () diff --git a/example/terminal-out/Main.hs b/example/terminal-out/Main.hs index f22abbc..0ffa1fb 100644 --- a/example/terminal-out/Main.hs +++ b/example/terminal-out/Main.hs @@ -6,7 +6,7 @@ import Control.Concurrent import Control.Monad import Control.Monad.IO.Class -import Data.Text.Prettyprint.Doc +import Prettyprinter import System.Terminal import Prelude hiding (putString) diff --git a/example/terminal-printer/Main.hs b/example/terminal-printer/Main.hs index 5b7a40d..d9a01a2 100644 --- a/example/terminal-printer/Main.hs +++ b/example/terminal-printer/Main.hs @@ -6,7 +6,7 @@ import Control.Concurrent import Control.Monad import Control.Monad.IO.Class -import Data.Text.Prettyprint.Doc +import Prettyprinter import System.Terminal import Prelude hiding ((<>)) diff --git a/example/terminal-screen/Main.hs b/example/terminal-screen/Main.hs index 1468a9e..c15b919 100644 --- a/example/terminal-screen/Main.hs +++ b/example/terminal-screen/Main.hs @@ -7,7 +7,7 @@ import Control.Monad.Catch import Control.Monad import Control.Monad.IO.Class -import Data.Text.Prettyprint.Doc +import Prettyprinter import System.Terminal import Prelude hiding ((<>)) diff --git a/src/System/Terminal/Pretty.hs b/src/System/Terminal/Pretty.hs index 767fbe1..02b1f71 100644 --- a/src/System/Terminal/Pretty.hs +++ b/src/System/Terminal/Pretty.hs @@ -1,7 +1,7 @@ module System.Terminal.Pretty where import Data.Text as T -import Data.Text.Prettyprint.Doc +import Prettyprinter import Prelude hiding (putChar) import System.Terminal.MonadPrinter @@ -12,7 +12,7 @@ import System.Terminal.MonadPrinter -- -- @ -- import System.Terminal --- import Data.Text.Prettyprint.Doc +-- import Prettyprinter -- -- printer :: (`MonadFormatingPrinter` m, `MonadColorPrinter` m) => m () -- printer = `putDoc` $ `annotate` (foreground $ `bright` `blue`) "This is blue!" <> `line` diff --git a/src/System/Terminal/Virtual.hs b/src/System/Terminal/Virtual.hs index 1ef35be..2120529 100644 --- a/src/System/Terminal/Virtual.hs +++ b/src/System/Terminal/Virtual.hs @@ -219,17 +219,19 @@ eraseInLine t m = do eraseInDisplay :: VirtualTerminal -> EraseMode -> STM () eraseInDisplay t m = do Size h w <- virtualWindowSize (virtualSettings t) - Position r _ <- readTVar (virtualCursor t) + Position r c <- readTVar (virtualCursor t) wndw <- readTVar (virtualWindow t) - let w1 = take r wndw - w1E = replicate r (replicate w ' ') - w2 = [wndw !! r] + let l = wndw !! r + w1 = take r wndw + w1E = replicate r (replicate w ' ') + w2B = [replicate (c + 1) ' ' <> drop (c + 1) l] + w2F = [take c l <> replicate (w - c) ' '] w2E = [replicate w ' '] w3 = drop (r + 1) wndw w3E = replicate (h - r - 1) (replicate w ' ') writeTVar (virtualWindow t) $ case m of - EraseBackward -> w1E <> w2 <> w3 - EraseForward -> w1 <> w2 <> w3E + EraseBackward -> w1E <> w2B <> w3 + EraseForward -> w1 <> w2F <> w3E EraseAll -> w1E <> w2E <> w3E setAutoWrap :: VirtualTerminal -> Bool -> STM () diff --git a/test/Spec/Virtual.hs b/test/Spec/Virtual.hs index f8b28b9..93c637c 100644 --- a/test/Spec/Virtual.hs +++ b/test/Spec/Virtual.hs @@ -647,7 +647,7 @@ testEraseInDisplay01 = expCursor = (Position 1 4) expWindow = [ " " - , "1234567890" + , " 67890" , "1234567890" ] testEraseInDisplay02 :: TestTree @@ -669,7 +669,7 @@ testEraseInDisplay02 = expCursor = (Position 1 4) expWindow = [ "1234567890" - , "1234567890" + , "1234 " , " " ] testEraseInDisplay03 :: TestTree