From 2c60a2d82a0d7b90924e7dbbcacf36afb8549d17 Mon Sep 17 00:00:00 2001 From: aarne Date: Thu, 23 Sep 2004 14:41:42 +0000 Subject: Ints n --- src/GF/Shell/CommandL.hs | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'src/GF/Shell/CommandL.hs') diff --git a/src/GF/Shell/CommandL.hs b/src/GF/Shell/CommandL.hs index 2bb240018..93214781e 100644 --- a/src/GF/Shell/CommandL.hs +++ b/src/GF/Shell/CommandL.hs @@ -4,6 +4,7 @@ import Operations import UseIO import CMacros +import Values (Tree) import GetTree import ShellState @@ -13,6 +14,7 @@ import Commands import Char import List (intersperse) +import Monad (foldM) import UTF8 @@ -39,6 +41,23 @@ editLoop env state resume = do editLoop env' state' resume +-- execute a command script and return a tree + +execCommandHistory :: CEnv -> String -> IO (CEnv,Tree) +execCommandHistory env s = do + let env' = startEditEnv env + let state = initSStateEnv env' + (env',state') <- foldM exec (env,state) $ lines s + return $ (env',treeSState state') + + where + + exec (env,state) l = do + let c = pCommand l + execCommand env c state + + + getCommand :: IO Command getCommand = do s <- getLine @@ -101,6 +120,7 @@ pCommand = pCommandWords . words where "off":lang: _ -> CCEnvOff lang "pfile" :f:_ -> CCEnvRefineParse f "tfile" :f:_ -> CCEnvRefineWithTree f + "save":l:f:_ -> CCEnvSave l f -- openstring file -- pfile file -- cgit v1.2.3