Wie kann ich zwischen .cpp und .hpp wechseln, die sich nicht im selben Verzeichnis befinden?


4

Gibt es eine Emacs-Funktion, die zwischen umschaltet .cpp und .hpp Dateien, die sich nicht in denselben Verzeichnissen befinden?

Ich weiß, dass es gibt toggle-source.el , aber es geht offenbar nicht um den Fall wo .cpp und .hpp sind in verschiedenen Verzeichnissen. Aber meine Verzeichnisstruktur sieht so aus:

project1/src/foo.cpp
project1/include/foo.hpp
project2/src/bar.cpp
project2/include/bar.hpp

Es sollte nicht schwer sein, zwischen ihnen zu wechseln src/foo.cpp und include/foo.hpp aber ich spreche kein Lisp.

Antworten:


2

Schauen Sie sich an ff-find-other-file , im find-file.el . Wenn sich die .h- und .cpp-Dateien im selben Verzeichnis befinden, funktioniert dies nur. Sie sollten es jedoch an verschiedenen Orten verwenden können, indem Sie den Wert von ändern ff-search-directorys .


Ich habe dies mit der Art der Verzeichnisstruktur getestet, die Sie erwähnt haben, und ff-find-other-file fand die entsprechenden Dateien erfolgreich. Sie sollten in der Lage sein, diese Funktion zu verwenden, ohne etwas anpassen zu müssen. Wenn Sie eine kompliziertere Verzeichnisstruktur haben, cc-search-directorys kann geändert werden; ff-search-directorys erhält seinen Inhalt von cc-search-directorys standardmäßig.
Brad Payne

Ohne Anpassung hat es bei mir nicht geklappt; Ich musste modifizieren cc-search-directories, aber es funktioniert super!
dehmann

2

Danke für den Hinweis Brad! Falls mehr Leute diese Frage finden, ist hier ein Weg, der für mich funktioniert hat (in emacs-23.2.1):

(setq cc-other-file-alist
      '(("\\.c"   (".h"))
       ("\\.cpp"   (".h"))
       ("\\.h"   (".c"".cpp"))))

(setq ff-search-directories
      '("." "../src" "../include"))

;;; Bind the toggle function to a global key
(global-set-key "\M-t" 'ff-find-other-file)
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.