diff options
| author | John J. Camilleri <john@digitalgrammars.com> | 2021-07-06 15:35:03 +0200 |
|---|---|---|
| committer | John J. Camilleri <john@digitalgrammars.com> | 2021-07-06 15:35:03 +0200 |
| commit | ef422164154e093b1231c2ee905c0539c0c0a1b3 (patch) | |
| tree | d1430334cb77dbe49dd4952f5d604772c8cfdc94 /src/compiler/GF | |
| parent | 0c3ca3d79acb34e0159cf6b51ba41ff570ad2af1 (diff) | |
Add import from command line invocation to command history
Closes #64
Diffstat (limited to 'src/compiler/GF')
| -rw-r--r-- | src/compiler/GF/Interactive.hs | 2 | ||||
| -rw-r--r-- | src/compiler/GF/Interactive2.hs | 11 | ||||
| -rw-r--r-- | src/compiler/GF/Main.hs | 7 |
3 files changed, 11 insertions, 9 deletions
diff --git a/src/compiler/GF/Interactive.hs b/src/compiler/GF/Interactive.hs index 9987b7c39..855ab22d1 100644 --- a/src/compiler/GF/Interactive.hs +++ b/src/compiler/GF/Interactive.hs @@ -38,7 +38,6 @@ import GF.Server(server) #endif import GF.Command.Messages(welcome) -import GF.Infra.UseIO (Output) -- Provides an orphan instance of MonadFail for StateT in ghc versions < 8 import Control.Monad.Trans.Instances () @@ -56,6 +55,7 @@ mainGFI opts files = do shell opts files = flip evalStateT (emptyGFEnv opts) $ do mapStateT runSIO $ importInEnv opts files + modify $ \ gfenv0 -> gfenv0 {history = [unwords ("i":files)]} loop #ifdef SERVER_MODE diff --git a/src/compiler/GF/Interactive2.hs b/src/compiler/GF/Interactive2.hs index 02e42e19e..6967309b9 100644 --- a/src/compiler/GF/Interactive2.hs +++ b/src/compiler/GF/Interactive2.hs @@ -58,6 +58,7 @@ mainGFI opts files = do shell opts files = flip evalStateT (emptyGFEnv opts) $ do mapStateT runSIO $ importInEnv opts files + modify $ \ gfenv0 -> gfenv0 {history = [unwords ("i":files)]} loop {- @@ -101,7 +102,7 @@ timeIt act = -- | Optionally show how much CPU time was used to run an IO action optionallyShowCPUTime :: (Monad m,MonadSIO m) => Options -> m a -> m a -optionallyShowCPUTime opts act +optionallyShowCPUTime opts act | not (verbAtLeast opts Normal) = act | otherwise = do (dt,r) <- timeIt act liftSIO $ putStrLnFlush $ show (dt `div` 1000000000) ++ " msec" @@ -358,7 +359,7 @@ wordCompletion gfenv (left,right) = do CmplIdent _ pref -> case mb_pgf of Just pgf -> ret (length pref) - [Haskeline.simpleCompletion name + [Haskeline.simpleCompletion name | name <- C.functions pgf, isPrefixOf pref name] _ -> ret (length pref) [] @@ -369,7 +370,7 @@ wordCompletion gfenv (left,right) = do cmdEnv = commandenv gfenv {- optLang opts = valStrOpts "lang" (head $ Map.keys (concretes cmdEnv)) opts - optType opts = + optType opts = let str = valStrOpts "cat" (H.showCId $ H.lookStartCat pgf) opts in case H.readType str of Just ty -> ty @@ -416,7 +417,7 @@ wc_type = cmd_name option x y (c :cs) | isIdent c = option x y cs | otherwise = cmd x cs - + optValue x y ('"':cs) = str x y cs optValue x y cs = cmd x cs @@ -434,7 +435,7 @@ wc_type = cmd_name where x1 = take (length x - length y - d) x x2 = takeWhile (\c -> isIdent c || isSpace c || c == '-' || c == '=' || c == '"') x1 - + cmd = case [x | (x,cs) <- RP.readP_to_S pCommand x2, all isSpace cs] of [x] -> Just x _ -> Nothing diff --git a/src/compiler/GF/Main.hs b/src/compiler/GF/Main.hs index 7cde1ce97..7d4500c7b 100644 --- a/src/compiler/GF/Main.hs +++ b/src/compiler/GF/Main.hs @@ -16,18 +16,19 @@ import Data.Version import System.Directory import System.Environment (getArgs) import System.Exit -import GF.System.Console (setConsoleEncoding) +-- import GF.System.Console (setConsoleEncoding) -- | Run the GF main program, taking arguments from the command line. -- (It calls 'setConsoleEncoding' and 'getOptions', then 'mainOpts'.) -- Run @gf --help@ for usage info. main :: IO () main = do - --setConsoleEncoding + -- setConsoleEncoding uncurry mainOpts =<< getOptions -- | Get and parse GF command line arguments. Fix relative paths. -- Calls 'getArgs' and 'parseOptions'. +getOptions :: IO (Options, [FilePath]) getOptions = do args <- getArgs case parseOptions args of @@ -43,7 +44,7 @@ getOptions = do -- the options it invokes 'mainGFC', 'mainGFI', 'mainRunGFI', 'mainServerGFI', -- or it just prints version/usage info. mainOpts :: Options -> [FilePath] -> IO () -mainOpts opts files = +mainOpts opts files = case flag optMode opts of ModeVersion -> putStrLn $ "Grammatical Framework (GF) version " ++ showVersion version ++ "\n" ++ buildInfo ModeHelp -> putStrLn helpMessage |
