15

理想的な Haskell 編集ワークフローについて考えていました。

  • 3 つのターミナルを開きます (iterm2 を使用して分割)。
  • ターミナル 1 は、haskell ソース ファイルを編集するために vim を実行します。
  • ターミナル 2 は、現在のディレクトリまたはサブディレクトリ内のファイルが更新または作成されるたびに、変更されたファイルに対して hlint を自動的に実行します。
  • ターミナル 3 は ghci を実行し、変更されたファイルを自動的にロード/再ロードします。

誰かがこのようなものを設定しましたか?目標は、ファイルをvimに保存する以外に何もする必要なく、スタイルの問題やghciのコードを常に監視し、ghciを迅速に変更できるようにすることです。

自動化にはwatchrのようなものを使用することを考えていました。

4

6 に答える 6

7

BufWrite自動コマンドを使用して、vimで任意のシェルコマンドを実行できます。

たとえば、これをあなたの~/.vimrc:に入れてください

au BufWrite *.hs !echo % >> ~/saves.txt 

これはecho <CURRENT FILENAME> >> ~/saves.txt、haskellファイルを保存するたびに実行されます。

したがって、これは外部スクリプトをトリガーする簡単な方法です。

これで、コマンドを他の端末に中継するためのitermスクリプトを作成できます。何かのようなもの:

tell my_ghci_terminal
  write text ":r\n"
end tell
tell my_hlint_terminal
  write text "<RUN HLINT ON WHATEVER>"
end tell

したがって、vim自動コマンドを使用して適切なitermスクリプトをトリガーできます(スクリプトがghciとhlintに処理するファイルを指示できるように、現在のファイル名を渡します)。

おそらくこれをオンとオフに切り替えたいと思うでしょう(すべてのhaskellファイルに対してこれをしたくないかもしれません)ので、それを切り替えることができるvim関数で機能をラップすることを考えてください(そしてitermがどのようにすべきかについての引数を設定してくださいghciおよびhlintターミナルを見つけてください)。

于 2011-10-10T19:27:01.490 に答える
4

https://github.com/ndmitchell/ghcidは、ファイル変更時の GHCi の自動リロードをサポートしています。

例えば:ghcid '--command=stack ghci' --test=main

于 2018-01-16T12:09:19.823 に答える
2

まだ探しているかどうかはわかりませんが、auto-hlint の問題の解決策はSyntastic です。これは、ファイルに対して hlint または ghc-mod を自動的に実行し、行/配置を強調表示し、エラー/警告/スタイルの警告をリストします。

さらに、カーソルをその行に移動すると、メッセージ/コメントがステータス バーに表示されます。

于 2013-07-28T08:44:54.463 に答える
1

を押すたびにフックしghciて送信するエディター用のスクリプトを作成してみてください。どうすればそれができるかわかりませんが、vimを使用する方法があることは非常に楽観的です。":r\n"C-s

于 2011-10-09T19:32:21.013 に答える