GNU Emacs: Cambiar fácilmente entre el .c y el .h

emacs

Cómo cambiar rápida y cómodamente entre el fichero de implementación (.c, .cc, .cpp) y el de cabecera (.h, hpp) cuando se trabaja con un proyecto C o C++ (por lo visto también funciona con Ada y VHDL).

Introducción

Seguro que alguno de los que haya usado Eclipse o incluso Anjuta ha visto esa funcionalidad y la ha echado de menos en Emacs, sobre todo cuando los ficheros están en directorios diferentes. Pues Emacs lo soporta y de serie.

Configuración

El comando en cuestión se llama ff-find-other-file. Pon el siguiente código en tu .emacs para asociar la combinación C-c o:

(add-hook 'c-mode-common-hook
    (lambda()
        (local-set-key (kbd "C-c o") 'ff-find-other-file)))

Esto abre el fichero correspondiente en otro buffer, pero si se ejecuta estando sobre una línea #include entonces abre ese fichero en lugar del que corresponda al fichero actual.

Con la configuración por defecto Emacs busca en los directorios definidos en la variable cc-search-directories que incluye el directorio actual y los include del sistema. Pero cuando en un proyecto tienes directorios src e include potencialmente con subdirectorios esto no es suficiente.

Afortunadamente se pueden definir directorios adicionales donde buscar. Añade esto a tu .emacs:

(setq ff-search-directories (quote ("." "../include/*" "../../*")))

Esto suponiendo que en tu proyecto tienes una estructura de directorios del tipo:

proyecto
+- src
   +- include
   +- moduloA
   +- moduloB

Referencias

Comentarios

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de nacho

qué bueno!

Muy útil, sí señor. Estos de Emacs «le dan».

Nacho