ghc-mod not found が出たの場合の対応

ghc-mod not foundがよく出てくるのでいい加減書いておく。ghc-mod not found はPATH設定してないのがゲンインらしい。

対処方法

もしghc-modをインストールしていない場合は

$ cabal install ghc-mod

でインストールしておく。

LinuxWindowsの場合の設定の仕方があるとPATHの設定を書き分けれるから便利なのでinit.elなどに書いておく。

;; Linuxの判別
(defvar run-linux
  (equal system-type 'gnu/linux))

;; Windowsの判定
(defvar run-nt (equal system-type 'windows-nt))
(defvar run-cygwin (eq system-type 'cygwin))
(defvar run-ms-dos (equal system-type 'ms-dos))
(defvar run-meadow (featurep 'meadow))
(defvar run-windows
  (or run-nt run-cygwin run-ms-dos run-meadow))

次のPATHの設定をする。LinuxWindowsそれぞれこの場所にcabalの実行パスがある。Windowscygwinやmsysgitなどで

$ type cabal

をすればどこにパスがあるかがわかる。パスがこの記事と違っている場合はそのパスに書き換えてください。

;;Linuxの場合のPATHの設定
(when run-linux
  (add-to-list 'exec-path "~/.cabal/bin"))

;;Windowsの場合のPATHの設定
(when run-windows
    (add-to-list 'exec-path (concat "C:/Users/" user-login-name "/AppData/Roaming/cabal/bin")))

(autoload 'ghc-init "ghc" nil t)
(add-hook 'haskell-mode-hook (lambda () (ghc-init)))

これでghc-modが見つかるはず。

どうもLinuxWindowsを行ったり来たりが大変だなぁと思う。でもブログのネタにはなるかなと。

追記 2015/06/08

add-hookにflymakeの設定はいらなかったので削除しました。