2012-08-10 8 views
18

Ich lese SICP und ich verwende mit-scheme auf meinem OS x 10.8 Laptop über homebrew installiert.mit-Schema REPL mit Befehlszeile Geschichte und Tab-Abschluss

Alles funktioniert wie angekündigt, aber ich bin verwöhnt von der Leichtigkeit, mit der ich Tab-Vervollständigung und Befehlszeilenprotokoll in REPL für Laufzeiten wie Python und Node.js erhalten.

Ich bin nicht auf der Suche nach etwas schweren, aber diese Eigenschaften sind recht einfach in der modernen REPL ist, vorbei zu kommen (es nur a simple startup file in Python ist und kann in a few lines in Node.js implementiert werden).

Gibt es eine einfache Möglichkeit, Tab-Vervollständigung und Befehlshistorie in der MIT-Schema REPL ohne eine Heavy-Duty-Anwendung zu erhalten oder zu Emacs wechseln (d. H. In einem Xterm-Terminal)?

Antwort

40

Installieren der readline wrapper:

brew install rlwrap

Einmal installiert, rlwrap scheme geben Ihnen persistent Geschichte, paren Anpassung und Tabulatorvervollständigung. Ich verwende normalerweise rlwrap mit den folgenden Argumenten:

-r Alle Wörter, die auf den Ein- und Ausgaben zu sehen sind, in die Abschlussliste eintragen.

-c komplette Dateinamen

-f eine Liste von Wörtern an, für den Tab-Vervollständigung zu verwenden. Ich verwende eine gekürzte Liste von Bindungen aus der MIT Scheme Reference Manual. Anstatt die Liste hier erneut zu veröffentlichen, können Sie sie in this gist finden. Ich habe diese Datei in "$ HOME" gespeichert /scheme_completion.txt

rlwrap -r -c -f "$HOME"/scheme_completion.txt scheme

1 ]=> (flo:a <tab tab> 
flo:abs flo:acos flo:asin flo:atan flo:atan2 
1 ]=> (flo:abs -42.0) 

;Value: 42. 
+0

Liebe dieses. Dies scheint auch für andere Programme sehr nützlich zu sein. –