1)と2)はコメントでpermeakraによって答えられました。私が使用しているものと同様のセットアップを説明することにより、3)をカバーしようとします。基本ライブラリの最初の単純なソリューション、次に一般的なHaskellソースパッケージのより一般的なソリューション。
前提条件として、Haskellのタグファイルを生成するツールが必要になります。
cabal install hothasktags
あなたの代わりにhothasktags
あなたの好きなものを使うかもしれません。たとえば、これらのいくつかを列挙しているhttps://github.com/bitc/lushtagsページを参照してください。
次に、ベースライブラリのソースを利用できるようにする必要があります。ここでは、GitHubのものを使用しています。
cd /space/haskell/sources/ # tweak to your personal taste
git clone https://github.com/ghc/packages-base.git
オプションで、特定のブランチに切り替えることもできます。例えば:
git checkout ghc-7.4
実行git branch -a
してすべての可能性を確認します。
次に、ベースライブラリのタグを生成しましょう(私はMacを利用できないため、コマンドがそこで機能すると想定する必要があります。そうしないと、適切に調整できます)。
cd packages-base
export LC_ALL=C # needed for case-sensitive searching
find -type f | egrep \.hs$\|\.lhs$ | xargs -Ii hothasktags i | sort > tags
(ソートに関する注意:ソートを使用しないとVimが文句を言います。LC_ALL
説明については、たとえばこのブログ投稿を参照してください)
次に、生成したタグについてVimに通知する必要があります。$HOME/.vimrc
最も簡単な方法は、おそらく次の行をあなたの:に入れることです。
autocmd FileType haskell setlocal tags+=/space/haskell/sources/packages-base/tags
このようにして、ベースライブラリのタグが開くHaskellファイルごとに設定されます。これが望ましくない場合は、次のVimコマンドを次のように配置できます.vimrc
。
autocmd FileType haskell command! SetGHCTags
\ setlocal tags+=/space/haskell/sources/packages-base/tags
:SetGHCTags
オンデマンドで呼び出します。
すべてのHaskellソースパッケージで機能するより一般的なソリューションについては、次の関数を使用できます(.vimrc
Haskellファイルタイプ専用のVimファイルに挿入または挿入)。
" Add 'tags' of the given package to the current tag stack. The package sources
" must be available in "/space/haskell/sources/<package>" and the tags must be
" generated for it.
fun! s:SetHaskellTags(pathInHaskellSrcDir) "{{{
let tagFile = "/space/haskell/sources/" . a:pathInHaskellSrcDir . "/tags"
if filereadable(tagFile)
exe "setlocal tags+=" . tagFile
else
echoerr "File does not exist or is not readable: " . tagFile
endif
endfunction "}}}
command! -nargs=1 SetHaskellTags call <SID>SetHaskellTags(<args>)
たとえばShelly.hs
図書館でそれを利用する:
cd /space/haskell/sources/
git clone https://github.com/yesodweb/Shelly.hs.git
cd Shelly.hs
regenerate-haskell-tags # [1]
Vimでは次のように呼び出します。
:SetHaskellTags "Shelly.hs"
改善の余地があります-SetHaskellTags
存在しない場合はタグを生成することも、ソース、構成可能なHaskellソースコードストレージ、ディレクトリ補完などをフェッチすることもできます。しかし、今は十分に機能します。したがって、少なくとも私が持っているソリューションを共有します。これらの改善のいくつかが行われたら、ここに戻ってきます。
[1]:に保存することをお勧めregenerate-haskell-tags
します$PAHT
。