summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/GF/GFModes.hs15
-rw-r--r--src/GF/Shell/HelpFile.hs3
-rw-r--r--src/GF/Shell/PShell.hs2
-rw-r--r--src/GF/Shell/ShellCommands.hs8
-rw-r--r--src/HelpFile3
5 files changed, 27 insertions, 4 deletions
diff --git a/src/GF/GFModes.hs b/src/GF/GFModes.hs
index dd25d1e49..faab3cede 100644
--- a/src/GF/GFModes.hs
+++ b/src/GF/GFModes.hs
@@ -28,7 +28,7 @@ import Data.Char (isSpace)
-- separated from GF Main 24/6/2003
gfInteract :: HState -> IO HState
-gfInteract st@(env,hist) = do
+gfInteract st@(env,hist@(his,_,_,_)) = do
-- putStrFlush "> " M.F 25/01-02 prompt moved to Arch.
(s,cs) <- getCommandLines st
case ifImpure cs of
@@ -48,6 +48,15 @@ gfInteract st@(env,hist) = do
st' <- execLinesH line [co] st -- s would not work in execLinesH
gfInteract st'
+ Just (ICReload,_) -> case dropWhile (not . isImport) his of
+ line:_ -> do
+ let co = pCommandLine st $ words line
+ st' <- execLinesH line [co] st
+ gfInteract st'
+ _ -> do
+ putStrLn "No previous import"
+ gfInteract st
+
Just (ICEditSession,os) -> case getOptVal os useFile of
Just file -> do
s <- readFileIf file
@@ -66,6 +75,10 @@ gfInteract st@(env,hist) = do
opts = globalOptions env
ifNotSilent c =
if oElem beSilent opts then return () else putStrLnFlush c
+ isImport l = case words l of
+ "i":_ -> True
+ "import":_ -> True
+ _ -> False
gfBatch :: HState -> IO HState
gfBatch st@(sh,_) = do
diff --git a/src/GF/Shell/HelpFile.hs b/src/GF/Shell/HelpFile.hs
index 29f25aef8..a8423979c 100644
--- a/src/GF/Shell/HelpFile.hs
+++ b/src/GF/Shell/HelpFile.hs
@@ -81,6 +81,9 @@ txtHelpFile =
"\n examples:" ++
"\n i English.gf -- ordinary import of Concrete" ++
"\n i -retain german/ParadigmsGer.gf -- import of Resource to test" ++
+ "\n" ++
+ "\nr, reload: r" ++
+ "\n Executes the previous import (i) command." ++
"\n " ++
"\nrl, remove_language: rl Language" ++
"\n Takes away the language from the state." ++
diff --git a/src/GF/Shell/PShell.hs b/src/GF/Shell/PShell.hs
index 159910755..68cb4d629 100644
--- a/src/GF/Shell/PShell.hs
+++ b/src/GF/Shell/PShell.hs
@@ -157,7 +157,7 @@ pCommand ws = case ws of
"es" : [] -> aImpure ICEditSession
"ts" : [] -> aImpure ICTranslateSession
-
+ "r" : [] -> aImpure ICReload
_ -> (CVoid, [])
where
diff --git a/src/GF/Shell/ShellCommands.hs b/src/GF/Shell/ShellCommands.hs
index a3a0139ea..5c35e3c31 100644
--- a/src/GF/Shell/ShellCommands.hs
+++ b/src/GF/Shell/ShellCommands.hs
@@ -97,8 +97,12 @@ data Command =
-- to isolate the commands that are executed on top level
data ImpureCommand =
- ICQuit | ICExecuteHistory FilePath | ICEarlierCommand Int
- | ICEditSession | ICTranslateSession
+ ICQuit
+ | ICExecuteHistory FilePath
+ | ICEarlierCommand Int
+ | ICEditSession
+ | ICTranslateSession
+ | ICReload
type CommandOpt = (Command, Options)
diff --git a/src/HelpFile b/src/HelpFile
index df2a643d2..9a501c7c7 100644
--- a/src/HelpFile
+++ b/src/HelpFile
@@ -52,6 +52,9 @@ i, import: i File
examples:
i English.gf -- ordinary import of Concrete
i -retain german/ParadigmsGer.gf -- import of Resource to test
+
+r, reload: r
+ Executes the previous import (i) command.
rl, remove_language: rl Language
Takes away the language from the state.