Integrated jale inside the test REPL for nicer behavior

This commit is contained in:
nocturn9x 2021-12-28 16:47:20 +01:00
parent cb34a22a53
commit 6070d69d00
1 changed files with 19 additions and 5 deletions

View File

@ -19,6 +19,10 @@ import backend/optimizer
import backend/compiler
import util/debugger
import backend/serializer
import jale/editor
import jale/templates
import jale/plugin/defaults
import jale/plugin/editor_history
import config
@ -29,8 +33,12 @@ import times
import nimSHA2
proc hook() {.noconv.} =
quit(1)
proc getLineEditor: LineEditor =
result = newLineEditor()
result.prompt = "=> "
result.populateDefaults() # setup default keybindings
let hist = result.plugHistory() # create history object
result.bindHistory(hist) # set default history keybindings
proc main() =
@ -42,24 +50,30 @@ proc main() =
var compiled: Chunk
var serialized: Serialized
var serializedRaw: seq[byte]
var keep = true
var lexer = initLexer()
var parser = initParser()
var optimizer = initOptimizer(foldConstants=false)
var compiler = initCompiler()
var serializer = initSerializer()
let lineEditor = getLineEditor()
lineEditor.bindEvent(jeQuit):
keep = false
echo JAPL_VERSION_STRING
while true:
while keep:
try:
stdout.write(">>> ")
source = stdin.readLine()
source = lineEditor.read()
if source == "//clear" or source == "// clear":
echo "\x1Bc" & JAPL_VERSION_STRING
continue
elif source == "//exit" or source == "// exit":
echo "Goodbye!"
break
elif source == "":
continue
except IOError:
echo ""
break
@ -136,5 +150,5 @@ proc main() =
when isMainModule:
setControlCHook(hook)
setControlCHook(proc {.noconv.} = quit(1))
main()