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の方がいいかもしれない.
というわけで使ってみた.
はずなんだけど,emacsでファイルを編集すると以下のように言って止まっちゃう.
emacsの一時ファイルにアクセスしようとしているところで一時ファイルが消えたので困っているのは間違いない.
調べると,#Lib.hsというのはemacsが作成するLockファイルのようで,.emacsで 'create-lockfilesをnilに設定すると作られなくなるらしい.というわけで.emacsで以下のようにして対策.
にほんブログ村
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
にほんブログ村
2016-08-21 19:27
nice!(0)
コメント(0)
トラックバック(0)
コメント 0