2009-03-21 8 views
16

Niedawno przełączyłem się na emacs do edycji kodu, który w większości działa dobrze.Emacs, Objective-C i autouzupełnianie

Jednak dla Objective-C znajdę się brakujących funkcji autouzupełniania Xcode jako mam problemy z zapamiętaniem długie nazwy funkcji, takich jak

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

Czy istnieje sposób, aby uzyskać Xcode stylu autouzupełnianie w emacs?

Czy są jakieś dobre pakiety, które pomogą w Cocoa lub Objective-C w ogóle, że powinienem mieć?

+0

Chciałbym zauważyć, że możesz używać skrótów klawiszowych Emacsa w Xcode, dzięki czemu uzyskasz niektóre z zalet Emacs w Xcode. – TechZen

+0

Użyczanie kakao, ponieważ jest dużo bardziej istotne dla Celu-C, a ponieważ "autouzupełnianie kakao" jest czymś zupełnie innym. – paulmelnikow

Odpowiedz

3

Nie użyłem XCode, ale emacs ma kilka trybów autouzupełniania.

Patrz:

  • wybudowany w dabbrev-expand (M-/uruchamia polecenie dabbrev rozwinąć której "Autouzupełnianie" tekst napisany częściowo)
  • AutoComplete
  • HippieExpand

także cedet dla czegoś bardziej wyrafinowanego - ale nie sądzę, że działa z celem-c niestety.

+1

Dzięki, nie jestem pewien, czy którekolwiek z nich będzie działać wystarczająco dobrze (nie wygląda na to, że jakikolwiek kontekst jest wystarczająco czuły), myślę, że mogę po prostu trzymać się XCode dla Objective-C. – cobbal

5

Nieco buggy i hacky, ale bardzo miłe rozwiązanie jest clang-completion-mode.el znaleźć w clang svn.

9

Napisałem scenariusz do eksportu definicji funkcji w Cocoa SDK jako fragmenty yasnippet: http://github.com/zegal/yasobjc

Z pomocą z Etags i autouzupełniania, doświadczenie ukończenie jest bardzo blisko do XCode. Możesz spróbować.

+2

Bardzo sprytny i bardzo przydatny, uwielbiam to! Dzięki zegal – julien

+1

Dobra robota! Zastanawiam się jednak, czy można to powiązać z semantycznym? Jeśli znam nazwę komunikatu, yasnippet + yasobjc są odpowiednie do ukończenia, ale co jeśli najpierw muszę znaleźć prawidłową wiadomość? Semantyk może określić typ obiektu, o którym mowa, i przedstawić prawidłowe wiadomości z fragmentów kodu. – Arne

+0

@Arne, Obawiam się, że obecnie semantyczne nie obsługuje obiektu-c .... – zegal

1

Edytuj plik auto-complete.el (poszukaj go w folderze z zainstalowanym „autouzupełnianie” pakiet, oczywiście):

Goto linia 165, gwarantuję wiesz czego się już zrobić. :)

+2

Wolę zmienną "M-x" 'RET' ac-mode' RET'. Albo jeszcze lepiej w tobie .emacs dodaj '(setq ac-mode (cons 'objc-mode ac-mode))' – mathk