summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoraarne <aarne@cs.chalmers.se>2008-06-11 12:20:42 +0000
committeraarne <aarne@cs.chalmers.se>2008-06-11 12:20:42 +0000
commita61954fd117199ff2110fa584119baafeb6decc3 (patch)
tree2078a6faa254be43ccc4b598fbf5633163743450
parentad16eb2d788f6fe20e098f115ff42e0db8eb8974 (diff)
system command (!) in gf3 shell
-rw-r--r--src-3.0/GFI.hs8
1 files changed, 7 insertions, 1 deletions
diff --git a/src-3.0/GFI.hs b/src-3.0/GFI.hs
index 37abb3cd6..a1451abad 100644
--- a/src-3.0/GFI.hs
+++ b/src-3.0/GFI.hs
@@ -19,6 +19,7 @@ import Data.Char
import Data.List(isPrefixOf)
import qualified Data.Map as Map
import qualified Text.ParserCombinators.ReadP as RP
+import System
import System.CPUTime
import Control.Exception
@@ -45,6 +46,9 @@ loop opts gfenv0 = do
loop opts $ gfenv' {cputime = cpu'}
case words s of
-- special commands, requiring source grammar in env
+ "!":ws -> do
+ system $ unwords ws
+ loopNewCPU gfenv
"cc":ws -> do
-- FIXME: add options parsing for cc arguments
let (style,term) = (TermPrintDefault, ws)
@@ -60,7 +64,9 @@ loop opts gfenv0 = do
loopNewCPU gfenv'
-- other special commands, working on GFEnv
- "e":_ -> loopNewCPU $ gfenv {commandenv=env{multigrammar=emptyPGF}}
+ "e":_ -> loopNewCPU $ gfenv {
+ commandenv=env{multigrammar=emptyPGF}, sourcegrammar = emptyGrammar
+ }
"ph":_ -> mapM_ putStrLn (reverse (history gfenv0)) >> loopNewCPU gfenv
"q":_ -> putStrLn "See you." >> return gfenv