Wie kann man Emacs zwingen, den Einzug zurückzusetzen?

648
towi

Ich möchte, dass Emacs die Einrückungsebene an einer bestimmten Stelle in einer Datei automatisch auf 0 zurücksetzt.

Zum Beispiel: Da ich geschachtelte-geschachtelte-..- Namespaces habe, möchte ich in den C ++ - Dateien nicht den gesamten Körper innerhalb der Namespaces einrücken.

#include <vector>  namespace qw { namespace impl {  using std::vector;  class index_impl { vector<string> entries; public: void add(const string &normalized, const string& original); string getBestMatch(const string& normalized) const; };  } // namespace impl_multimap } // namespace qw 

Dies ist natürlich nur in diesen Fällen nützlich, wenn hauptsächlich eine Klasse in den verschachtelten Namespaces implementiert wird. In Header-Dateien wäre dies verwirrend. Ich denke, die beste Lösung wäre, einen besonderen Kommentar oder etwas zu haben.

#include <vector>  namespace qw { namespace impl { // -*- indent: 0 -*-  using std::vector; ... 

Alle anderen Ideen wären auch in Ordnung.

0

1 Antwort auf die Frage

0
Animesh Patra

Ursprüngliche Quelle .

Bitte fügen Sie diese Zeile in Ihre Emacs-Datei ein:

(c-set-offset 'substatement-open 0) 

Detailmethode:

  1. Gehen Sie zu der Zeile, die Sie einrücken möchten

  2. Bitte geben Sie CC CO (nicht null) ein und drücken Sie die Eingabetaste

  3. Geben Sie "0" ein und drücken Sie die Eingabetaste, um keinen zusätzlichen Einzug zu erhalten

  4. Bitte geben Sie Tab ein, um die Zeile erneut zu markieren

  5. Zukünftige "{" hat die richtige Tabulatoreinstellung, bis Sie emacs neu starten.

Zusätzlich können Sie dies in Ihre Emacs-Datei einfügen:

(c-set-offset 'SYNTACTIC-SYMBOL OFFSET) 

um den Lisp-Code zu sehen.

Erfahren C ++ Quelle außerhalb von Emacs zu formatieren hier .

Dadurch wird die Einrückung immer auf 0 gesetzt, oder? Das brauche ich nicht. Ich denke eher an ein manuelles Tweaking in seltenen Fällen. * astyle * könnte helfen, ja, aber ich möchte in emacs bleiben. towi vor 8 Jahren 0