view src/scheme/readline.scm @ 1:5df24c91468d

Oh my what a mess.
author samer
date Fri, 05 Apr 2019 16:26:00 +0100
parents bf79fb79ee13
children
line wrap: on
line source
;;; sets up java readline to provide command line
;;; editting, history, and completion for jscheme.

; redirect input to readline reader
;(define (set-input-port port) (set! jsint.Scheme.input$ port))

(define jscheme-history ".jscheme_history")
(define (readline-reader prompt)
	(org.gnu.readline.ReadlineReader. prompt (java.io.File. jscheme-history)
		org.gnu.readline.ReadlineLibrary.GnuReadline$))

(org.gnu.readline.Readline.initReadline "jscheme")
(org.gnu.readline.Readline.readInitFile "/Users/samer/.inputrc")
(set! current-readline-reader (readline-reader ":"))
(.setInput (jsint.Scheme.currentEvaluator) (jsint.InputPort. current-readline-reader))
(define (set-prompt prompt) (.setPrompt current-readline-reader prompt))


; this seems to stop terminal getting confused after exit
(.addShutdownHook (Runtime.getRuntime)
	(Thread. (lambda ()
		(display "cleaning up readline.\n")
    (org.gnu.readline.Readline.writeHistoryFile jscheme-history)
		(org.gnu.readline.Readline.cleanup))))


; enable completion by looking up words in jscheme's symbol table
(org.gnu.readline.Readline.setCompleter (samer.silk.SilkCompleter.))