2015-04-07 16 views
5

Ich möchte hoogle auf einem Projekt von mir laufen lassen. Ich habe die Hoogle-Datenbank (eine Datei mit der Erweiterung .hoo) aus meinem Projekt erfolgreich erstellt. Aber wenn ich den Server lokal ausführe, kann hoogle keine der Funktionen oder Typen finden, die in meinem Projekt definiert sind. Es kann einige der Prelude-Funktionen wie map finden, aber keine der Funktionen, die in meinem Projekt definiert sind. hoogle dump my-project.hoo speichert den Inhalt ohne Fehler ab. Ich bewegte auch my-project.hoo zu ~/.cabal/share/x86_64-osx-ghc-7.8.4/hoogle-4.2.38/databases, wo alle .hoo Dateien liegen. Kein Erfolg mehr. -verbose Switch gibt auch keine nützlichen Informationen aus. Jeder Vorschlag wird geschätzt.Hoogle lokal ausführen

Edit:

Dank mhuesch ‚s Vorschlag, konnte ich die Suchergebnisse erhalten. Die zurückgegebenen Ergebnisse sind jedoch nicht mit den lokalen Hack-Dokumenten verknüpft. Etwas, das ich nirgendwo im Internet finden konnte, ist, dass der Hoogle Server im aktuellen Verzeichnis nach einer Datei namens default.hoo sucht.

Edit 2:

Wenn Sie, wie ich, haben 5000+ Datenbanken (heißt, .hoo-Dateien) Sie können eine "zu viele offene Dateien" Fehlermeldung erhalten, wenn sie kombiniert werden. Der Trick ist einfach: Führen Sie hoogle combine x*.hoo -o=parts/x.hoo für alle x='a' ... 'z' und dann im Teileordner ausführen.

bearbeiten 3:

Wenn Sie Ihre Hoogle Suchergebnisse mit lokalen Hackage Dokumentation verknüpfen, Verwendung hoogle convert --doc='absolute-path-to-your-doc' your-package-hoogle-doc.txt default.hoo. Ich konnte relativen Pfad nicht arbeiten.

+3

AFAIK müssen Sie 'hoogle kombinieren', um Ihre Datenbank dort zu bekommen - leider sind alle Online-Dokumente jetzt deadlinked und ich kann die Details nicht finden - Ich bin sicher, dass jemand so schnell wie möglich helfen wird – Carsten

+0

The [Ganeti] (http://code.google.com/p/ganeti/) Das Projekt hat ein [repository] (http://git.ganeti.org/?p=ganeti -hoogle.git) mit einer lockeren Rolle, die das Einrichten eines Hoogle-Webservers automatisiert von Grund auf, der den gesamten Haskell-Code des Projekts indiziert. Vielleicht könnte es für Sie hilfreich sein. (Disclaimer: Ich bin in das Projekt involviert.) –

Antwort

2

Hoogle durchsucht das aktuelle Verzeichnis (wo der Befehl hoogle ausgeführt wird) nach einer Datenbank namens 'default.hoo'. Wenn Sie also Ihre Datenbank umbenennen, sollte sie diese finden.

Um es in die Datenbank in Ihrer Clique Verzeichnis hinzuzufügen, glaube ich, sollte dies (aus http://newartisans.com/2012/09/running-a-fully-local-hoogle/ genommen) arbeiten:

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

Edit: (als Antwort auf Oxy ‚s Bearbeitungen)

Mein Wissen über default.hoo kommt von here. Es scheint nicht sehr gut bekannt zu sein.

Hoobuddy (das oben verlinkte Projekt), während cool, scheint nicht zu adressieren, was Sie wollen. Ich denke, der Schlüssel dazu ist in der Hilfe von Hoogle Daten

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

Ich habe es nicht selbst gemacht, also bin ich mir nicht sicher. Der Autor von this writeup hat eine lokale Dokumentation erreicht, indem er hoogle aus der Quelle kompiliert und sein lokales Dokumentverzeichnis hinzugefügt hat. I Denken Sie, dass Sie das vermeiden können, indem Sie hoogle Daten verwenden.

+0

Großartig! Es hat das Problem irgendwie gelöst. Jetzt werden meine Funktionen in den Suchergebnissen angezeigt, sie sind jedoch nicht mit der lokalen Hack-Dokumentation verknüpft. Wie kann ich auf lokale Dokumente der Pakete verlinken? – Oxy