![](/img/trans.png)
[英]node.js in emacs buffer has no process---better system to execute js interactively in emacs
[英]how to run node.js interactively in Emacs on Windows
我認為這會奏效:
(defun my-node ()
(interactive)
(pop-to-buffer (make-comint "my-node" "node")))
但是當我執行Mx my-node
並在comint緩沖區中輸入1+1
時,它不會顯示任何輸出。
這是在Windows 7上的Emacs 24.0.50.1中安裝的NodeJS沒有任何特殊配置。
非接觸地調用node.js,如在Mx compile RET node hello-world.js RET
工作正常。 在cmd
交互方式運行node
工作正常。
這可能是相關的:當我運行Mx shell
並在shell緩沖區中輸入node
然后輸入1+1
,它不會顯示結果。 我必須遺漏一些非常基本的東西。
更新:
可能相關: emacs / Python:在行緩沖與塊緩沖模式下運行python-shell - Stack Overflow
將node.js(使用節點v0.8.1測試)作為Emacs下的劣質shell的最簡單方法是使用js-comint包。 然后,設置(setq inferior-js-program-command "node --interactive")
以強制節點以交互模式運行。 然后命令Mx run-js
將打開解釋器。
同樣,您可以輕松驗證node --interactive
是否在eshell中工作。
從http://www.gnu.org/software/emacs/windows/Sub_002dprocesses.html看,可能發生的事情是輸出是由節點緩沖的。 如果有一個選項可以修改它的緩沖,你可以嘗試傳遞它。
可能還有另一種方法可以解決它,假設這是一個緩沖問題,但我的Windows知識還不夠完整。 我認為,在Windows平台上,我會喜歡這種解決方案的一般解決方案,當它突然出現時,這是一個令人討厭的問題。
我找到了一個解決方案
創建一個啟動JavaScript REPL接口的節點腳本。
節點在-的node.js:
var repl = require("repl");
repl.start();
將“node path \\ to \\ node-in-node.js”傳遞給make-comint而不是簡單的“node”。
(defun my-node-shell ()
(interactive)
(pop-to-buffer (make-comint "Node Shell" "node" nil "C:\\run\\node-in-node.js")))
運行Mx my-node-shell
以在Windows Emacs中運行JavaScript shell。 我不知道為什么會這樣。 通過Shift + Enter選項卡完成,語法突出顯示,多行輸入不起作用。
如果js-comint不適合您,您可以嘗試 :
(defun node-repl () (interactive) (setenv "NODE_NO_READLINE" "1") ;avoid fancy terminal codes (pop-to-buffer (make-comint "node-repl" "node" nil "--interactive"))) (node-repl)
js-comint
方式似乎更好用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.