git-annex/Command/VCycle.hs
Joey Hess 4781ca297b
showStart variant for when there's no worktree file
Clean up some uses of showStart with "" for the file,
or in some cases, a non-filename description string. That would
generate bad json, although none of the commands doing that
supported --json.

Using "" for the file resulted in output like "foo  rest";
now the extra space is eliminated.

This commit was sponsored by Fernando Jimenez on Patreon.
2017-11-28 15:14:16 -04:00

41 lines
931 B
Haskell

{- git-annex command
-
- Copyright 2014 Joey Hess <id@joeyh.name>
-
- Licensed under the GNU GPL version 3 or higher.
-}
module Command.VCycle where
import Command
import Annex.View
import Types.View
import Logs.View
import Command.View (checkoutViewBranch)
cmd :: Command
cmd = notBareRepo $ notDirect $
command "vcycle" SectionMetaData
"switch view to next layout"
paramNothing (withParams seek)
seek :: CmdParams -> CommandSeek
seek = withNothing start
start ::CommandStart
start = go =<< currentView
where
go Nothing = giveup "Not in a view."
go (Just v) = do
showStart' "vcycle" Nothing
let v' = v { viewComponents = vcycle [] (viewComponents v) }
if v == v'
then do
showNote "unchanged"
next $ next $ return True
else next $ next $ checkoutViewBranch v' narrowView
vcycle rest (c:cs)
| viewVisible c = rest ++ cs ++ [c]
| otherwise = vcycle (c:rest) cs
vcycle rest c = rest ++ c