2012-12-13 7 views
13

Ich benutze Emacs 24.2. Ich habe js-comint und js-mode von MELPA installiert, ausgeführt run-js, und jetzt in REPL statt > Zeichen Ich habe dieses Kauderwelsch:Verwenden von Node.js mit JS-comint in Emacs

^[[1G> ^[[0K^[[3G 

Die REPL sich in Inferior Javascript-Modus funktioniert gut, nur das > Zeichen geändert wird . Wenn Sie einen unvollendeten Ausdruck eingeben, wird sogar ^[[1G... ^[[0K^[[5G ausgedruckt. Die ^[ sind Systemzeichen, die nicht mit Copy-Paste kopiert werden, ich füge sie für Sie hinzu, um eine Idee zu haben.

In meiner init-Datei:

(require 'js-comint) 
(setq inferior-js-program-command "nodejs") 

Im Terminal Aufruf nodejs produziert arbeiten REPL.

Warum prompt verhält sich so? Was soll ich tun, um dies zu korrigieren?

Antwort

17
(setq inferior-js-mode-hook 
     (lambda() 
     ;; We like nice colors 
     (ansi-color-for-comint-mode-on) 
     ;; Deal with some prompt nonsense 
     (add-to-list 
     'comint-preoutput-filter-functions 
     (lambda (output) 
      (replace-regexp-in-string "\033\\[[0-9]+[GK]" "" output))))) 

\033 ist das Escape-Zeichen als ^[ druckt.

+0

aber warum produziert prompt Müll? –

+1

Eine kleine Änderung an der letzten Anweisung vorgenommen: '(ersetzen-regexp-in-string" \ 033 \\ [[0-9] + [A-Z] "" "Ausgabe)))))' – narayan

17

Fügen Sie einfach eine Zeile in Ihrem .emacs:

(setenv "NODE_NO_READLINE" "1") 

Antwort von diesem Posten kam: Node.js prompt '>' can not show in eshell

+0

+1. das hat im Grunde für mich funktioniert, danke. Ich habe eine Datei namens 'repl' in meinem App-Verzeichnis erstellt und darin den Knoten NODE_NO_READLINE = 1 gesetzt. Rufen Sie dann einfach ./repl aus einer Emacs-Shell heraus und Sie erhalten einen Knoten repl in emacs mit dem richtigen Modul-Scoping und ohne Ausgabe giberrish. – Scott

1

Nicht sicher, wie neu, aber jetzt kann man herunterladen und die nodejs-repl verwenden.

Verwandte Themen