小编Rya*_*kel的帖子

使用emacs可以使Python etags更聪明吗?

我使用emacs处理我的Django项目.在我的virtualenv"postactivate"脚本中,我有以下简单命令:

find -L . -type f -name "*.py" | xargs etags -e > /dev/null 2>&1 &
Run Code Online (Sandbox Code Playgroud)

TAGS文件生成得很好,但系统似乎相当愚蠢.当光标是模型过滤器调用时,例如

MyModel.objects.filter(...)
Run Code Online (Sandbox Code Playgroud)

我点击M-.,有时emacs会把我放在文件发布时导入MyModel的位置(实际的import语句).我只想访问类,方法和函数定义.

有没有办法让etags变得更聪明?

谢谢Ryan Kaskel

python tags django emacs

7
推荐指数
1
解决办法
869
查看次数

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

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

(defun flymake-create-temp-in-system-tempdir (filename prefix)
  (make-temp-file (or prefix "flymake")))
Run Code Online (Sandbox Code Playgroud)

然后我将此功能传递给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)
Run Code Online (Sandbox Code Playgroud)

为什么flymake会将看似错误的文件名传递给pyflakes?我希望它传递类似"/ tmp/efe234234"的东西,我没有修改任何tmp目录设置.

我不记得最近为Ubuntu更新了emacs,也无法想到任何可能导致这个问题陷入困境的事情(.emacs文件版本化).

我能想到的唯一问题是,这是一个嵌套到目录中的嵌套目录,这个目录符号链接到〜/ Dropbox目录中的目录,但这种情况不会以类似的方式发生在其他符号链接中.

我该如何解决这个问题?

UPDATE

我做了一些调试,现在我发现它没有传递正确的路径作为参数.它需要在路径中插入一个更多的父目录才能使它工作,这让我觉得它因为符号链接而变得混乱.

这是一个示例shell会话,以显示我的意思.我是从正确的相对目录中这样做的:

$ pyflakes ../../../../../tmp/flymake13382xHi 
../../../../../tmp/flymake13382xHi: No such file or directory
Run Code Online (Sandbox Code Playgroud)

这就是flymake试图运行的命令.如果我改变它:

$ pyflakes ../../../../../../tmp/flymake13382xHi
Run Code Online (Sandbox Code Playgroud)

我没有输出(如预期的那样).注意路径中的额外"..".

我如何让flymake通过绝对路径而不是这些疯狂的相对路径?

更新2

我已经把一切都搞定了.基本上有这个功能:

(defun flymake-pyflakes-init ()
     ; Make sure it's not a remote buffer or flymake would not work
     (when (not …
Run Code Online (Sandbox Code Playgroud)

python emacs flymake pyflakes

5
推荐指数
1
解决办法
1828
查看次数

标签 统计

emacs ×2

python ×2

django ×1

flymake ×1

pyflakes ×1

tags ×1