在本地运行Hoogle

时间:2015-04-07 19:03:54

标签: haskell hoogle

我想在我的项目上运行hoogle。我从项目中成功生成了hoogle数据库(扩展名为.hoo的文件)。 但是当我在本地运行服务器时,hoogle找不到我项目中定义的任何功能或类型。 它可以找到一些前奏函数,例如map,但没有找到我的项目中定义的函数。 hoogle dump my-project.hoo转储内容没有错误。 我还将my-project.hoo移至~/.cabal/share/x86_64-osx-ghc-7.8.4/hoogle-4.2.38/databases所有.hoo个文件所在的位置。再没有成功。 -verbose开关也不输出任何有用的信息。 任何建议都表示赞赏。

修改

感谢mhuesch的建议,我能够获得搜索结果。虽然,返回的结果没有链接到本地​​hackage文档。 我无法在网络上找到的任何内容是,haogle服务器会在当前目录中查找名为default.hoo的文件。

编辑2:

如果您和我一样拥有5000多个数据库(.hoo文件),您可能会收到太多打开的文件"组合它们时出错。诀窍很简单:为所有hoogle combine x*.hoo -o=parts/x.hoo运行x='a' ... 'z',然后在parts文件夹中运行hoogle combine *.hoo -o=default.hoo

编辑3:

如果您想将您的搜索结果与本地hackage文档相关联, 使用hoogle convert --doc='absolute-path-to-your-doc' your-package-hoogle-doc.txt default.hoo。 我无法获得相对路径的工作。

1 个答案:

答案 0 :(得分:2)

Hoogle搜索当前目录(运行命令hoogle的位置)以查找名为“default.hoo”的数据库,因此如果您将数据库重命名为该数据库,则应该找到它。

要将它添加到cabal目录中的数据库,我相信这应该可行(取自http://newartisans.com/2012/09/running-a-fully-local-hoogle/):

cd {...path to hoogle databases dir...}
mv default.hoo default.hoo-prev
hoogle combine *.hoo

修改(对Oxy编辑的回复)

我对default.hoo的了解来自here。似乎似乎并不是很清楚。

hoobuddy(上面链接的项目),虽然很酷,似乎没有解决你想要的问题。我认为关键在于借助于hoogle数据

$ hoogle data --help
...
-l --local[=FILEPATH]  Use local documentation if available
...

我自己没有这样做,所以我不确定。 this writeup的作者通过从源代码编译hoogle并添加其本地docs目录来实现本地文档链接。我认为你可以通过使用hoogle数据来避免这种情况。