on master help sign in
Hack to work around xterm bug with reseting attributes at start of line.
83ec764coreyoconnor
src/Graphics/Vty/Inline.hs+1
@@ -41,6 +41,7 @@ put_default_attr t = do
41 marshall_to_terminal t ( default_attr_required_bytes d )
41 marshall_to_terminal t ( default_attr_required_bytes d )
42 ( serialize_default_attr d )
42 ( serialize_default_attr d )
43 liftIO $ modifyIORef ( state_ref t ) $ \s -> s { known_fattr = Just $ FixedAttr default_style_mask Nothing Nothing }
43 liftIO $ modifyIORef ( state_ref t ) $ \s -> s { known_fattr = Just $ FixedAttr default_style_mask Nothing Nothing }
44+ inline_hack d
44
45
45put_attr_change :: ( Applicative m, MonadIO m ) => TerminalHandle -> AttrChange () -> m ()
46put_attr_change :: ( Applicative m, MonadIO m ) => TerminalHandle -> AttrChange () -> m ()
46put_attr_change t c = do
47put_attr_change t c = do
src/Graphics/Vty/Terminal/Generic.hs+5
@@ -147,6 +147,10 @@ class DisplayTerminal d where
147 default_attr_required_bytes :: d -> Word
147 default_attr_required_bytes :: d -> Word
148 serialize_default_attr :: MonadIO m => d -> OutputBuffer -> m OutputBuffer
148 serialize_default_attr :: MonadIO m => d -> OutputBuffer -> m OutputBuffer
149
149
150+ -- | See Graphics.Vty.Terminal.XTermColor.inline_hack
151+ inline_hack :: MonadIO m => d -> m ()
152+ inline_hack _d = return ()
153+
150
154
151instance DisplayTerminal DisplayHandle where
155instance DisplayTerminal DisplayHandle where
152 context_region (DisplayHandle d _ _) = context_region d
156 context_region (DisplayHandle d _ _) = context_region d
@@ -161,6 +165,7 @@ instance DisplayTerminal DisplayHandle where
161 serialize_set_attr (DisplayHandle d _ _) = serialize_set_attr d
165 serialize_set_attr (DisplayHandle d _ _) = serialize_set_attr d
162 default_attr_required_bytes (DisplayHandle d _ _) = default_attr_required_bytes d
166 default_attr_required_bytes (DisplayHandle d _ _) = default_attr_required_bytes d
163 serialize_default_attr (DisplayHandle d _ _) = serialize_default_attr d
167 serialize_default_attr (DisplayHandle d _ _) = serialize_default_attr d
168+ inline_hack (DisplayHandle d _ _) = inline_hack d
164
169
165-- | All terminals serialize UTF8 text to the terminal device exactly as serialized in memory.
170-- | All terminals serialize UTF8 text to the terminal device exactly as serialized in memory.
166utf8_text_required_bytes :: UTF8 BSCore.ByteString -> Word
171utf8_text_required_bytes :: UTF8 BSCore.ByteString -> Word
src/Graphics/Vty/Terminal/XTermColor.hs+7
@@ -82,3 +82,10 @@ instance DisplayTerminal DisplayContext where
82 default_attr_required_bytes d = default_attr_required_bytes (super_display d)
82 default_attr_required_bytes d = default_attr_required_bytes (super_display d)
83 serialize_default_attr d = serialize_default_attr (super_display d)
83 serialize_default_attr d = serialize_default_attr (super_display d)
84
84
85+ -- I think xterm is broken: Reseting the background color as the first bytes serialized on a new
86+ -- line does not effect the background color xterm uses to clear the line. Which is used *after*
87+ -- the next newline.
88+ inline_hack _d = do
89+ liftIO $ hPutStr stdout "\ESC[K"
90+ liftIO $ hFlush stdout
91+