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

emacs ess-indent-or-complete sends newline to R process

有时,由于我无法确定的原因,ess-indent-or-complete 会向 R 控制台发送一个输入。换句话说,我将输入一些内容,点击 Tab 键自动完成(或 company 对我自动完成),R 过程将更新为换行符(左侧的 .R 文件“ buffer", R 右侧进程):

x <- mea█                        | >
                                 |
                                 |

... 然后我点击 Tab 键完成 "mean":

x <- mean█                       | >
                                 | > ## note the new line here
                                 |

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

  1. 它用空行填充进程缓冲区。
  2. 如果我使用 browser(),它会提前行,这通常是不受欢迎的。

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

我是运行emacs 27.1,ess-20210818.843(虽然这已经有很长时间了,所以我不认为它是特定于版本的),并且我在 ESS[R] mode.

从我的 .R 文件缓冲区调用 M-: (ess-command "") 会复制在特定会话中开始发生的不良行为。我对此一无所知。

我想你自己解决了这个问题,根据你的 GH 问题建议: https://github.com/emacs-ess/ESS/issues/1198

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

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