2010-12-14 9 views
1

私の会社は最近いくつかの新しいコードスタイリングルールを追加しました。emacsを使って正規表現の代わりにいくつかのものを変更する簡単な方法があるのだろうかと思います。IfステートメントのスタイルをEmacsで変更しますか?

文は次のようになりする必要がある場合:

私はそうのようになり、多くの持っている
if (expression) { 

:スペースを欠く

if(expression){ 

を。これを簡単に修正する方法はありますか?

+0

なぜ、Emacsではなく、sedと言うのですか? – Thomas

+2

あなたが必要とする量に応じてクリーンアップするには、astyle(http://astyle.sourceforge.net/astyle.html)や書式を標準化するために特別に設計された別の書式設定ツールを試してみてください。 –

答えて

2

あなたはexpressionが1行に常にある場合は正規表現それを交換することができるかもしれないが、私は念のために使い捨ての機能を使用したい:

(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

それは絶対確実ではありませんが、主に動作します。単に 'query-replace-regexp'を使うことも考えられます。 –

+0

はい、どの種類のコードが書き込まれたかによって異なります。考えてみましょう: 'if(something_is_true()){something_else(); } '(これは一行にあるはずです)regexpsは括弧を数えられないので、どうすればそれを得ることができますか?それは病理学的だと認めていますが、そのために私は関数を使用します。 – scottfrazer

1

ちょうど私の2セント、私はあればおそらく正規表現を避けて、2つの部分に分けてアプローチするでしょう。最初に、を入力して検索を行い、if (にMeta-% "if(" "if(")を入力すると、入力されたテキストには引用符は含まれません。クエリを実行するか、すべての置換を実行するように「!」を付けます。閉じるのプロセスを繰り返します。){から) {

最初の置換が問題なく機能することが期待されます。 2つ目はループ内でも "){"の組み合わせが得られますが、もしあなたの新しい標準がif文のためのスペースを必要とするならば、ループのためにそれを行うことを期待しています。

関連する問題