代码之家  ›  专栏  ›  技术社区  ›  phils

在emacs中用flymake和tramp远程运行pyflakes?

  •  16
  • phils  · 技术社区  · 14 年前

    我试着用flymake来运行pyflakes,就像建议的那样 here

    以下是我几乎让它工作的方法:

    1. 在遥控箱上安装了pyflakes。
    2. tramp-remote-process-environment 变量,以便可以在其路径中找到pyflakes
    3. 使用了上面wiki链接中代码的变体。显然,我排除了对远程缓冲区禁用它的检查。此外,还有 (when (load "flymake" t) ...) 构造似乎没有像我预期的那样工作,但我不太担心。
    4. 重新定义(出于测试目的——如果可以这样做的话,建议就可以了) flymake-start-syntax-check-process 函数,以便它使用 start-file-process start-process

    在处理本地文件时,#4中的更改似乎不会导致任何问题,但尽管这现在使flymake能够为远程文件运行远程pyflake(错误按预期突出显示),但在这种情况下,只要flymake运行,缓冲区就会被“修改”。

    启动文件进程 对于远程进程,会导致一些额外的返回值/数据,而本地进程不会出现这些返回值/数据。

    有人有什么见解/建议吗?

    • Ubuntu上的Emacs 23.1和23.2
    • Python 2.4.6版
    2 回复  |  直到 11 年前
        1
  •  9
  •   Ross Patterson    13 年前

    你得告诉flymake create 这是缓冲区的副本 somewhere $TMP 从此以后的目录

    你也许想看看我的叉子 flymake-python 既然它能做到这一切。

        2
  •  6
  •   Sam Graham    13 年前

    https://github.com/illusori/emacs-flymake ).

    它要么通过Tramp在远程机器上运行语法检查,而不存在您看到的缓冲区修改问题;或者你可以设置 flymake-run-in-place nil 它将在本地机器上运行语法检查,就像在常规非Tramp缓冲区上运行flymake一样。

    因为它是在Flymake级别修复的,所以这个修复程序适用于所有语言和语法检查,而不仅仅是pyflake。

    通常这表现为人们看到/etc/issue的内容与“youhavemail.”一起出现在他们文件的末尾。

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

    推荐文章