Python 在emacs中使用flymake和tramp远程运行pyflakes?
我正在尝试使用flymake运行pyflakes,正如建议的那样 这适用于本地文件,几乎适用于远程文件,但我遇到了一个问题,即flymake/pyflakes在缓冲区运行时“修改”缓冲区(尽管实际上似乎没有任何变化),这使得它在实践中有点无用(例如,保存文件时运行flymake,它会立即再次修改缓冲区) 以下是我几乎让它工作的方法:Python 在emacs中使用flymake和tramp远程运行pyflakes?,python,emacs,tramp,flymake,pyflakes,Python,Emacs,Tramp,Flymake,Pyflakes,我正在尝试使用flymake运行pyflakes,正如建议的那样 这适用于本地文件,几乎适用于远程文件,但我遇到了一个问题,即flymake/pyflakes在缓冲区运行时“修改”缓冲区(尽管实际上似乎没有任何变化),这使得它在实践中有点无用(例如,保存文件时运行flymake,它会立即再次修改缓冲区) 以下是我几乎让它工作的方法: 已在远程机箱上安装pyflakes 自定义mytramp远程进程环境变量,以便可以在其路径中找到pyflakes 使用了上面wiki链接中的代码变体。显然,我排除了
tramp远程进程环境
变量,以便可以在其路径中找到pyflakes(加载“flymake”t)
构造似乎没有像我预期的那样工作,但我并不太担心这一点flymake start syntax check process
函数(出于测试目的——如果可以工作,则建议可以),以便它使用start file process
(适用于tramp),而不是start process
(不适用)启动文件进程
,会产生一些本地进程没有的额外返回值/数据
有人有什么见解/建议吗
- Ubuntu上的Emacs 23.1和23.2
- Python 2.4.6
- Pyflakes 0.4.0(通过简易安装)
$TMP
目录,因为这也允许我在我没有写入权限的目录中使用tramp-on文件
您可能想签出我的fork of,因为它可以完成所有这一切。我在我的fork of Flymake()中修复了它 它要么通过Tramp在远程机器上运行语法检查,而不存在您看到的缓冲区修改问题;或者,您可以将
flymake就地运行
设置为nil
,它将在本地计算机上运行语法检查,就像在常规非不定期缓冲区上运行flymake一样
由于它是在Flymake级别修复的,因此该修复程序适用于所有语言和语法检查,而不仅仅是pyflake
如果您对发生这种情况的详细信息感兴趣,基本上是在启动文件进程的Tramp处理程序启动时,它会将连接的登录消息转储到当前缓冲区的末尾,然后再将任何输出筛选器附加到进程
通常这表现为人们看到/etc/issue的内容与“youhavemail.”一起出现在他们的文件末尾,以此类推
在您的情况下,登录消息可能是空的,或者只是一个新行,因此您没有看到任何文本被添加,即使它正在将缓冲区设置为被修改。这听起来很有希望,但我不再方便地测试这一点。主销,你能告诉我是否有可以接受的解决方案吗?你好,@Ross Patterson。我用的是你修改过的flymake。对于没有.py扩展名的文件(但以python模式加载)有一个问题,我已经通过一些帮助解决了这个问题,并且它在本地python文件上非常有效。(带/不带py.扩展);()但是它不能通过ssh与tramp一起工作。本地缓冲区在minibuffer上显示flymake:0/2,而tramp buffer仅显示flymake。次要模式已打开,但没有突出显示。你知道吗?谢谢。谢谢你提供的信息。这看起来像是您所做的一系列出色的改进。请注意:2014年,您可以使用elpa安装的标准flymake(我有版本0.4.16)包括flymake run-in-place变量-simple customize this to nil,flymake将文件存储在$TMP中