Merge pull request #217 from dubek/lua-interop
[jackhill/mal.git] / lua / readline.lua
index a75f4ff..ba390a7 100644 (file)
@@ -5,20 +5,35 @@ local M = {}
 local history_loaded = false
 local history_file = os.getenv("HOME") .. "/.mal-history"
 
+M.raw = false
+
 function M.readline(prompt)
     if not history_loaded then
         history_loaded = true
-        for line in io.lines(history_file) do
-            LN.historyadd(line)
-        end
+        xpcall(function()
+            for line in io.lines(history_file) do
+                LN.historyadd(line)
+            end
+        end, function(exc)
+            return true -- ignore the error
+        end)
     end
 
-    line = LN.linenoise(prompt)
+    if M.raw then
+        io.write(prompt); io.flush();
+        line = io.read()
+    else
+        line = LN.linenoise(prompt)
+    end
     if line then
         LN.historyadd(line)
-        local f = io.open(history_file, "a")
-        f:write(line.."\n")
-        f:close()
+        xpcall(function()
+            local f = io.open(history_file, "a")
+            f:write(line.."\n")
+            f:close()
+        end, function(exc)
+            return true -- ignore the error
+        end)
     end
     return line
 end