2011-01-24 3 views
2

indent styleについて読んでいるので、現在のインデントスタイルをBanner StyleからAllman Styleに変更する必要があります。私はインデントスタイルをc-set-styleとbsdを使って変更しました。しかし、今ではどのように新しいインデントスタイルを適用しますか?Emacsでは、既存のコードにどのように新しいインデントスタイルを適用できますか?

つまり、emacsは自分のコードを再フォーマットして、この新しいコードを適用できますか? このsytleをjavaのデフォルトスタイルにするには、どうすればemacsを設定できますか?

ありがとうございます。

+0

emacsにはセマンティックパッケージがあります。私はそれがコーディングに大いに役立つと思う。 – swdev

答えて

1

インデント領域を使用してインデント設定を適用できます。バッファ全体を再インデントしたい場合は、インデント領域(C-M- \)に続けてmark-whole-buffer(C-x h)を実行する必要があります。

EDIT:

あなたは自動的にあなたが引用スタイルのように、自分の行に括弧を移動したい場合は、あなたにもいくつかの正規表現置換を行う必要があるでしょう。

(query-replace-regexp "^\\([^{}\n]+[^{} \t\n]+[^{}\n]*\\)\\([{}]\\)$" "\\1\n\\2")  

これは、行の最後の文字である任意の{または}文字を取り、それをそれ自身の行に配置します。行の最初の文字である{}文字はすべて無視されます。あなたがこれに従う必要があります。

(query-replace-regexp "^\\(\\s *[{}]\\)\\(.+\\)$" "\\1\n\\2") 

これは彼らの行の最初であり、他の文字が続いている任意の{}の文字を取り、ブレースおよびその他の文字の間に改行を挿入します。

これに続いて、mark-whole-bufferとindent-regionの私の元の提案は字下げを修正すべきです。

EDIT 2:先頭の空白を考慮して最初の正規表現を修正しました

+0

それは起こらなかった。関数定義用の中括弧は次の行に表示できません(BSDスタイルのように) – swdev

+0

ああ、いいえ、申し訳ありません。私はemacsインデントコマンドが実際のインデント以外のもの、つまり各行の先頭の空白を変更するとは思わない。 1つの行から次の行にカッコを移動するために、いくつかの創造的な正規表現の置換を使用する必要があります。次に、実際のインデントを整えるためにmark-whole-bufferとindent-regionを使用します。 – Tyler

+0

はい、私はそれを試しました。しかし、私はemacsでそれをすることはできないと思う。コードの美化のいくつかの並べ替えはそれを行う必要があります:) – swdev

関連する問題