Emacs 在 shell/REPL 输出的长行换行时冻结

Emacs 在 shell/REPL 输出的长行换行时冻结

我一直遇到 Emacs 的一个问题,它无法在 RELP 或 shell 模式下处理长行换行打印输出。Emacs 进程开始在满 CPU 上运行,几乎完全没有响应(偶尔它会开始处理用户命令,但随后又冻结)。这意味着我必须终止该进程并重新启动 Emacs。显然,这是一个主要的稳定性和可用性问题,并且普通终端可以轻松处理的事情

我没有使用任何深奥的换行扩展,只toggle-truncate-lines启用了默认扩展(在 shell 或 REPL 中需要换行)。Emacs 版本是24.3.1 (x86_64-pc-linux-gnu, GTK+ Version 3.4.2)

针对此问题进行 Google 搜索没有返回任何有用或类似的信息。没有其他人遇到过这些问题吗?任何解决方案或解决方法都将不胜感激。

答案1

Emacs 的各个部分都以“一行一行”的方式运行,假设每行不会太长。因此,像您描述的这种长行往往会让 Emacs 崩溃。

通常有很多方法可以减轻痛苦,但这完全取决于您的情况的具体细节,因此,如果没有关于您使用哪种主要模式的更多详细信息(例如),最明显的第一件事就是关闭它,font-lock-mode因为它会逐行重新突出显示文本(因此,在将 4KB 的输出添加到行尾后,它会重新处理整行以突出显示它,这反过来意味着重新显示代码必须重新处理整行以查看突出显示的哪部分可能已更改)。

答案2

尝试旧版本中的可视化线模式或过时的长线模式,应该可以显著减少 CPU 负载。

https://www.emacswiki.org/emacs/VisualLineMode

相关内容