Emacs Einrückung Schwierigkeit

8

Ich versuche wirklich, auf Emacs umzusteigen, aber es ist ein wahrer Schmerz, die Umgebung einzurichten. Jeder sagt, es ist es wert, also fahre ich einfach fort.

Ich möchte, dass mein c-Code so implementiert wird:

%Vor%

Je nach dem aktuellen Standard (ich weiß, bekomme mich nicht gestartet), könnte sein:

%Vor%

Ich kann nicht scheinen, die Einrückungsgröße von 2 zu ändern, es sieht immer wie der GNU-Standard aus:

%Vor%

, was ich nicht mag. Hier ist, was ich in meine .emacs eingefügt habe:

%Vor%

Das hat nicht geholfen, ich habe immer noch den GNU-Einzug. Jeder?

--- BEARBEITEN, UM MEINE VOLLSTÄNDIGEN .emacs (eigentlich ~ / .emacs.d / init.el)

hinzuzufügen %Vor%     
Gauthier 17.03.2010, 11:59
quelle

3 Antworten

3

Ihre Standardeinstellungen werden möglicherweise durch die Stilfunktion von cc-mode überschrieben.

Versuchen Sie, den Standard-Stil folgendermaßen zu initialisieren:

(setq c-default-style '((java-mode . "java") (awk-mode . "awk") (other . "user")))

Sie sollten die vorherige Zeile in Ihre .emacs-Datei einfügen oder die Variable c-default-style anpassen können. Der Standardwert ist (other "gnu") als letztes Element der Liste, was bedeutet, dass alle nicht-Java und nicht-awk Dateien den gnu Stil erhalten, anstatt wie bei setq . Der spezielle user Stil wird von Ihren manuell gesetzten Stilvariablen initialisiert.

Eine weitere Option besteht darin, einen der integrierten Stile auszuwählen, anstatt ihn selbst zu definieren oder einen eigenen Stil mit der Funktion c-add-style zu erstellen. Ändern Sie dazu "user" im obigen Befehl in den Namen des Styles (als String). Probieren Sie die integrierten Stile stroustrup oder python aus, um if-Anweisungen wie gewünscht zu formatieren.

    
Doug 17.03.2010, 12:19
quelle
6

Das EmacsWiki hat einen schönen Artikel über IndentingC .

Tatsächlich hat EmacsWiki nette Artikel über alles. Ich würde Emacs nicht lernen wollen, bevor es existiert.

    
Steven Huwig 17.03.2010 12:34
quelle
6

Das Einrücken in den Emacs-cc-Modus wird durch eine Reihe von Offsets bestimmt, von denen jeder entsprechend einem Namen festgelegt werden kann, der an den Offset angehängt ist.

Das nach einer if-Anweisung offene lockige Element hat einen Offset mit einem Namen. Wenn Sie den Offset-Wert ändern, wird das Open-Curly-Objekt anders eingerückt. Entsprechend hat open-curly nach einer Funktionsdeklaration einen benannten Offset. Linienfortsetzungen in einem Makro haben einen benannten Offset. Fallbezeichnungen in einer switch-Anweisung, while-Schleifen. Sie haben alle einen Ausgleich. Es gibt eine Zillion von em, die alle in einer Variablen namens c-offsets-alist gespeichert sind.

Die an anderen Stellen erwähnten Stile bieten einen "Basisoffset", normalerweise 2, 4 oder 8 Leerzeichen, und dann einen Wert für c-offsets-alist . Jeder Stil hat auch einen Namen, und Sie können benutzerdefinierte Stile aus anderen Stilen ableiten. So:

%Vor%

Der Wert für jeden benannten Offset in c-offsets-alist ist einer der folgenden Werte:

  • 0 impliziert, behält den Einzug wie die vorherige Zeile bei
  • + impliziert, erhöht den Einzug, eine zusätzliche Ebene
  • - impliziert, verringert den Einzug, eine zusätzliche Ebene

Sie können auch ++, - usw. verwenden. Stellen Sie so etwas ein, um einen Stil in Ihrer .emacs-Datei zu definieren. Um diesen Stil dann beim Bearbeiten von C-Dateien automatisch zu verwenden, verwenden Sie c-set=style in einem c-mode-Hook wie folgt:

%Vor%

Die nächste Frage ist, wie ermittelt man, welche der genannten c-offsets Sie für eine bestimmte Situation einstellen müssen? Dafür gibt es eine App. ok, keine App, aber eine elisp-Funktion.

  

M-x c-set-offset
      Zeigt an, wo sich emacs syntaktisch in einer Quelldatei im cc-Modus befindet. Um es zu benutzen,       Setzen Sie den Cursor an die Stelle, an der Sie den Offset-Namen lernen möchten, oder ändern Sie den Offset. Rufen Sie dann diese Funktion auf. Es wird Ihnen den Namen des Offsets für das aktuelle syntaktische Element mitteilen.
      Wenn Sie den Wert dieses benannten Elements in Ihrem c-offsets-Alist für den von Ihnen gewählten Stil ändern, was normalerweise in .emacs oder Ihrem Äquivalent geschieht, dann den Einzug       Die Einstellung gilt für alle Quellmodule.

alt text http://i44.tinypic.com/262nlup.jpg

    
Cheeso 17.03.2010 13:23
quelle

Tags und Links