2012-05-04 39 views
11

Tôi đang sử dụng Emacs 23 và có vấn đề sau đây:Làm thế nào để điều chỉnh đường dẫn mà Emacs biên dịch-goto-lỗi được từ bộ đệm biên dịch?

tôi chạy hệ thống xây dựng của dự án của chúng tôi từ bên trong Emacs như Mx biên dịch -> cd/foo/bar & & ./build

Hệ thống xây dựng bây giờ không một số ma thuật, "cd" s vào một số thư mục con cho quá trình xây dựng và sau đó gcc ném một lỗi:

../src/somesource.cc:50 lỗi: blablabla

Bây giờ vấn đề là Emacs thắng' t tìm đường dẫn đó, vì nó giả định quá trình biên dịch tarted ra trong/foo/bar, và không phải trong/foo/bar/builddir. Vì vậy, "../" hàng đầu không hoạt động đối với Emacs, ví dụ: khi chạy compile-goto-error. Có cách nào để nói với Emacs để thử bỏ qua hàng đầu "../"?

+1

Kỳ lạ, tôi đang chạy vào điều này khi xây dựng * Emacs * ... – SamB

Trả lời

11

Giải pháp tốt nhất có thể là thay đổi hệ thống xây dựng để phát ra thư khi nó thay đổi thư mục. Emacs tìm kiếm

Entering directory `...' 
... 
Leaving directory `...' 

(Xem biến compilation-directory-matcher. Nếu xây dựng hệ thống của bạn không phát ra thông điệp khi nó thay đổi thư mục, nhưng họ không theo định dạng Emacs đang tìm kiếm, bạn có thể thêm regexps mới để compilation-directory-matcher.)

Giải pháp khác là thay đổi compilation-search-path (đây là danh sách các thư mục).

+0

Tôi không biết về chức năng "Đang nhập ..." của Emacs. Điều đó có thể sẽ giúp! – Arne

+1

@Arne, GNU Tạo [in các thông báo ở dạng đó] (http://www.gnu.org/software/make/manual/html_node/_002dw-Option.html) khi sử dụng các tệp makefiles đệ quy. Đó là lý do tại sao Emacs tìm kiếm chúng. – cjm

+1

Giải pháp này có vẻ là những gì tôi đang tìm kiếm, nhưng tôi không thể chỉnh sửa biến 'compilation-directory-matcher' (như bạn có thể thấy ở đây: http://stackoverflow.com/q/21309720/61838). Hơn nữa, 'compilation-search-path' dường như không giải quyết được vấn đề (ngay cả khi tôi chỉ cần các emacs để tìm kiếm các nguồn trong một thư mục). Bất kỳ trợ giúp sẽ được đánh giá cao! – claf

Các vấn đề liên quan