6

我想参加我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文件所在的地方。又没有成功。 -verboseswitch 也不会输出任何有用的信息。任何建议表示赞赏。

编辑:

感谢mhuesch的建议,我能够得到搜索结果。虽然,返回的结果没有链接到本地​​ hackage 文档。我在网络上的任何地方都找不到的东西是 hoogle 服务器default.hoo在当前目录中查找一个调用的文件。

编辑2:

如果您像我一样拥有 5000 多个数据库(文件) ,.hoo则在组合它们时可能会出现“打开的文件过多”错误。诀窍很简单:hoogle combine x*.hoo -o=parts/x.hoo全部运行x='a' ... 'z',然后hoogle combine *.hoo -o=default.hoo在部件文件夹中运行。

编辑3:

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

4

1 回答 1

3

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来自这里。好像不是很清楚。

hoobuddy(上面链接的项目)虽然很酷,但似乎无法解决您想要的问题。我认为关键在于 hoogle 数据的帮助

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

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

于 2015-04-07T20:58:24.227 回答