2013-10-29 107 views
1

我在ubuntu ec2实例的emacs中使用了一个节点REPL,并且我注意到每当我输入一个未知字符,例如“#”进入REPL,REPL将停止工作,而是每行都以'>'开头,我会输入我的代码,我得到'...^[[5G'。如果我点击C-C C-c,则REPL将恢复正常。这里发生了什么?Emacs Node REPL奇怪行为

我认为这可能与评论有关。如果是这样,如果第一行是注释,我将如何使用C-C C-r将我的所有代码带到REPL?

+0

要回答您的最终问题,我们需要查看代码。 '#'是JavaScript中的非法标记,因此您的脚本无法生效。 –

+1

我想我可以隐约记得由于某种原因,带节点的commint缓冲区不会捕获错误流。所以Node实际上打印了一些东西,但不是stdout,而是stderror,它不会被重定向到Emacs。 – 2013-10-29 21:15:49

回答

1

在JavaScript中#是非法标记,而不是注释(尝试在浏览器JavaScript控制台中输入此标记)。这会在评估时产生语法错误,但是节点REPL试图通过缓冲命令并提示您输入更多的输入(...)试图从错误中恢复,从而有所帮助。

这将是此相同的行为(如REPL源文件):

> {   // syntax error! 
... x : 1 // syntax error! 
... }  // recovered ... 
{ x: 1 } 

然而,在你的情况,我不相信你可以不断从语法错误中恢复过来。