diff src/scheme/readline.scm @ 0:bf79fb79ee13

Initial Mercurial check in.
author samer
date Tue, 17 Jan 2012 17:50:20 +0000
parents
children 5df24c91468d
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/scheme/readline.scm	Tue Jan 17 17:50:20 2012 +0000
@@ -0,0 +1,27 @@
+;;; 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 (readline-reader prompt) 
+	(org.gnu.readline.ReadlineReader. prompt
+		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.cleanup))))
+		
+
+; enable completion by looking up words in jscheme's symbol table
+(org.gnu.readline.Readline.setCompleter (samer.silk.SilkCompleter.))
+(set-prompt ">")