2009-03-21 28 views
16

Gần đây tôi chuyển sang emacs để chỉnh sửa mã của tôi, và nó chủ yếu hoạt động tốt.Emacs, Objective-C, và tự động hoàn thành

Tuy nhiên, đối với Objective-C tôi thấy mình thiếu tính năng tự động hoàn Xcode của như tôi gặp khó khăn khi ghi nhớ các tên hàm dài như

- (id)initWithContentRect:(NSRect)contentRect styleMask:(NSUInteger)windowStyle backing:(NSBackingStoreType)bufferingType defer:(BOOL)deferCreation screen:(NSScreen *)screen; 

Có cách nào để có được autocompletion Xcode-style trên emacs?

Ngoài ra, có bất kỳ gói nào tốt để trợ giúp với Cocoa hoặc Objective-C nói chung mà tôi nên có?

+0

Tôi xin lưu ý rằng bạn có thể sử dụng các khóa liên kết Emacs trong Xcode để bạn có được một số ưu điểm của Emacs trong Xcode. – TechZen

+0

Gắn thẻ cacao, vì nó có liên quan nhiều hơn đến Objective-C và vì "Tự động hoàn thành ca cao" là một điều hoàn toàn khác. – paulmelnikow

Trả lời

3

Tôi chưa sử dụng XCode, nhưng emacs đi kèm với một số chế độ tự động hoàn tất.

Xem:

  • xây dựng trong dabbrev-mở rộng (M/chạy lệnh dabbrev-mở rộng mà "tự động hoàn thành" văn bản viết một phần)
  • AutoComplete
  • HippieExpand

Cũng cedet cho một cái gì đó tinh vi hơn - nhưng tôi không nghĩ rằng nó hoạt động với mục tiêu-c không may.

+1

Cảm ơn, tôi không chắc chắn bất kỳ trong số này sẽ làm việc tốt, mặc dù (không giống như bất kỳ bối cảnh đủ nhạy cảm), tôi nghĩ rằng tôi chỉ có thể dính vào XCode cho mục tiêu-C. – cobbal

5

Một điều khá buggy và hacky, nhưng giải pháp rất đẹp được tìm thấy trong các clang-completion-mode.elclang svn.

9

Tôi đã viết một kịch bản để xuất khẩu các định nghĩa hàm trong Cocoa SDK như đoạn yasnippet: http://github.com/zegal/yasobjc

Với sự giúp đỡ với ETags và tự động hoàn tất, những trải nghiệm hoàn là rất gần với XCode. Bạn có thể thử.

+2

Rất thông minh và siêu hữu ích, tôi thích nó! Cảm ơn zegal – julien

+1

Rất tuyệt! Tuy nhiên, tôi tự hỏi nếu nó có thể gắn điều này vào ngữ nghĩa? Nếu tôi biết tên tin nhắn, yasnippet + yasobjc là tốt để hoàn thành, nhưng nếu tôi cần tìm thông điệp chính xác trước thì sao? Ngữ nghĩa có thể xác định loại đối tượng được đề cập và hiển thị các thông báo hợp lệ từ các đoạn mã. – Arne

+0

@Arne, tôi sợ rằng ngữ nghĩa hiện tại không hỗ trợ mục tiêu-c .... – zegal

1

Chỉnh sửa các tập tin auto-complete.el (tìm nó trong thư mục mà bạn cài đặt "tự động hoàn tất" gói, tất nhiên):

Chuyển đến dòng 165, chắc hẳn bạn biết phải làm gì rồi. :)

+2

Tôi thích 'M-x' tùy biến biến' RET' chế độ ac 'RET'. Hoặc thậm chí tốt hơn trong bạn .emacs thêm '(setq ac-mode (cons 'objc-mode ac-mode))' – mathk

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