jde-mode でのインデントスタイル
どうもです。
何? javaでのインデントスタイルの慣習みたいなんがあるの?
public class foo { public Foo() { } public void main(String[] args) { try { System.out.println("Hi, there."); } catch (Exception e) { e.printStackTrace(); } } }
今までは,↑みたいに書いていたんですが,どうやら,有名な本とかを見るに,
public class Foo { public Foo() { } public void main(String[] args) { try { System.out.println("Hi, there."); } catch (Exception e) { e.printStackTrace(); } } }
って書くのがよろしいとの判断を下しました,ワタシが。
そこで,何も考えずに,書き方を変えたら,
public Foo()
{
}
って,インデントされた。あうあうあー?
関係していそうな,設定は以下。
(defun my-jde-mode-hook-func () (interactive) (c-set-style "stroustrup") (setq c-basic-offset 2) (setq tab-width 2) (setq indent-tabs-mode nil) ;; ... )
で,ググったりヘルプ見たりした結果,以下のようにすることで解決。
(defun my-jde-mode-hook-func () (interactive) (c-set-style "stroustrup") (setq c-basic-offset 2) (c-set-offset 'inline-open 0) ;; <--- これを追加。 (setq tab-width 2) (setq indent-tabs-mode nil) ;; ... )
道程
C-cC-s で,対象となるsyntactic-symbolを見つけることができる。
もしくは,C-cC-o を使うと,インタラクティブに変更することができます。
で,調べると,inline-open というシンボルらしい。
そして,その値は,「+」になっていた。
なので,こいつを「0」にしたらいいんじゃね?
と,これが罠だったらあっさりはまる感じの発想で変更しました。
結果,目標達成です!
で,この設定を.emacsに書いときましょっというわけで,上記のようになるわけです。
c-set-offset 関数は,色んなシンボルを変更できるので便利そうですね。
オレオレ色に染めたいときにはとても重宝しそうですね。
まとめ
(c-set-offset 'inline-open 0)