@@ -536,7 +536,7 @@ updateInputState ev i@(InputState before after) = case ev of
536536 -- Key combinations
537537 V.EvKey (V.KChar 'u') [V.MCtrl] -> InputState mempty mempty
538538 V.EvKey (V.KChar 'w') [V.MCtrl] -> InputState (T.dropWhileEnd (not . isSpace) $ T.dropWhileEnd isSpace $ before) after
539− -- Navigation
539+ -- Arrow keys
540540 V.EvKey V.KRight [] -> case T.uncons after of
541541 Nothing -> i
542542 Just (a, as) -> InputState (T.snoc before a) as
@@ -556,8 +556,14 @@ updateInputState ev i@(InputState before after) = case ev of
556556 (nextLine, rest) = T.breakOn "\n" (T.drop 1 post)
557557 (nextLineBefore, nextLineAfter) = T.splitAt offset nextLine
558558 in if T.null post
559− then i
560− else InputState (before <> pre <> "\n" <> nextLineBefore) (nextLineAfter <> rest)
559+ then i
560+ else InputState (before <> pre <> "\n" <> nextLineBefore) (nextLineAfter <> rest)
561+ V.EvKey V.KHome [] ->
562+ let (pre, post) = T.breakOnEnd "\n" before
563+ in InputState pre (post <> after)
564+ V.EvKey V.KEnd [] ->
565+ let (pre, post) = T.breakOn "\n" after
566+ in InputState (before <> pre) post
561567 _ -> i
562568
563569data TextInputConfig t = TextInputConfig