Safe Haskell | None |
---|---|
Language | Haskell2010 |
- data WhichChanges
- viewChanges :: (ShowPatch p, ShowContextPatch p, ApplyState p ~ Tree) => PatchSelectionOptions -> [Sealed2 p] -> IO ()
- withSelectedPatchFromRepo :: (IsRepoType rt, RepoPatch p, ApplyState p ~ Tree) => String -> Repository rt p wR wU wT -> PatchSelectionOptions -> (forall wA. (FL (PatchInfoAnd rt p) :> PatchInfoAnd rt p) wA wR -> IO ()) -> IO ()
- runSelection :: forall p wX wY. (Invert p, Commute p, Apply p, PatchInspect p, ShowPatch p, ShowContextPatch p, ApplyState p ~ Tree) => FL p wX wY -> PatchSelectionContext p -> IO ((FL p :> FL p) wX wY)
- selectionContextPrim :: WhichChanges -> String -> PatchSelectionOptions -> Maybe (Splitter prim) -> Maybe [FilePath] -> Maybe (Tree IO) -> PatchSelectionContext prim
- selectionContextGeneric :: (IsRepoType rt, RepoPatch p, Invert q) => (forall wX wY. q wX wY -> Sealed2 (PatchInfoAnd rt p)) -> WhichChanges -> String -> PatchSelectionOptions -> Maybe [FilePath] -> PatchSelectionContext q
- selectionContext :: (IsRepoType rt, RepoPatch p) => WhichChanges -> String -> PatchSelectionOptions -> Maybe (Splitter (PatchInfoAnd rt p)) -> Maybe [FilePath] -> PatchSelectionContext (PatchInfoAnd rt p)
- data PatchSelectionContext p
- printSummary :: ShowPatch p => p wX wY -> IO ()
- data PatchSelectionOptions = PatchSelectionOptions {}
- type InteractiveSelectionM p wX wY a = StateT (InteractiveSelectionContext p wX wY) (PatchSelectionM p IO) a
- data InteractiveSelectionContext p wX wY = ISC {
- total :: Int
- current :: Int
- lps :: FZipper (LabelledPatch p) wX wY
- choices :: PatchChoices p wX wY
- currentPatch :: InteractiveSelectionM p wX wY (Maybe (Sealed2 (LabelledPatch p)))
- skipMundane :: (Commute p, ShowPatch p) => InteractiveSelectionM p wX wY ()
- skipOne :: InteractiveSelectionM p wX wY ()
- backOne :: InteractiveSelectionM p wX wY ()
- backAll :: InteractiveSelectionM p wX wY ()
- showCur :: (Invert p, ShowPatch p, ShowContextPatch p, ApplyState p ~ Tree) => InteractiveSelectionM p wX wY ()
- decide :: Commute p => Bool -> LabelledPatch p wT wU -> InteractiveSelectionM p wX wY ()
- decideWholeFile :: (Commute p, PatchInspect p) => FilePath -> Bool -> InteractiveSelectionM p wX wY ()
- isSingleFile :: PatchInspect p => p wX wY -> Bool
- currentFile :: PatchInspect p => InteractiveSelectionM p wX wY (Maybe FilePath)
- promptUser :: ShowPatch p => Bool -> Char -> InteractiveSelectionM p wX wY Char
- prompt :: ShowPatch p => InteractiveSelectionM p wX wY String
- data KeyPress = KeyPress {}
- keysFor :: [[KeyPress]] -> [Char]
- helpFor :: String -> [[KeyPress]] -> [[KeyPress]] -> String
- askAboutDepends :: (IsRepoType rt, RepoPatch p, ApplyState p ~ Tree) => Repository rt p wR wU wT -> FL (PrimOf p) wT wY -> PatchSelectionOptions -> [PatchInfo] -> IO [PatchInfo]
Working with changes
data WhichChanges Source #
When asking about patches, we either ask about them in oldest-first or newest first (with respect to the current ordering of the repository), and we either want an initial segment or a final segment of the poset of patches.
First
: ask for an initial
segment, first patches first (default for all pull-like commands)
FirstReversed
: ask for an initial segment, last patches first
(used to ask about dependencies in record, and for pull-like
commands with the --reverse
flag).
LastReversed
: ask for a final segment, last patches first. (default
for unpull-like commands, except for selecting *primitive* patches in
rollback)
Last
: ask for a final segment, first patches first. (used for selecting
primitive patches in rollback, and for unpull-like commands with the
--reverse
flag
IOW: First = initial segment Last = final segment Reversed = start with the newest patch instead of oldest As usual, terminology is not, ahem, very intuitive.
viewChanges :: (ShowPatch p, ShowContextPatch p, ApplyState p ~ Tree) => PatchSelectionOptions -> [Sealed2 p] -> IO () Source #
The equivalent of runSelection
for the darcs log
command
withSelectedPatchFromRepo :: (IsRepoType rt, RepoPatch p, ApplyState p ~ Tree) => String -> Repository rt p wR wU wT -> PatchSelectionOptions -> (forall wA. (FL (PatchInfoAnd rt p) :> PatchInfoAnd rt p) wA wR -> IO ()) -> IO () Source #
The function for selecting a patch to amend record. Read at your own risks.
runSelection :: forall p wX wY. (Invert p, Commute p, Apply p, PatchInspect p, ShowPatch p, ShowContextPatch p, ApplyState p ~ Tree) => FL p wX wY -> PatchSelectionContext p -> IO ((FL p :> FL p) wX wY) Source #
Run a PatchSelection
action in the given PatchSelectionContext
.
selectionContextPrim :: WhichChanges -> String -> PatchSelectionOptions -> Maybe (Splitter prim) -> Maybe [FilePath] -> Maybe (Tree IO) -> PatchSelectionContext prim Source #
A PatchSelectionContext
for selecting Prim
patches.
selectionContextGeneric :: (IsRepoType rt, RepoPatch p, Invert q) => (forall wX wY. q wX wY -> Sealed2 (PatchInfoAnd rt p)) -> WhichChanges -> String -> PatchSelectionOptions -> Maybe [FilePath] -> PatchSelectionContext q Source #
A generic PatchSelectionContext
.
selectionContext :: (IsRepoType rt, RepoPatch p) => WhichChanges -> String -> PatchSelectionOptions -> Maybe (Splitter (PatchInfoAnd rt p)) -> Maybe [FilePath] -> PatchSelectionContext (PatchInfoAnd rt p) Source #
A PatchSelectionContext
for selecting full patches (PatchInfoAnd
patches)
data PatchSelectionContext p Source #
A PatchSelectionContext
contains all the static settings for selecting
patches. See PatchSelectionM
printSummary :: ShowPatch p => p wX wY -> IO () Source #
Interactive selection utils
data PatchSelectionOptions Source #
type InteractiveSelectionM p wX wY a = StateT (InteractiveSelectionContext p wX wY) (PatchSelectionM p IO) a Source #
data InteractiveSelectionContext p wX wY Source #
The dynamic parameters for interactive selection of patches.
ISC | |
|
Navigating the patchset
currentPatch :: InteractiveSelectionM p wX wY (Maybe (Sealed2 (LabelledPatch p))) Source #
Returns a Sealed2
version of the patch we are asking the user
about.
skipMundane :: (Commute p, ShowPatch p) => InteractiveSelectionM p wX wY () Source #
Skips patches we should not ask the user about
skipOne :: InteractiveSelectionM p wX wY () Source #
Focus the next patch.
backOne :: InteractiveSelectionM p wX wY () Source #
Focus the previous patch.
backAll :: InteractiveSelectionM p wX wY () Source #
showCur :: (Invert p, ShowPatch p, ShowContextPatch p, ApplyState p ~ Tree) => InteractiveSelectionM p wX wY () Source #
Shows the current patch as it should be seen by the user.
Decisions
decide :: Commute p => Bool -> LabelledPatch p wT wU -> InteractiveSelectionM p wX wY () Source #
decide True
selects the current patch, and decide False
deselects
it.
decideWholeFile :: (Commute p, PatchInspect p) => FilePath -> Bool -> InteractiveSelectionM p wX wY () Source #
like decide
, but for all patches touching file
Prompts and queries
isSingleFile :: PatchInspect p => p wX wY -> Bool Source #
currentFile :: PatchInspect p => InteractiveSelectionM p wX wY (Maybe FilePath) Source #
returns Just f
if the currentPatch
only modifies f
,
Nothing
otherwise.
promptUser :: ShowPatch p => Bool -> Char -> InteractiveSelectionM p wX wY Char Source #
Asks the user about one patch, returns their answer.
prompt :: ShowPatch p => InteractiveSelectionM p wX wY String Source #
The question to ask about one patch.
The type of the answers to a "shall I [wiggle] that [foo]?" question They are found in a [[KeyPress]] bunch, each list representing a set of answers which belong together
helpFor :: String -> [[KeyPress]] -> [[KeyPress]] -> String Source #
Generates the help for a set of basic and advanced KeyPress
groups.
askAboutDepends :: (IsRepoType rt, RepoPatch p, ApplyState p ~ Tree) => Repository rt p wR wU wT -> FL (PrimOf p) wT wY -> PatchSelectionOptions -> [PatchInfo] -> IO [PatchInfo] Source #