skip boring: extract common iterate/filter logic

This commit is contained in:
ivanbrennan 2020-09-08 23:07:39 -04:00
parent 610fb0e200
commit c2dd9b0b7a
No known key found for this signature in database
GPG Key ID: 79C3C47DC652EA54

View File

@ -140,16 +140,15 @@ instance LayoutModifier BoringWindows Window where
| Just SwapDown <- fromMessage m = | Just SwapDown <- fromMessage m =
do windows $ W.modify' (reverseStack . skipBoringSwapUp . reverseStack) do windows $ W.modify' (reverseStack . skipBoringSwapUp . reverseStack)
return Nothing return Nothing
where skipBoring f st = fromMaybe st $ listToMaybe where skipBoring = skipBoring' ((`notElem` bs) . W.focus)
$ filter ((`notElem` bs) . W.focus) skipBoringSwapUp = skipBoring'
$ drop 1 (maybe True (`notElem` bs) . listToMaybe . W.down)
$ take (length $ W.integrate st) swapUp'
$ iterate f st skipBoring' p f st = fromMaybe st $ listToMaybe
skipBoringSwapUp st = fromMaybe st $ listToMaybe $ filter p
$ filter (maybe True (`notElem` bs) . listToMaybe . W.down) $ drop 1
$ drop 1 -- drop 0th swap $ take (length $ W.integrate st)
$ take (length $ W.integrate st) $ iterate f st
$ iterate swapUp' st
bs = concat $ cbs:maybeToList lbs ++ M.elems nbs bs = concat $ cbs:maybeToList lbs ++ M.elems nbs
rjl = return . Just . Left rjl = return . Just . Left
reverseStack (W.Stack t ls rs) = W.Stack t rs ls reverseStack (W.Stack t ls rs) = W.Stack t rs ls