Ich fange an, Ziel C zu verwenden, und der Ziel-C-Modus funktioniert einwandfrei. ObjC verwendet jedoch .h-Dateien, genau wie C und C ++. Ich muss in der Lage sein, alle drei zu verwenden. Weiß jemand, wie man Emacs bekommt, um zu sagen, ob es im ObjC-Modus oder im C / C ++ - Modus sein sollte?
EDIT: Es scheint einige Verwirrung darüber zu geben, wonach ich frage. Das Problem besteht darin, dass ich einige .h-Dateien, die mit .m-Dateien verknüpft sind, und einige .h-Dateien, die mit .c-Dateien verknüpft sind, und einige, die mit .cpp-Dateien verknüpft sind, haben. Was ich WANT möchte, kann ich in meinen c-mode-common-hook stecken oder irgendwo, wo geprüft wird, ob es sich um eine objektive C .h-Datei handelt, und dann in den objektiven C-Modus zwingen , oder so. Die Idee ist, dass ich dann einfach eine .h-Datei öffnen kann und sie wird automatisch im richtigen Modus sein.
Offensichtlich kann ich den Modus manuell ändern, wenn ich in der Datei bin, aber das ist ein Schmerz, und ich vergesse oft, bis ich auf den Tab klicke und etwas verrücktes passiert. Dies ist die Lösung, die ich jetzt verwende.
Ich denke, dass der Header-Kommentar wahrscheinlich der richtige Weg ist, um dies zu tun, aber damit es wirklich nützlich ist, muss ich herausfinden, wie ich XCode dazu bringe, den Kommentar dorthin zu schreiben, wenn er die Datei für mich erstellt ...
EDIT2:
Ich verwende derzeit die Header-Kommentar-Lösung. Bis ich herausfinden kann, wie XCode den Kommentar automatisch hinzufügen kann, verwende ich die folgende elisp-Funktion:
%Vor%Sie können einen Kommentar wie diesen in die erste Zeile der Datei schreiben:
%Vor%oder
%Vor%wie angemessen. Weitere Details finden Sie in Dateivariablen angeben im Emacs-Handbuch.
Ok, wie wäre es mit einer Lösung, die keinen speziellen Kommentar in der Datei erfordert?
Sieh dir das an:
%Vor%Dies verwendet das eingebaute Paket von Emacs, um die entsprechenden .h / .cc-Dateien zu finden. Wenn die soeben geöffnete Header-Datei einer Datei im C ++ - Modus entspricht, wird die .h-Datei in diesen Modus versetzt. Wenn es sich bei der Quelle um eine Objc-Modus-Datei handelt, wird der Header in diesen Modus versetzt.
In den Kommentaren sind keine speziellen Emacs-Variablen erforderlich.
Ich würde eproject verwenden, um mir dabei zu helfen. Unter der Annahme, dass ich keine Sprachen in einem bestimmten Projekt mische, kann ich einfach eine .eproject
-Datei im Projektstamm erstellen, die den folgenden Text enthält:
Dann würde ich einen Standardmodus für .h-Dateien einstellen:
%Vor%Fügen Sie dann einen Hook für diesen Modus hinzu:
%Vor% Nun wird der Modus automatisch entsprechend der Einstellung geändert, die Sie in der Datei .eproject
vorgenommen haben. (Beachten Sie, dass die .eproject
-Datei nicht die einzige Möglichkeit ist, Variablen für eproject zu setzen; wenn Sie eine Heuristik haben, um objektive c-Projekte zu erkennen, kann eproject die Variable auch auf diese Weise erhalten.)
Wie auch immer, wenn das für Sie funktioniert, lassen Sie es mich wissen, damit ich es zum eproject Wiki hinzufügen kann.
Tags und Links objective-c emacs