おんがえしの blog

作ったプログラムと調べた技術情報

[Emacs][C#] C#ですらEmacsで書きたい人のcsharp-mode

C#のソフトを作る時、もちろんVisualStudioも使うんだけど、特にGUIを使わない部分だと使い慣れたEmacsの方がメリットが多いので、csharp-modeを試してみた。

EmacsWiki: CSharp Mode

ほとんどの部分で問題は無いんだけど、一部のインデントがバグってるのが嫌だなー、と思って調べてたら。こんなのが。

EmacsWiki: CSharp Mode - Incorrect indentation

  • (誰か) インデントが変じゃない?
  • (csharp-mode作者) 別に?ただのちょっと変わったインデントでしょ? c-set-offset 関数で好きなように設定したら?

C#なんだからある程度VS標準のインデントに合わせた方がいいんじゃね?って思いつつ、
ってことで c-set-offset でインデントを調整してみた。

gist: 775778 - csharp-modeのインデントをVisualStudioに近づける設定- GitHub

;;--------------------------------------------------------------------------
;; csharp-mode
;; (install-elisp-from-emacswiki "csharp-mode.el")
;;--------------------------------------------------------------------------
(require 'csharp-mode)

;; Cモード共通フック
(add-hook 'csharp-mode-hook
          '(lambda()
             (setq comment-column 40)
             (setq c-basic-offset 4)
             (font-lock-add-magic-number)
             ;; オフセットの調整
             (c-set-offset 'substatement-open 0)
             (c-set-offset 'case-label '+)
             (c-set-offset 'arglist-intro '+)
             (c-set-offset 'arglist-close 0)
             )
          )

VisualStudioでの見た目に大分近づけたはず。変な所があったらコメントかTwitterでご指摘お願いします。

※ 始めて使ったけど、c-set-offset って便利!!