用flymake和emacs中的流浪汉远程运行pyflakes?
题
我正在尝试使用FlyMake运行Pyflakes,如建议 这里
这适用于本地文件,几乎可以使用一些调整的远程文件,但是我遇到的问题是,flymake/pyflakes运行时的缓冲区“对缓冲区进行修改”(尽管实际上似乎没有任何变化),这会呈现出来它在实践中有点没用(例如保存文件运行FlyMake,这立即修改缓冲区)。
这是我几乎使它起作用的事情:
- 在远程盒子上安装了PYFLAKES。
- 定制我的
tramp-remote-process-environment
可变,以便在其路径中找到碎片 - 从上面的Wiki链接中使用了代码的变体。显然,我排除了将其禁用以获取远程缓冲区的检查。另外,
(when (load "flymake" t) ...)
构造似乎并没有像我预期的那样工作,但我并不为此担心。 - 重新定义(出于测试目的 - 如果可以做到这一点,建议应该很好)
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-place
到 nil
它将在本地计算机上运行语法检查,就像普通非TRAMP缓冲区上的FlyMake一样。
由于它已固定在FlyMake级别上,因此此修复程序适用于所有语言和语法检查,而不仅仅是pyflakes。
如果您对发生这种情况的详细信息感兴趣,基本上是在流浪汉处理程序开始的时候,它将连接的登录消息转移到当前缓冲区的末端,然后再将任何输出过滤器附加到过程。
通常,这表明人们看到了 /etc /问题的内容以及“您有邮件”的末尾出现在文件末尾。等等。
在您的情况下,可能是登录消息是空的,或者只是一个新线,因此即使将缓冲区设置为正在修改,也不会看到任何文本正在添加。