[Windows][Haskell][emacs]windows環境でのghc-mod設定方法

windows環境でのemacsに対してhaskell-modeとghc-modを適用する方法について。Windows環境だと意外とめんどくさかった。

説明中にある「XXXX」は任意のユーザ名に変換する必要あり。

前提条件

手順

1.「ghc-mod」のインストール

cabal install ghc-mod
cd "C:\Users\XXXX\AppData\Roaming\cabal\ghc-mod-1.11.0"
make

2.「config.ini」の設定
gnupackのPATHにWindowsのパスを通す。*1
これを行わないと、ghc-modの呼び出しが失敗する。

gnupackのディレクトリ直下にある「config.ini」を編集する。

         ↓「%PATH%;」を追加
PATH           = %PATH%;%EMACS_DIR%\bin;%INST_DIR%\app\vim;%INST_DIR%\app\script
PATH           = %PATH%;%INST_DIR%\app\mingw\tdm\bin;%_local_%\bin;%CYGWIN_DIR%\bin
PATH           = %PATH%;%windir%\system32;%windir%;%windir%\system32\Wbem

3.「haskell-mode」のインストール
https://github.com/haskell/haskell-mode からhaskell-modeをダウンロードし、「~/.emacs.d」以下に配置する。

4.「emacs.el」の設定
emacs.elに下記内容を追記する。

;; haskell-mode
(load "~/.emacs.d/haskell-mode/haskell-site-file")
(add-hook 'haskell-mode-hook 'turn-on-haskell-doc-mode)
(add-hook 'haskell-mode-hook 'turn-on-haskell-indent)
(add-hook 'haskell-mode-hook 'font-lock-mode)
(add-hook 'haskell-mode-hook 'turn-on-haskell-ghci)

;; ghc-mod
(add-to-list 'exec-path (concat (getenv "HOME") "c:/Users/XXXX/AppData/Roaming/cabal/bin/"))
(add-to-list 'load-path "c:/Users/XXXX/AppData/Roaming/cabal/ghc-mod-1.11.0")
(autoload 'ghc-init "ghc" nil t)
(add-hook 'haskell-mode-hook (lambda () (ghc-init) (flymake-mode)))

結果

こんな感じでちゃんと動く

*1:手抜きしないで、まじめにやる場合はHaskell Platformとかのパスを通す。