EmacsでC#を書くときに、「csharp-mode」があれば大変便利なのですが、これまで何度となく導入に失敗していました。
最近「.emacs」の見直しをやっていて、さらにEmacsでC#を書く機会があったので、もう一度導入してみました。そしたらうまくできた!というあれです。Mac OS X 10.6.3 での導入メモ。
csharp-mode.el をゲットする
Google Code に「csharpmode」というプロジェクトがあるので、ここのDownloadsからcsharp-mode.elを貰ってきます。最新版は「csharo-mode-0.7.6.el」。
csharp-mode.el を置く
ダウンロードしたmodeファイルを「/usr/share/emacs/site-lisp」に起きました(これは環境依存か...)。
但しファイル名を「csharp-mode-0.7.6.el」から「csharp-mode.el」に変更しておきます。
.emacs を編集
csharp-mode.el をロードするコードを「~/.emacs」に記述します(EmacsWiki: CSharp Modeを参考に)。
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; C# support
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(autoload 'csharp-mode "csharp-mode" "Major mode for editing C# code." t)
(setq auto-mode-alist (cons '("\\.cs$" . csharp-mode) auto-mode-alist))
;; Patterns for finding Microsoft C# compiler error messages:
(require 'compile)
(push '("^\\(.*\\)(\\([0-9]+\\),\\([0-9]+\\)): error" 1 2 3 2) compilation-error-regexp-alist)
(push '("^\\(.*\\)(\\([0-9]+\\),\\([0-9]+\\)): warning" 1 2 3 1) compilation-error-regexp-alist)
;; Patterns for defining blocks to hide/show:
(push '(csharp-mode
"\\(^\\s *#\\s *region\\b\\)\\|{"
"\\(^\\s *#\\s *endregion\\b\\)\\|}"
"/[*/]"
nil
hs-c-like-adjust-block-beginning)
hs-special-modes-alist)これをコピペ。
ちなみに、現在の私の「.emacs」
こういうのあるよ、とか教えていただけると幸いです。
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; load site-lisp directory
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(setq load-path
(append
(list (expand-file-name "/usr/share/emacs/site-lisp")) load-path))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; emphasize current line
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defface hlline-face
'((((class color)
(background dark))
(:background "dark slate gray"))
(((class color)
(background light))
(:background "SkyBlue")) ;; set current line color
(t
()))
"*Face used by hl-line.")
;;(setq hl-line-face 'hlline-face)
(setq hl-line-face 'underline) ;; underline
(global-hl-line-mode)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; line number
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(require 'linum)
(global-linum-mode)
(setq linum-format "%3d ")
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; C# support
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(autoload 'csharp-mode "csharp-mode" "Major mode for editing C# code." t)
(setq auto-mode-alist (cons '("\\.cs$" . csharp-mode) auto-mode-alist))
;; Patterns for finding Microsoft C# compiler error messages:
(require 'compile)
(push '("^\\(.*\\)(\\([0-9]+\\),\\([0-9]+\\)): error" 1 2 3 2) compilation-error-regexp-alist)
(push '("^\\(.*\\)(\\([0-9]+\\),\\([0-9]+\\)): warning" 1 2 3 1) compilation-error-regexp-alist)
;; Patterns for defining blocks to hide/show:
(push '(csharp-mode
"\\(^\\s *#\\s *region\\b\\)\\|{"
"\\(^\\s *#\\s *endregion\\b\\)\\|}"
"/[*/]"
nil
hs-c-like-adjust-block-beginning)
hs-special-modes-alist)
