[英]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.