@@ -82,6 +82,10 @@ processInput cmd orig inputs
8282 Right AddProof -> do idrisCatch (addProof fn orig)
8383 (\e -> iputStrLn (show e))
8484 return (Just inputs)
85+ Right RmProof -> do rmProof orig
86+ return (Just inputs)
87+ Right Proofs -> do proofs orig
88+ return (Just inputs)
8589 Right Quit -> do iputStrLn "Bye bye"
8690 return Nothing
8791 Right cmd -> do idrisCatch (process fn cmd)
@@ -115,13 +119,31 @@ addProof f orig
115119 liftIO $ copyFile f fb -- make a backup in case something goes wrong!
116120 prog <- liftIO $ readFile fb
117121 i <- get
118− case last_proof i of
119− Nothing -> iputStrLn "No proof to add"
120− Just (n, p) -> do let prog' = insertScript (showProof (lit f) n p) (lines prog)
121− liftIO $ writeFile f (unlines prog')
122− iputStrLn $ "Added proof " ++ show n
123− put (i { last_proof = Nothing })
124− -- lift $ removeFile fb -- uncomment when less scared :)
122+ case proof_list i of
123+ [] -> iputStrLn "No proof to add"
124+ (n, p) : proofs -> do let prog' = insertScript (showProof (lit f) n p) (lines prog)
125+ liftIO $ writeFile f (unlines prog')
126+ iputStrLn $ "Added proof " ++ show n
127+ put (i { proof_list = proofs })
128+ -- lift $ removeFile fb -- uncomment when less scared :)
129+
130+rmProof :: IState -> Idris ()
131+rmProof orig
132+ = do i <- get
133+ case proof_list i of
134+ [] -> iputStrLn "Nothing to remove"
135+ (n, p) : ps -> do iputStrLn $ "Removed proof " ++ show n
136+ let metavars = idris_metavars i
137+ put (i { proof_list = ps
138+ , idris_metavars = n : metavars
139+ })
140+
141+proofs :: IState -> Idris ()
142+proofs orig
143+ = do i <- get
144+ case proof_list i of
145+ [] -> iputStrLn "No proofs"
146+ ps -> mapM_ (\(n, p) -> iputStrLn $ showProof False n p) ps
125147
126148insertScript :: String -> [String] -> [String]
127149insertScript prf [] = "\n---------- Proofs ----------" : "" : [prf]
@@ -332,6 +354,8 @@ help =
332354 ([":m",":metavars"], "", "Show remaining proof obligations (metavariables)"),
333355 ([":p",":prove"], "<name>", "Prove a metavariable"),
334356 ([":a",":addproof"], "", "Add last proof to source file"),
357+ ([":rmproof"], "", "Remove last proof from proof stack"),
358+ ([":proofs"], "", "Show proof stack"),
335359 ([":c",":compile"], "<filename>", "Compile to an executable <filename>"),
336360 ([":exec",":execute"], "", "Compile to an executable and run"),
337361 ([":?",":h",":help"], "", "Display this help text"),