我正在尝试使用FlyMake运行Pyflakes,如建议 这里

这适用于本地文件,几乎可以使用一些调整的远程文件,但是我遇到的问题是,flymake/pyflakes运行时的缓冲区“对缓冲区进行修改”(尽管实际上似乎没有任何变化),这会呈现出来它在实践中有点没用(例如保存文件运行FlyMake,这立即修改缓冲区)。

这是我几乎使它起作用的事情:

  1. 在远程盒子上安装了PYFLAKES。
  2. 定制我的 tramp-remote-process-environment 可变,以便在其路径中找到碎片
  3. 从上面的Wiki链接中使用了代码的变体。显然,我排除了将其禁用以获取远程缓冲区的检查。另外, (when (load "flymake" t) ...) 构造似乎并没有像我预期的那样工作,但我并不为此担心。
  4. 重新定义(出于测试目的 - 如果可以做到这一点,建议应该很好) flymake-start-syntax-check-process 功能使其使用 start-file-process (与流浪汉一起使用)而不是 start-process (没有)。

#4中的更改似乎在处理本地文件时似乎并没有引起任何问题,但是尽管现在可以使FlyMake运行远程文件的远程pyflakes(错误按预期突出显示),但在这种情况下,缓冲区已修改为“修改”每当飞蝇运行时。

我猜 start-file-process, ,对于远程流程,会导致一些其他返回值/数据,而本地流程不会发生。

有人有洞察力/建议吗?

  • Ubuntu上的Emacs 23.1和23.2
  • Python 2.4.6
  • pyflakes 0.4.0(通过easy_install)
有帮助吗?

解决方案

您需要告诉Flymake 创造 这是缓冲区的副本 某处 在本地,我更喜欢使用 $TMP 此后目录 允许我在没有写入权限的目录中使用流浪汉。

您可能想结帐我的叉子 Flymake-Python 因为它做到了这一切。

其他提示

我把这个固定在我的flymake叉中(https://github.com/illusori/emacs-flymake).

它将通过流浪汉上的远程计算机上运行语法检查,而无需您看到的缓冲区修改问题;或者您可以设置 flymake-run-in-placenil 它将在本地计算机上运行语法检查,就像普通非TRAMP缓冲区上的FlyMake一样。

由于它已固定在FlyMake级别上,因此此修复程序适用于所有语言和语法检查,而不仅仅是pyflakes。

如果您对发生这种情况的详细信息感兴趣,基本上是在流浪汉处理程序开始的时候,它将连接的登录消息转移到当前缓冲区的末端,然后再将任何输出过滤器附加到过程。

通常,这表明人们看到了 /etc /问题的内容以及“您有邮件”的末尾出现在文件末尾。等等。

在您的情况下,可能是登录消息是空的,或者只是一个新线,因此即使将缓冲区设置为正在修改,也不会看到任何文本正在添加。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top