2013-10-29 47 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 } 

然而,在你的情況,我不相信你可以不斷從語法錯誤中恢復過來。