SSブログ

ghcid [Haskell]

Haskellのbuild環境としてstackを利用するようにした.

stackではbuild環境でのツールのバージョン管理を徹底させるために,環境ごとにコマンドやライブラリをインストールして使用するようになってるのだけど,そのためにstackでのbuildの環境とemacsのflymakeの実行環境が異なるためにerrorの出方が違うようになってしまった.

flymakeの設定を直そうかと調べたところ,最近はghcid -- "GHCi as a daemon", "GHC + a bit of an IDE"というものが使われているらしい.

ndmitchell / ghcid

端末で起動しておくと自動でソースの変更を検知して,buildの実行結果を表示するというもの.IDEというよりbuild daemonみたいだけど,やりたいことはflymakeと同じだし,editor非依存のghcidの方がいいかもしれない.

というわけで使ってみた.
% stack install ghcid
でinstallできて
% ghcid --height 16
でbuildが自動実行される.(heightは端末の行数)

はずなんだけど,emacsでファイルを編集すると以下のように言って止まっちゃう.
ghcid: /xx/xx/.#Lib.hs: getFileStatus: does not exist (No such file or directory)

emacsの一時ファイルにアクセスしようとしているところで一時ファイルが消えたので困っているのは間違いない.

調べると,#Lib.hsというのはemacsが作成するLockファイルのようで,.emacsで 'create-lockfilesをnilに設定すると作られなくなるらしい.というわけで.emacsで以下のようにして対策.
(add-hook 'haskell-mode-hook
          '(lambda ()
             (turn-on-haskell-doc-mode)
             (turn-on-haskell-indentation)
             (turn-on-haskell-indent)
             (font-lock-mode)
             (setq create-lockfiles)))



タグ:Haskell
にほんブログ村 自転車ブログ ブルベへ
にほんブログ村
nice!(0)  コメント(0)  トラックバック(0) 

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

トラックバックの受付は締め切りました

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。