【问题标题】:Emacs Node REPL strange behaviorEmacs Node REPL 奇怪的行为
【发布时间】:2013-10-29 20:06:10
【问题描述】:

我在 ubuntu ec2 实例的 emacs 中使用节点 REPL,我注意到每当我在 REPL 中键入未知字符时,例如“#”,REPL 将停止工作,而不是让每一行开始用'>'输入我的代码,我得到'... ^[[5G'。如果我按 C-c C-c 然后 REPL 将恢复正常。这是怎么回事?

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

【问题讨论】:

  • 要回答您的最后一个问题,我们需要查看代码。 # 是 JavaScript 中的非法令牌,因此您的脚本无效。
  • 我想我可以隐约记得,由于某种原因,带有节点的 commint 缓冲区不会捕获错误流。所以 Node 实际上打印了一些东西,只是不是打印到 stdout,而是 stderror,它没有被重定向到 Emacs。

标签: node.js emacs read-eval-print-loop


【解决方案1】:

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

这与此处的行为相同(如REPL 源中所述):

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

但是,就你而言,我认为你永远无法从糟糕的语法中恢复过来。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-04
    • 2019-03-11
    • 2012-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多