2012-01-18 14 views
12

myślałem, że to będzie działać:jak uruchomić node.js interaktywnie w Emacsa na Windows

(defun my-node() 
    (interactive) 
    (pop-to-buffer (make-comint "my-node" "node"))) 

Ale kiedy zrobić M-x my-node i wprowadź 1+1 w buforze COMINT, nie wyświetla żadnych wyników.

To jest w Emacs 24.0.50.1 na Windows 7 i NodeJS jest zainstalowany bez specjalnej konfiguracji.

Wywołanie node.js nieinteraktywnie jak w M-x compile RET node hello-world.js RET działa dobrze. Uruchamianie node interaktywnie w cmd działa dobrze.

Może to być powiązane: po uruchomieniu M-x shell i wpisaniu node w buforze powłoki, a następnie wprowadzeniu 1+1, nie wyświetla wyniku. Muszę zabraknąć czegoś bardzo prostego.

Aktualizacja:

prawdopodobnie związane: emacs/Python: running python-shell in line buffered vs. block buffered mode - Stack Overflow

Odpowiedz

3

Znalazłem jedno rozwiązanie.

Utwórz skrypt węzła, który uruchamia interfejs REPL JavaScript.

węzeł-w-node.js:

var repl = require("repl"); 
repl.start(); 

Przełęcz "węzeł ścieżka \ do \ węzeł-in-node.js" by-COMINT zamiast po prostu "węzeł".

(defun my-node-shell() 
    (interactive) 
    (pop-to-buffer (make-comint "Node Shell" "node" nil "C:\\run\\node-in-node.js"))) 

Uruchomienie M-x my-node-shell w celu uruchomienia powłoki JavaScript w Windows Emacs. Nie wiem, dlaczego to działa. Wypełnianie kart, podświetlanie składni, wejście multilinii za pomocą klawiszy Shift + Enter nie działa.

+0

dla najnowszych wersji węzła 'repl.start()' należy zastąpić przez 'repl.start ({prompt: '>'})' – shyam

3

Od http://www.gnu.org/software/emacs/windows/Sub_002dprocesses.html, to wygląda tak, jakby to, co może się dziać to, że wyjście jest buforowane przez węzeł. Jeśli istnieje opcja, która modyfikuje buforowanie, możesz spróbować przekazać to.

Może istnieć inny sposób rozwiązania tego problemu, zakładając, że jest to kwestia buforowania, ale moja wiedza o systemie Windows nie jest na tyle kompletna, aby wiedzieć. Ja, na przykład, uwielbiałbym ogólne rozwiązanie tego problemu na platformach Windows, to denerwujący problem, gdy się pojawia.

11

Najprostszym sposobem, aby plik node.js (testowany przy użyciu węzła v0.8.1) jako gorszej powłoki w Emacs był użycie pakietu js-comint. Następnie ustaw (setq inferior-js-program-command "node --interactive"), aby wymusić działanie węzła w trybie interaktywnym. Komenda M-x run-js otworzy następnie interpreter.

Podobnie można łatwo sprawdzić, czy node --interactive działa w obrębie eshell.

+1

Czy sztuczka - musiałem dodać "--interactive" . –

+0

IOW '(pop-to-buffer (make-comint" node-repl "" node "zero" --interactive "))' –

Powiązane problemy