2010-12-14 7 views
1

Meine Firma hat vor kurzem einige neue Code-Styling-Regeln hinzugefügt, und ich würde mich fragen, ob es einen einfachen Weg über Emacs gibt, um ein paar Dinge mit einem Regex-Ersatz zu ändern.Ändern Sie das Styling von If-Anweisungen in Emacs?

wenn Aussagen müssen nun wie folgt aussehen:

if (expression) { 

, wo ich viele haben, die so aussehen:

if(expression){ 

die Räume fehlen. Gibt es eine einfache Möglichkeit, das zu beheben?

+0

Warum Emacs und nicht, sagen wir, sed? – Thomas

+2

Je nachdem, wie viel Sie brauchen t o Aufräumen, können Sie versuchen Astyle (http://astyle.sourceforge.net/astyle.html) oder ein anderes Formatierungstool, das speziell zur Standardisierung der Formatierung entwickelt wurde. –

Antwort

2

Sie könnten in der Lage sein, regexp, sie zu ersetzen, wenn expression immer auf einer Linie ist, aber ich würde eine Wegwerf-Funktion verwenden, nur um sicher zu sein:

(defun my-fix-style() 
    (interactive) 
    (save-excursion 
    (goto-char (point-min)) 
    (while (re-search-forward "\\_<if(" nil t) 
     (backward-char) 
     (insert " ") 
     (forward-sexp) 
     (unless (looking-at "[ \t\n]") 
     (insert " "))))) 
+0

Es ist nicht idiotensicher, aber es wird meistens funktionieren. Sie können auch nur 'query-replace-regexp' verwenden. –

+0

Ja, es hängt davon ab, welche Art von Code geschrieben wurde. Betrachte: 'if (something_is_true()) {something_else(); } '(Das soll in einer einzigen Zeile sein) Da Regexps die Parens nicht zählen können, wie kommst du dazu? Zugegeben, es ist pathologisch, aber deshalb würde ich eine Funktion verwenden. – scottfrazer

1

Nur meine zwei Cents, aber wenn ich Ich würde das mit Emacs machen, ich würde wahrscheinlich reguläre Ausdrücke vermeiden und es in zwei Teilen angehen. Zuerst würde ich die Suche nach if( mit if ( tun, indem Sie eine Meta-% "if (" "if (") Die Anführungszeichen sind nur für die Abgrenzung, sie gehören nicht in den eingegebenen Text. Dann entweder beantworten jeden einzelnen Ersatz Frage, oder geben Sie ein "!", um es zu sagen, alle Ersetzungen zu tun. Wiederholen Sie den Prozess für die Schließung ){

Von meinem Kopf, würde ich erwarten, dass die erste Substitution ohne Problem funktioniert. Die zweite wird auch ") {" Kombinationen in Schleifen erhalten, aber wenn Ihr neuer Standard einen Platz für if-Anweisungen benötigt, würde ich erwarten, dass dies auch für Schleifen geschieht, so dass es scheint, als sollte es eine gute Sache sein.

Verwandte Themen