Làm cách nào để chuyển đổi giữa .cpp và .hpp không nằm trong cùng một thư mục?


4

Có chức năng Emacs chuyển đổi giữa .cpp.hppcác tệp không nằm trong cùng một thư mục không?

Tôi biết có toggle-source.el , nhưng dường như nó không xử lý trường hợp ở đâu .cpp.hpptrong các thư mục khác nhau. Nhưng cấu trúc thư mục của tôi là như thế này:

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

Không khó để chuyển đổi giữa src/foo.cppinclude/foo.hppnhưng tôi không nói tiếng Lisp.

Câu trả lời:


2

Hãy xem ff-find-other-file , trong find-file.el . Nếu các tệp .h và .cpp nằm trong cùng một thư mục, điều này sẽ chỉ hoạt động, nhưng bạn sẽ có thể sử dụng nó với các vị trí khác nhau bằng cách sửa đổi giá trị của các thư mục ff-search .


Tôi đã thử nghiệm điều này với loại cấu trúc thư mục mà bạn đã đề cập và ff-find-other-file đã tìm thấy các tệp tương ứng thành công. Bạn có thể chỉ cần sử dụng chức năng đó mà không cần tùy chỉnh bất cứ điều gì. Nếu bạn có cấu trúc thư mục phức tạp hơn, cc-search-thư mục có thể được sửa đổi; Theo mặc định ff-search-thư mục lấy nội dung từ thư mục cc-search-thư mục .
Brad Payne

Nó không hoạt động mà không tùy biến cho tôi; Tôi đã phải sửa đổi cc-search-directories, nhưng nó hoạt động rất tốt!
dehmann

2

Cảm ơn vì gợi ý Brad! Trong trường hợp nhiều người tìm thấy câu hỏi này, đây là một cách làm việc cho tôi (trong 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)
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.