@@ -16,6 +16,8 @@ import qualified Data.String.UTF8 as UTF8
16import Data.IORef
16import Data.IORef
17import Data.Monoid ( mappend )
17import Data.Monoid ( mappend )
19type InlineM v = State Attr v
21type InlineM v = State Attr v
21back_color :: Color -> InlineM ()
23back_color :: Color -> InlineM ()
@@ -52,6 +54,7 @@ put_attr_change t c = do
52 attr' = limit_attr_for_display d attr
54 attr' = limit_attr_for_display d attr
53 fattr' = fix_display_attr fattr attr'
55 fattr' = fix_display_attr fattr attr'
54 diffs = display_attr_diffs fattr fattr'
56 diffs = display_attr_diffs fattr fattr'
57+ liftIO $ hFlush stdout
55 liftIO $ marshall_to_terminal t ( attr_required_bytes d fattr attr' diffs )
58 liftIO $ marshall_to_terminal t ( attr_required_bytes d fattr attr' diffs )
56 ( serialize_set_attr d fattr attr' diffs )
59 ( serialize_set_attr d fattr attr' diffs )
57 liftIO $ modifyIORef ( state_ref t ) $ \s -> s { known_fattr = Just fattr' }
60 liftIO $ modifyIORef ( state_ref t ) $ \s -> s { known_fattr = Just fattr' }
@@ -60,6 +63,7 @@ put_attr_change t c = do
60put_string :: ( Applicative m, MonadIO m ) => TerminalHandle -> String -> m ()
63put_string :: ( Applicative m, MonadIO m ) => TerminalHandle -> String -> m ()
61put_string t s = do
64put_string t s = do
62 let s_utf8 = UTF8.fromString s
65 let s_utf8 = UTF8.fromString s
66+ liftIO $ hFlush stdout
63 liftIO $ marshall_to_terminal t ( utf8_text_required_bytes s_utf8)
67 liftIO $ marshall_to_terminal t ( utf8_text_required_bytes s_utf8)
64 ( serialize_utf8_text s_utf8 )
68 ( serialize_utf8_text s_utf8 )