2010-10-20 28 views
8

Tôi đã thiết lập emacs 23.1.50.1 với CEDET 1.0 và ECB 2.40 (lấy cảm hứng từ Alex Otts thiết lập tại http://github.com/alexott/emacs-configs/blob/master/rc/emacs-rc-cedet.el và giới thiệu nhẹ nhàng của mình để Cedet (http://alexott.net/en/writings/emacs-devenv/EmacsCedet.html), cảm ơn Alex). Nó hoạt động khá tốt, nhưng tôi cần hiểu thêm về cách hoàn thành mã và tham chiếu ký hiệu được xử lý khi làm việc với nhiều dự án.Emacs/CEDET. Nhiều dự án và hoàn thành mã

tôi tạo ra một dự án Êđê đơn giản thế này:

(ede-cpp-root-project "test" 
         :file "~/src/sw/anchor" 
         :include-path '("/Common") 
         :system-include-path '("~/include")) 

Khi Dự án này được nạp, sẽ Semantic chỉ tìm kiếm sự hoàn tất trong các thư mục khác nhau được quy định trong cấu hình dự án?

Tôi đã theo dõi http://mmmyddd.freeshell.net/blog/Computer/Emacs/usecscopesemanticdbbackend để sử dụng cscope làm phụ trợ cho semanticdb. Tôi có thể chạy semanticdb-enable-cscope-in-buffer mà không emacs ném bất kỳ lỗi nào, nhưng tôi không có ý tưởng nếu ngữ nghĩa sử dụng cơ sở dữ liệu của tôi. Tôi có thể thêm một tham chiếu đến một cscope.out trong định nghĩa dự án của tôi nữa không, để có quyền kiểm soát nhiều hơn đối với các tệp nào để tìm kiếm các tham chiếu trong ngữ cảnh hiện tại của tôi?

Một vài oddities:

Khi tôi cố gắng để mở một tập tin mã nguồn mới, tôi nhận được lỗi "áp dụng: Tìm kiếm các chương trình: không có tập tin hoặc thư mục như vậy, toàn cầu" và không có gì xảy ra. Nếu tôi cố gắng mở nó một lần nữa, mọi thứ đều ổn.

Khi tôi cố gắng tải một dự án bằng cách chỉ vào tập tin neo, tôi nhận được lỗi này: "nếu: Kiểu lập luận sai: đẳng cấp p, Êđê-cpp-root"

+0

Đối với lỗi "áp dụng: Tìm kiếm chương trình: không có tệp hoặc thư mục" toàn cầu ", bạn đã sao chép phần thiết lập của Alex Ott đã sử dụng" (semanticdb-enable-gnu-global-databases ...) "? – Dingo

+0

Điều đó tôi đã làm, nhưng tôi nghi ngờ tôi không cần nó. Thực tế là nó nói "gnu hỗ trợ toàn cầu", nên đã làm cho nghi ngờ của tôi vấn đề đã có :). Cảm ơn. – anr78

Trả lời

5

Khi bạn nhận được lỗi trong của bạn cấu hình, điều tốt nhất cần làm là:

M-x toggle-debug-on-error RET 

và nhận dấu vết ngăn xếp sẽ trỏ vào khu vực sự cố. Thông thường thời gian hữu ích trong việc xác định vấn đề cấu hình.

CEDET sẽ cố gắng liên kết mọi tệp với một dự án duy nhất và tất cả các lệnh hoạt động trong bộ đệm đó sẽ bị giới hạn trong giới hạn của dự án đó. Đối với sự hỗ trợ CScope, nó cũng sẽ sử dụng EDE để xác định thư mục gốc, và điều đó sẽ giúp tìm tệp cscope.out và có liên quan đến cả công cụ hoàn thành và tham chiếu.

Trường hợp ngoại lệ, tất nhiên, là hệ thống bao gồm đường dẫn thường là/usr/include hoặc bất kỳ thứ gì. Đây là một tăng thêm cho hệ thống mặc định bao gồm đường dẫn được tính toán với sự hỗ trợ GCC. Trong một trong các tệp C của bạn, bạn có thể làm:

M-x semantic-c-describe-environment RET 

và điều đó sẽ hiển thị ngữ nghĩa sẽ cố gắng sử dụng.

Để kiểm tra lại nếu cscope đang được sử dụng để hoàn thành mã, bạn có thể kiểm tra với:

M-x semanticdb-find-test-translate-path RET 

và kiểm tra cuối cùng của danh sách đối với một số điều cscope.

+0

Cảm ơn Eric, cả về câu trả lời và phần mềm. Những lệnh này thực sự rất hữu ích.Hiện tại, ngữ nghĩa-c-mô tả-môi trường không nói gì về cscope, và semanticdb-find-test-dịch-path nói: * # anr78

+0

Phải, cscope hỗ trợ không bận tâm tính toán số lượng thẻ CScope biết, và nó không thực sự là một phần của "dự án" vì nội bộ bị trừu tượng hóa, vì vậy môi trường C không biết về nó. – Eric

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