ghc-imported-from: Find the Haddock documentation for a symbol.

[ bsd3, development, library, program ] [ Propose Tags ]

Given a Haskell module and symbol, determine the URL to the Haddock documentation for that symbol.


[Skip to Readme]

Modules

[Index]

Downloads

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees

Candidates

  • No Candidates
Versions [RSS] 0.1.0.0, 0.1.0.1, 0.1.0.2, 0.1.0.3, 0.1.0.4, 0.2.0.0, 0.2.0.1, 0.2.0.2, 0.2.0.3, 0.2.0.4, 0.2.0.5, 0.2.0.6, 0.2.0.7, 0.2.1.0, 0.2.1.1, 0.3.0.0, 0.3.0.1, 0.3.0.2, 0.3.0.3, 0.3.0.4, 0.3.0.5, 0.3.0.6
Change log changelog.md
Dependencies base (>=4.0 && <5), bytestring, Cabal (>=1.10 && <1.17 || >=1.18), containers, directory, exceptions, filepath, ghc, ghc-imported-from, ghc-mod (==5.5.0.0), ghc-paths, ghc-syb-utils, haddock-api, hspec, hspec-discover, monad-journal, mtl, optparse-applicative, parsec, pipes-transduce (<0.3.4.0), process, process-streaming (>=0.9.0.0), safe, syb, transformers [details]
License BSD-3-Clause
Author Carlo Hamalainen
Maintainer carlo@carlo-hamalainen.net
Category Development
Home page https://github.com/carlohamalainen/ghc-imported-from
Uploaded by CarloHamalainen at 2016-04-05T04:29:21Z
Distributions
Reverse Dependencies 1 direct, 0 indirect [details]
Executables ghc-imported-from, fake-ghc-for-ghc-imported-from
Downloads 14016 total (65 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs available [build log]
Last success reported on 2016-04-05 [all 1 reports]

Readme for ghc-imported-from-0.3.0.4

[back to package description]

ghc-imported-from

For a given Haskell source file, determine the path to the Haddock documentation for a symbol at a particular line/col location.

Example: on the file src/Main.hs,

ghc-imported-from src/Main.hs Main strOption 18 17

says

SUCCESS: file:///home/carlo/.stack/snapshots/x86_64-linux/lts-5.8/7.10.3/doc/optparse-applicative-0.12.1.0/Options-Applicative-Builder.html

since the usage of strOption at line 18, column 17, is from the Options.Applicative.Builder module.

Difficulties arise in resolving names because some symbols are exported from a certain package but defined in another, for example String is defined in GHC.Base but is exported from the standard prelude, the module Prelude. There are other cases to deal with including qualified imports, selective imports, imports with hidden components, etc.

Using with Stack

Stack makes everything easier.

Build ghc-imported-from:

git clone https://github.com/carlohamalainen/ghc-imported-from
cd ghc-imported-from
stack build

then add

`pwd`/.stack-work/install/x86_64-linux/lts-5.8/7.10.3/bin

or similar to your $PATH.

Then in a project that you are working on:

cd my-project
stack build
stack haddock # Must do this!
ghc-imported-from some/file/Blah.hs Blah f 100 3

Tests

Run the tests using Stack:

stack test

ghcimportedfrom-vim

For Vim users, follow the instructions at https://github.com/carlohamalainen/ghcimportedfrom-vim to install the Vim plugin.

ghc-imported-from-el

For Emacs users, David Christiansen has written ghc-imported-from-el.

Usage

See the tests subdirectory for some examples. Or load your favourite Haskell project and hit F4.

Or watch the screencast (be sure to set 720p HD and then fullscreen):

https://www.youtube.com/watch?v=7yO_VGCWMu8

Notes

ghc-imported-from uses both GHC and ghc-pkg, which accept arguments in differing formats. For example GHC takes -package-db while ghc-pkg takes --package-db=. For more details: http://www.vex.net/~trebla/haskell/sicp.xhtml

Debugging

To see the GHC options that have been automatically detected, change into your project's directory and run:

$ cd ~/ghc-imported-from
$ cabal repl --with-ghc=fake-ghc-for-ghc-imported-from
Preprocessing library ghc-imported-from-0.2.0.2...
--interactive -fbuilding-cabal-package -O0 -outputdir dist/build -odir dist/build -hidir dist/build -stubdir dist/build -i -idist/build -i. -idist/build/autogen -Idist/build/autogen -Idist/build -optP-include -optPdist/build/autogen/cabal_macros.h -package-name ghc-imported-from-0.2.0.2 -hide-all-packages -no-user-package-db -package-db /home/user/ghc-imported-from/.cabal-sandbox/x86_64-linux-ghc-7.6.3-packages.conf.d -package-db dist/package.conf.inplace -package-id Cabal-1.16.0-c6e09e008cd04cf255c1ce0c59aba905 -package-id base-4.6.0.1-8aa5d403c45ea59dcd2c39f123e27d57 -package-id containers-0.5.0.0-ab1dae9a94cd3cc84e7b2805636ebfa2 -package-id directory-1.2.0.1-91a788fd88acd7f149f0f10f5f1e23f2 -package-id filepath-1.3.0.1-b12cbe18566fe1532a1fda4c85e31cbe -package-id ghc-7.6.3-18957ddbb817289f604552aa2da2e879 -package-id ghc-mod-4.1.0-a87501f2667239b3f0bef3e0f3753496 -package-id ghc-paths-0.1.0.9-3817f31ae510ed3b58554933ea527b74 -package-id ghc-syb-utils-0.2.1.2-bf72c1e71339c52f0af404a12449c9d2 -package-id mtl-2.2.0.1-ef91e0abcf7a4fb581ecb7fe83cdcba1 -package-id process-1.1.0.2-76e05340eb66705981411022731ca84a -package-id safe-0.3.4-ba52ca348aecad429ba90450e3aba4c4 -package-id syb-0.4.1-9469ffdd9c6a7ebbf035421c915a08ee -package-id transformers-0.4.1.0-42810d723884ebf2a2dd638e5b22e523 -XHaskell2010 Language.Haskell.GhcImportedFrom Language.Haskell.GhcImportedFrom.UtilsFromGhcMod Language.Haskell.GhcImportedFrom.Types -Wall

Alternatives

As far as I know the only alternative is the fpco/hoogle-doc function in https://www.fpcomplete.com/page/api. Or try Ctrl-i in the web version of FP Complete.