on master help sign in
clarify.. kinda
6b08dfeCorey O'Connor
src/Graphics/Vty/Input/Internal.hs+6−5
@@ -112,7 +112,9 @@ read_from_device = do
112 max_bytes <- use $ input_buffer.size
112 max_bytes <- use $ input_buffer.size
113 liftIO $ do
113 liftIO $ do
114 bytes_read <- fdReadBuf fd buffer_ptr (fromIntegral max_bytes)
114 bytes_read <- fdReadBuf fd buffer_ptr (fromIntegral max_bytes)
115+ if bytes_read > 0
115− fmap (map $ chr . fromIntegral) $ peekArray (fromIntegral bytes_read) buffer_ptr
116+ then fmap (map $ chr . fromIntegral) $ peekArray (fromIntegral bytes_read) buffer_ptr
117+ else return []
116
118
117apply_timing_config :: Fd -> Config -> IO ()
119apply_timing_config :: Fd -> Config -> IO ()
118apply_timing_config fd config =
120apply_timing_config fd config =
@@ -149,10 +151,9 @@ compile :: ClassifyTable -> [Char] -> KClass
149compile table = cl' where
151compile table = cl' where
150 -- take all prefixes and create a set of these
152 -- take all prefixes and create a set of these
151 prefix_set = S.fromList $ concatMap (init . inits . fst) $ table
153 prefix_set = S.fromList $ concatMap (init . inits . fst) $ table
152− -- create a map from strings to event
153− event_for_input = flip M.lookup (M.fromList table)
154+ event_for_input = M.fromList table
154 cl' [] = Prefix
155 cl' [] = Prefix
155− cl' input_block = case event_for_input input_block of
156+ cl' input_block = case M.lookup input_block event_for_input of
156 Just (EvKey k m) -> Valid k m []
157 Just (EvKey k m) -> Valid k m []
157 Nothing -> case S.member input_block prefix_set of
158 Nothing -> case S.member input_block prefix_set of
158 True -> Prefix
159 True -> Prefix
@@ -163,7 +164,7 @@ compile table = cl' where
163 -- prefixes of an event.
164 -- prefixes of an event.
164 False ->
165 False ->
165 let input_prefixes = init $ inits input_block
166 let input_prefixes = init $ inits input_block
166− in case mapMaybe (\s -> (,) s `fmap` event_for_input s) input_prefixes of
167+ in case mapMaybe (\s -> (,) s `fmap` M.lookup s event_for_input) input_prefixes of
167 (s,EvKey k m) : _ -> Valid k m (drop (length s) input_block)
168 (s,EvKey k m) : _ -> Valid k m (drop (length s) input_block)
168 -- neither a prefix or a full event. Might be interesting to log.
169 -- neither a prefix or a full event. Might be interesting to log.
169 [] -> Invalid
170 [] -> Invalid