emacs中的Python代码检查器包装器无法正确地将结果提供给win32上的flymake

时间:2012-02-21 16:57:44

标签: python emacs flymake python-mode

所以我在emacs python wiki(找到here)周围的pep8,pyflakes和pylint上使用这个包装器,它在命令行上运行(根据“{在Windows上设置它的麻烦之后) {3}}“。

但是,在emacs中,flymake会强行显示有错误的行,但是当我将鼠标悬停时,应该包含错误消息的框为空。我的init文件包含:

 (setq pycodechecker "etcwrapper.bat")
(when (load "flymake" t)
   (load-library "flymake-cursor")
   (defun dss/flymake-pycodecheck-init ()
     (let* ((temp-file (flymake-init-create-temp-buffer-copy
                        'flymake-create-temp-inplace))
            (local-file (file-relative-name
                         temp-file
                         (file-name-directory buffer-file-name))))
       (list pycodechecker (list local-file))))
   (add-to-list 'flymake-allowed-file-name-masks
                '("\\.py\\'" dss/flymake-pycodecheck-init)))

etcwraper.bat是一个简单的批处理脚本,它在python包装器脚本上运行python。为方便起见,我把它放在系统路径的目录中。 我也可以让flymake只下划线一个字符而不是整行吗? 有什么建议吗?

1 个答案:

答案 0 :(得分:0)

我不是python专家,并且从未在Windows上使用它,所以这个答案可能没有用......但是我知道某些版本的flymake-cursor中有一个hack来应对这个事实pyflakes要么没有正确报告编译错误的错误,要么它们的格式错误flymake要解析。

您可以在flymake-cursor此处的分支中看到针对它的尝试修复:

https://github.com/illusori/emacs-flymake-cursor/blob/master/flymake-cursor.el#L126

我从Dino Chiesa版本中得到了解决方案,因此我不知道完整的背景故事,但听起来这就是你所遇到的问题。

更新版本的flymake-cursor(例如我的或Dino)可能会帮助您在emacs消息区域中看到错误指示符,但鼠标覆盖图在flymake处理,但没有针对此问题的修复程序据我所知。

如果您在手动运行时提供了由etcwrapper.bat生成的输出,我可能会进一步提供帮助。

仅仅强调一个角色也很棘手,根据我的理解,您需要从flymake-make-overlay重新定义flymake.el并创建两个叠加而不是一个。您可能会更容易为flymake-errlineflymake-warnline自定义面部,而不是下划线。

很抱歉,这些答案都不是解决方法。 :)