我可以自定义ff-find-other-file以在测试和实现之间切换吗?

时间:2012-05-03 18:36:12

标签: python emacs

每当我必须编辑C ++代码时,我使用ff-find-other-file来在头文件和实现文件之间来回切换。我可以将它用于Python文件在实现和测试之间来回切换吗?例如,如果我在foo.py,我希望能够切换到foo_test.py

2 个答案:

答案 0 :(得分:3)

您实际上想要设置ff-other-file-alist(可能还有ff-search-directories)。这些变量自动缓冲本地,因此您可以在模式挂钩中安全地设置它们。

cc-other-file-alist是C / C ++文件的预配置映射,它只是ff-other-file-alist的默认值。

要处理从测试返回到实现的反向映射,您需要添加第二个条目,因此alist将如下所示:

'(("_test\\.py$" (".py"))
  ("\\.py$" ("_test.py")))

在这种情况下,反向映射需要先行,因为规则按顺序处理,.py匹配两个文件名。如果他们是相反的方式,你仍然会从foo_test.py转到foo_test_test.py,依此类推......

有关更多信息和示例,请参阅此相关问题:

If I open doc.foo file, I want emacs to look for and open doc.bar file in the same folder

对于您的情况,您可以使用:

(add-hook 'python-mode-hook 'my-python-mode-hook)

(defun my-python-mode-hook ()
  "My python customisations."
  (setq ff-search-directories '(".")
        ff-other-file-alist '(("_test\\.py$" (".py"))
                              ("\\.py$" ("_test.py")))))

答案 1 :(得分:1)

您需要创建一个.emacs规则设置cc-other-file-alist,例如:

(setq cc-other-file-alist
  `(("\\.py$" ("_test.py"))))