emacs ess-indent-or-complete 向 R 进程发送换行符

bk1*_*k18 5 emacs r ess

有时,由于我无法确定的原因,ess-indent-or-complete会将输入发送到R控制台。换句话说,我将输入一些内容,点击选项卡以自动完成(或company对我来说自动完成),并且该R过程将用换行符更新(.R左侧“缓冲区”的文件,R右侧的过程):

\n
x <- mea\xe2\x96\x88                        | >\n                                 |\n                                 |\n
Run Code Online (Sandbox Code Playgroud)\n

...然后我点击 Tab 来完成“ mean”:

\n
x <- mean\xe2\x96\x88                       | >\n                                 | > ## note the new line here\n                                 |\n
Run Code Online (Sandbox Code Playgroud)\n

这可能真的很烦人,至少有两个原因:

\n
    \n
  1. 它用空行填充进程缓冲区。
  2. \n
  3. 如果我使用 a browser(),它会提前行,这通常是不可取的。
  4. \n
\n

我自己尝试诊断此问题,但无济于事。每次重新启动 emacs 都会修复它,但它似乎全天随机发生。一旦启动,它就不会停止,直到 emacs 重新启动。

\n

我正在运行emacs 27.1ess-20210818.843(尽管这已经存在很长时间了,所以我不相信它是特定于版本的),并且处于ESS[R] mode.

\n

一旦在特定会话中开始发生不需要的行为,M-: (ess-command "")从我的文件缓冲区调用就会复制该行为。.R除此之外我没有任何见解。

\n

Mar*_*ler 1

我认为你自己解决了这个问题,并提出了你的 GH 问题建议: https: //github.com/emacs-ess/ESS/issues/1198

我已经在我自己的 ESS 版本中进行了更改,并将在测试几天后提交。

非常非常感谢您的坚持和(我认为)找到错误..内部的一个简单的拼写错误(ess--command-make-restore-function)