mirror of
https://github.com/kanaka/mal.git
synced 2024-10-27 14:52:16 +03:00
8a19f60386
- Reorder README to have implementation list after "learning tool" bullet. - This also moves tests/ and libs/ into impls. It would be preferrable to have these directories at the top level. However, this causes difficulties with the wasm implementations which need pre-open directories and have trouble with paths starting with "../../". So in lieu of that, symlink those directories to the top-level. - Move the run_argv_test.sh script into the tests directory for general hygiene.
36 lines
880 B
Haskell
36 lines
880 B
Haskell
module Readline
|
|
( addHistory, readline, load_history )
|
|
where
|
|
|
|
-- Pick one of these:
|
|
-- GPL license
|
|
import qualified System.Console.Readline as RL
|
|
-- BSD license
|
|
--import qualified System.Console.Editline.Readline as RL
|
|
|
|
import Control.Monad (when)
|
|
import System.Directory (getHomeDirectory, doesFileExist)
|
|
import System.IO.Error (tryIOError)
|
|
|
|
history_file :: IO String
|
|
history_file = do
|
|
home <- getHomeDirectory
|
|
return $ home ++ "/.mal-history"
|
|
|
|
load_history :: IO ()
|
|
load_history = do
|
|
hfile <- history_file
|
|
fileExists <- doesFileExist hfile
|
|
when fileExists $ do
|
|
content <- readFile hfile
|
|
mapM_ RL.addHistory (lines content)
|
|
|
|
readline :: String -> IO (Maybe String)
|
|
readline = RL.readline
|
|
|
|
addHistory :: String -> IO ()
|
|
addHistory line = do
|
|
hfile <- history_file
|
|
_ <- tryIOError (appendFile hfile (line ++ "\n"))
|
|
RL.addHistory line
|