¿Puedo personalizar ff-find-other-file para cambiar entre pruebas e implementaciones?

Cada vez que tengo que editar código C++, uso ff-find-other-file para alternar entre los archivos de encabezado y de implementación. ¿Puedo usarlo para archivos de Python para alternar entre implementaciones y pruebas? Por ejemplo, si estoy en foo.py, me gustaría poder cambiar a foo_test.py.

preguntado el 03 de mayo de 12 a las 19:05

2 Respuestas

En realidad quieres establecer ff-other-file-alist (y posiblemente también ff-search-directories). Estas variables son automáticamente locales del búfer, por lo que puede configurarlas de forma segura en un gancho de modo.

cc-other-file-alist es una asignación preconfigurada para archivos C/C++ que es solo el valor predeterminado para ff-other-file-alist.

Para manejar el mapeo inverso de la prueba a la implementación, agregaría una segunda entrada, por lo que la lista se vería así:

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

El mapeo inverso debe ir primero en este caso, ya que las reglas se procesan en orden y .py coincide con ambos nombres de archivo. Si fueran al revés, todavía irías de foo_test.py a foo_test_test.py, y así...

Consulte esta pregunta relacionada para obtener más información y un ejemplo:

Si abro el archivo doc.foo, quiero que emacs busque y abra el archivo doc.bar en la misma carpeta

Para tu caso, podrías usar:

(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")))))

contestado el 23 de mayo de 17 a las 13:05

Debe crear una regla .emacs configurando cc-other-file-alist, por ejemplo:

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

contestado el 03 de mayo de 12 a las 21:05

Esto funciona para traducir foo.py a foo_test.py, pero traduce foo_test.py a foo_test_test.py. Desafortunadamente, no parece que pueda encontrar mucha documentación sobre nada de esto. - Jason Baker

Mira los comentarios en find-file.el - thebjorn

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.