我使用Emacs 24.2.我已安装js-comint并js-mode从MELPA执行run-js,现在在REPL而不是>签名我有这个胡言乱语:
^[[1G> ^[[0K^[[3G
Run Code Online (Sandbox Code Playgroud)
在Inferior Javascript模式下的REPL本身工作正常,只是>标志被更改.如果输入未完成的表达式,它甚至会打印出来^[[1G... ^[[0K^[[5G.该^[是在系统的字符,不与复制-粘贴复制的,我加他们为你有一个想法.
在我的init文件中:
(require 'js-comint)
(setq inferior-js-program-command "nodejs")
Run Code Online (Sandbox Code Playgroud)
在终端呼叫中nodejs产生工作REPL.
为什么提示这样做?我该怎么做才能纠正这个问题?
我从常规命令提示符运行node.exe没有问题:
C:\>node --interactive
> console.log("Works fine");
Works fine
Run Code Online (Sandbox Code Playgroud)
但是当我尝试从Cygwin控制台做同样的事情时,我遇到了这样的问题:
Olli@Olli-MBRr /cygdrive/c
$ node.exe
events.js:72
throw er; // Unhandled 'error' event
^
Error: read ENOTCONN
at errnoException (net.js:900:11)
at Socket._read (net.js:391:21)
at Socket.Readable.read (_stream_readable.js:320:10)
at Socket.read (net.js:293:43)
at new Socket (net.js:185:10)
at process.stdin (node.js:660:19)
at startup (node.js:145:16)
at node.js:901:3
Run Code Online (Sandbox Code Playgroud)
起初我以为可能是因为Cygwin在路径名中有空格(C:\ Program Files \nodejs)有问题,但是在将node.js安装到路径名中没有空格的目录之后我无法解决问题.
我想使用js-comint从Emacs(从Cygwin运行)运行Node JS控制台,但我遇到了这个错误并且不知道如何解决它.
在这里的相关问题和答案中,有人假设emacs(23.2)中的python-shell是块缓冲而不是行缓冲.建议修复是将sys.stdout.flush()添加到我的脚本中的位置,我希望stdio将其内容刷新到python-shell.
有没有办法欺骗python-shell(在Windows上的emacs 23.2中运行,而不是在Linux上运行)a)认为它附加到TTY或b)使用行缓冲而不是块缓冲模式?我不明白为什么我能在IDLE中执行此操作但不能在emacs中执行此操作.
我宁愿自定义emacs而不是在我的脚本中添加sys.stdout.flush().叫我懒惰:-).
谢谢,
麦克风