hie-core

Memo

  • hie-core の役割的には、haskell-ide-engine が依存している ghc-mod のポジション。将来的には置き換わるという構想

  • DAML IDE ですでに使われている

    • vscode を拡張したもの

  • hie-bios に依存している

  • 自分で hie-bios の設定を書く必要がある (hie ファイル)

  • hie ファイルの例

インストール

hie-core のインストール手順
λ git clone https://github.com/digital-asset/daml.git
λ cd daml/compiler/hie-core
λ stack install

λ hie-core --help
Starting hie-core
hie-core - the core of a Haskell IDE

Usage: hie-core [--lsp] [--cwd DIR] [FILES/DIRS...]
  Used as a test bed to check your IDE will work

Available options:
  --lsp                    Start talking to an LSP server
  --cwd DIR                Change to this directory
  -h,--help                Show this help text
  • cabal new-install だと hie-bios パッケージが見つからないって言われる。設定を書けば良いけど、今回は stack でインストールした。

使い方

とりあえず hlint で試してみる。

λ git clone https://github.com/ndmitchell/hlint.git
λ cd hlint
λ hie-core
...
Done
  • hie.yaml ファイルが無いと動かないらしい。

    • hie-bios のドキュメントを見ながら設定ファイルを作る

エディタの設定

  • vscode で進める (Emacs でも使えるみたい)

  • daml プロジェクトのルートにいると想定して進める

  • npm コマンドは事前にインストールしている前提

λ cd compiler/hie-core/extension
λ npm ci
λ npm install vsce --global
λ vsce package
λ code --install-extension hie-core-0.0.1.vsix

エラー

hlint で試した際に ghc-lib-parser が見つからないって出た

λ hie-core
Starting hie-core
/Users/gupi/Desktop/hlint
[1/6] Finding hie-bios cradle
Cradle {cradleRootDir = "/Users/gupi/Desktop/hlint", cradleOptsProg = CradleAction: direct}

[2/6] Converting Cradle to GHC session
res
  (ExitSuccess,"",["-package=ghc-lib-parser","-fwarn-incomplete-patterns","-fwarn-unused-binds","-fwarn-unused-imports","-fwarn-orphans","-isrc","-idist/build/autogen"],"")
["-package=ghc-lib-parser","-fwarn-incomplete-patterns","-fwarn-unused-binds","-fwarn-unused-imports","-fwarn-orphans","-isrc","-idist/build/autogen"]
7
([],0)
hie-core: <command line>: cannot satisfy -package ghc-lib-parser
    (use -v for more information)
  • stack build してから試してもダメ

  • cabal new-build してから試したら動いた。

参考リソース

Last updated