gpt4 book ai didi

python - flymake的临时文件可以在系统的临时目录下创建吗?

转载 作者:太空狗 更新时间:2023-10-30 01:35:19 24 4
gpt4 key购买 nike

我目前正在使用以下代码在 emacs 中连接 flymake 和 Pyflakes:

(defun flymake-create-temp-in-system-tempdir (filename prefix)
(make-temp-file (or prefix "flymake")))

然后我将此函数传递给 flymake-init-create-temp-buffer-copy。 (取自 http://hustoknow.blogspot.com/2010/09/emacs-and-pyflakes-using-tmp-directory.html )。

这段代码在昨天之前运行良好。当我访问某些 Python 文件时,出现以下错误:

switched OFF Flymake mode for buffer admin.py due to fatal status
CFGERR, warning Configuration error has occured while running
(pyflakes ../../../../../../../tmp/flymake28459SVv)

为什么 flymake 将错误的文件名传递给 pyflakes?我希望它传递类似“/tmp/efe234234”的内容,并且我没有修改任何 tmp 目录设置。

我不记得最近为 Ubuntu 更新了 emacs,也想不出任何可能导致此问题的原因(.emacs 文件是版本化的)。

我能想到的唯一问题是,这是一个高度嵌套的目录,符号链接(symbolic link)到我的 ~/Dropbox 目录中的一个目录,但其他以类似方式进行符号链接(symbolic link)的目录不会发生这种情况。

我该如何解决这个问题?

更新

我已经进行了一些调试,现在我发现它没有传递正确的路径作为参数。它需要在路径中再插入一个父目录才能使其正常工作,这让我觉得它因为符号链接(symbolic link)而变得一团糟。

这是一个示例 shell session 来说明我的意思。我是从正确的相对目录执行此操作的:

$ pyflakes ../../../../../tmp/flymake13382xHi 
../../../../../tmp/flymake13382xHi: No such file or directory

那是 flymake 试图运行的命令。如果我改变它:

$ pyflakes ../../../../../../tmp/flymake13382xHi

我没有得到任何输出(正如预期的那样)。注意路径中额外的“..”。

如何让 flymake 传递绝对路径而不是这些疯狂的相对路径?

更新 2

我已经做好了一切工作。基本上有这个功能:

(defun flymake-pyflakes-init ()
; Make sure it's not a remote buffer or flymake would not work
(when (not (subsetp (list (current-buffer)) (tramp-list-remote-buffers)))
(let* ((temp-file (flymake-init-create-temp-buffer-copy
'flymake-create-temp-in-system-tempdir))
(local-file (file-relative-name
temp-file
(file-name-directory buffer-file-name))))
(list "pyflakes" (list temp-file)))))

在最后一部分中,我不得不将 list 的参数从 local-file 更改为 temp-file 因为 local- file 是我不想要的疯狂相对路径。为什么该片段的作者首先使用 local-file

谢谢,瑞安

最佳答案

对我来说,我已经通过修改用户脚本/usr/local/bin/pyflakes 来解决,我测试文件是否存在,如果不存在,我添加一个斜杠。

#!/bin/bash

FILE=$1

# Test if folder exist
if [ ! -e "$FILE" ]; then
FILE="/$1"
fi

epylint "$FILE" 2>/dev/null
pep8 --ignore=E221,E701,E202 --repeat "$FILE"
true

关于python - flymake的临时文件可以在系统的临时目录下创建吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5793839/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com