2012-01-18 13 views
12

運行我想這會工作:如何node.js的交互式在Emacs在Windows

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

但是當我做M-x my-node並在COMINT緩衝輸入1+1,它不會顯示任何輸出。

這是在Windows 7上的Emacs 24.0.50.1,NodeJS沒有任何特殊的配置。

以非交互方式調用node.js,如M-x compile RET node hello-world.js RET正常工作。在cmd中以交互方式運行node工作正常。

這可能是相關的:當我運行M-x shell並在shell緩衝區中輸入node,然後輸入1+1時,它不顯示結果。我必須錯過一些非常基本的東西。

更新:

可能與:emacs/Python: running python-shell in line buffered vs. block buffered mode - Stack Overflow

回答

3

我找到了一個解決方案。

製作啓動JavaScript REPL接口的節點腳本。

節點在-node.js中:

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

通行證 「節點路徑\爲\節點功能於Node.js的」 使-COMINT而不是簡單的 「節點」。

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

運行M-x my-node-shell在Windows Emacs中運行JavaScript shell。我不知道這是爲什麼起作用。 Tab完成,語法高亮顯示,通過Shift + Enter的多行輸入不起作用。

+0

節點'repl.start()'的最新版本需要用'repl.start({prompt:'>'})替換' – shyam 2013-10-10 11:00:21

3

http://www.gnu.org/software/emacs/windows/Sub_002dprocesses.html,它看起來好像什麼可能發生的情況是,輸出被節點緩存。如果有一個選項可以修改它的緩衝,你可以嘗試傳遞它。

可能有另一種方法來解決它,假設它是一個緩衝問題,但我的Windows知識還不夠完全知道。舉個例子來說,我會喜歡在Windows平臺上的這種通用解決方案,當它出現時,這是一個惱人的問題。

11

使用js-comint軟件包將node.js(使用節點v0.8.1進行測試)作爲Emacs下級外殼的最簡單方法是使用js-comint軟件包。然後,設置(setq inferior-js-program-command "node --interactive")強制節點以交互模式運行。然後命令M-x run-js將打開解釋器。

同樣,您可以輕鬆驗證node --interactive在eshell內工作。

+1

訣竅 - 我需要添加「--interactive」 。 – 2013-04-29 02:00:09

+0

IOW'(pop-to-buffer(make-comint「node-repl」「node」nil「--interactive」))'' – 2014-01-22 19:45:21

相關問題