type LineEditorChoice = enum leBasic, leRdstdin ReadlineInterruptedException* = object of CatchableError # choose debug options here const debugVM* = true const debugScanner* = false const debugCompiler* = false const debugDumpChunk* = true const assertionsVM* = true # sanity checks in the VM, such as the stack being empty at the end # choose a line editor for the repl const lineEditor = leRdstdin when lineEditor == leRdstdin: import rdstdin proc konLineEditor*: string = proc ctrlc = raise newException(ReadlineInterruptedException, "Ctrl+C/D pressed.") when lineEditor == leBasic: write stdout, "\r-> " result = stdin.readLine() when lineEditor == leRdstdin: var line: string let ok = readLineFromStdin("-> ", line) if not ok: ctrlc() return line