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

2071
dehmann

Gibt es eine Emacs-Funktion, die zwischen .cppund .hppDateien umschaltet, die sich nicht in denselben Verzeichnissen befinden?

Ich weiß, dass es toggle-source.el gibt, aber es behandelt anscheinend nicht den Fall, wo .cppund .hppin verschiedenen Verzeichnissen liegen. Meine Verzeichnisstruktur sieht jedoch so aus:

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

Es sollte nicht zwischen wechseln schwer zu src/foo.cppund include/foo.hppaber ich Lisp nicht sprechen.

4

2 Antworten auf die Frage

2
Brad Payne

Schauen Sie sich ff-find-other-file in find-file.el an . Wenn sich die .h- und die .cpp-Datei im selben Verzeichnis befinden, funktioniert dies einfach, aber Sie sollten es in der Lage sein, sie an verschiedenen Speicherorten zu verwenden, indem Sie den Wert von ff-search-directory ändern .

Ich habe dies mit der Art der Verzeichnisstruktur getestet, die Sie erwähnt haben, und _ff-find-other-file_ hat die entsprechenden Dateien erfolgreich gefunden. Sie sollten diese Funktion einfach nutzen können, ohne etwas anpassen zu müssen. Wenn Sie eine kompliziertere Verzeichnisstruktur haben, können Sie _cc-search-Directories_ ändern. _ff-search-Directories_ erhält seinen Inhalt standardmäßig aus _cc-Search-Directories_. Brad Payne vor 13 Jahren 0
Es funktionierte nicht ohne Anpassung für mich. Ich musste `cc-search-verzeichnisse 'ändern, aber es funktioniert super! dehmann vor 13 Jahren 0
2
silversby

Danke für den Hinweis Brad! Falls mehr Leute diese Frage finden, gibt es eine Möglichkeit, die für mich funktioniert (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)