我正在尝试使用flymake运行pyflakes,如这里所建议的那样。对于本地文件,这很好用,并且通过一些调整几乎可以处理远程文件,但是当flymake/pyflakes运行时会“修改”缓冲区(尽管似乎实际上没有任何更改),这使得它在实践中有点无用(例如,保存文件会运行flymake,然后flymake会立即再次修改缓冲区)。
以下是我做的事情:
1. 在远程主机上安装了pyflakes。 2. 自定义了我的`tramp-remote-process-environment`变量,以便在其PATH中找到pyflakes。 3. 使用了来自上面链接的代码变体。显然,我排除了禁用远程缓冲区的检查。此外,`(when (load "flymake" t) ...)`结构似乎不像我预期的那样工作,但我不太担心这个问题。 4. 重新定义了`flymake-start-syntax-check-process`函数(出于测试目的——如果这可以正常工作,则建议应该没有问题),使其使用`start-file-process`(适用于tramp)而不是`start-process`(不适用于tramp)。
第4步的更改似乎不会在处理本地文件时引起任何问题,但是虽然现在这使flymake能够为远程文件运行远程pyflakes(错误会如预期的那样被突出显示),但在这种情况下,每当flymake运行时缓冲区就会被“修改”。
我猜想,对于远程进程,`start-file-process`会产生一些额外的返回值/数据,而本地进程则没有。是否有人有任何见解/建议?
以下是我做的事情:
1. 在远程主机上安装了pyflakes。 2. 自定义了我的`tramp-remote-process-environment`变量,以便在其PATH中找到pyflakes。 3. 使用了来自上面链接的代码变体。显然,我排除了禁用远程缓冲区的检查。此外,`(when (load "flymake" t) ...)`结构似乎不像我预期的那样工作,但我不太担心这个问题。 4. 重新定义了`flymake-start-syntax-check-process`函数(出于测试目的——如果这可以正常工作,则建议应该没有问题),使其使用`start-file-process`(适用于tramp)而不是`start-process`(不适用于tramp)。
第4步的更改似乎不会在处理本地文件时引起任何问题,但是虽然现在这使flymake能够为远程文件运行远程pyflakes(错误会如预期的那样被突出显示),但在这种情况下,每当flymake运行时缓冲区就会被“修改”。
我猜想,对于远程进程,`start-file-process`会产生一些额外的返回值/数据,而本地进程则没有。是否有人有任何见解/建议?
- Ubuntu上的Emacs 23.1和23.2
- Python 2.4.6
- Pyflakes 0.4.0(通过easy_install安装)