on master help sign in
stop using encodeUtf8 on a byte sequence. form the write directly
d8007cbCorey O'Connor
src/Graphics/Vty/Output/TerminfoBased.hs+16−17
@@ -193,23 +193,22 @@ get_window_size = do
193 return (fromIntegral b, fromIntegral a)
193 return (fromIntegral b, fromIntegral a)
194
194
195terminfo_display_context :: Output -> TerminfoCaps -> DisplayRegion -> IO DisplayContext
195terminfo_display_context :: Output -> TerminfoCaps -> DisplayRegion -> IO DisplayContext
196−terminfo_display_context t_actual terminfo_caps r =
196+terminfo_display_context t_actual terminfo_caps r = return dc
197− let dc = DisplayContext
197+ where dc = DisplayContext
198− { context_device = t_actual
198+ { context_device = t_actual
199− , context_region = r
199+ , context_region = r
200− , write_move_cursor = \x y -> write_cap_expr (cup terminfo_caps) [toEnum y, toEnum x]
200+ , write_move_cursor = \x y -> write_cap_expr (cup terminfo_caps) [toEnum y, toEnum x]
201− , write_show_cursor = case cnorm terminfo_caps of
201+ , write_show_cursor = case cnorm terminfo_caps of
202− Nothing -> error "this terminal does not support show cursor"
202+ Nothing -> error "this terminal does not support show cursor"
203− Just c -> write_cap_expr c []
203+ Just c -> write_cap_expr c []
204− , write_hide_cursor = case civis terminfo_caps of
204+ , write_hide_cursor = case civis terminfo_caps of
205− Nothing -> error "this terminal does not support hide cursor"
205+ Nothing -> error "this terminal does not support hide cursor"
206− Just c -> write_cap_expr c []
206+ Just c -> write_cap_expr c []
207− , write_set_attr = terminfo_write_set_attr dc terminfo_caps
207+ , write_set_attr = terminfo_write_set_attr dc terminfo_caps
208− , write_default_attr = write_cap_expr (set_default_attr terminfo_caps) []
208+ , write_default_attr = write_cap_expr (set_default_attr terminfo_caps) []
209− , write_row_end = write_cap_expr (clear_eol terminfo_caps) []
209+ , write_row_end = write_cap_expr (clear_eol terminfo_caps) []
210− , inline_hack = return ()
210+ , inline_hack = return ()
211− }
211+ }
212− in return dc
213
212
214-- | Portably setting the display attributes is a giant pain in the ass.
213-- | Portably setting the display attributes is a giant pain in the ass.
215--
214--
src/Graphics/Vty/Output/XTermColor.hs+4−2
@@ -6,10 +6,12 @@ import Graphics.Vty.Output.Interface
6import qualified Graphics.Vty.Output.TerminfoBased as TerminfoBased
6import qualified Graphics.Vty.Output.TerminfoBased as TerminfoBased
7
7
8import Blaze.ByteString.Builder (writeToByteString)
8import Blaze.ByteString.Builder (writeToByteString)
9+import Blaze.ByteString.Builder.Word (writeWord8)
9
10
10import Control.Applicative
11import Control.Applicative
11import Control.Monad.Trans
12import Control.Monad.Trans
12
13
14+import Data.Foldable (foldMap)
13import qualified Data.Text as T
15import qualified Data.Text as T
14import qualified Data.Text.Encoding as T
16import qualified Data.Text.Encoding as T
15
17
@@ -49,6 +51,6 @@ set_default_char_set = "\ESC%@"
49-- *after* the next newline.
51-- *after* the next newline.
50xterm_inline_hack :: Output -> IO ()
52xterm_inline_hack :: Output -> IO ()
51xterm_inline_hack t = do
53xterm_inline_hack t = do
52− let s_utf8 = T.encodeUtf8 $ T.pack "\ESC[K"
54+ let write_reset = foldMap (writeWord8.toEnum.fromEnum) "\ESC[K"
53− output_byte_buffer t $ writeToByteString $ write_utf8_text s_utf8
55+ output_byte_buffer t $ writeToByteString write_reset
54
56