[commit: haddock] master: Implement module export- and import-list item hyperlinking. (c84a3ef)
git at git.haskell.org
git at git.haskell.org
Wed Jul 8 08:39:57 UTC 2015
Repository : ssh://git@git.haskell.org/haddock
On branch : master
Link : http://git.haskell.org/haddock.git/commitdiff/c84a3ef8ebca5fb396ee9dc8cb2654f7891f5c0e
>---------------------------------------------------------------
commit c84a3ef8ebca5fb396ee9dc8cb2654f7891f5c0e
Author: Łukasz Hanuszczak <lukasz.hanuszczak at gmail.com>
Date: Mon Jun 8 14:12:58 2015 +0200
Implement module export- and import-list item hyperlinking.
>---------------------------------------------------------------
c84a3ef8ebca5fb396ee9dc8cb2654f7891f5c0e
haddock-api/src/Haddock/Backends/Hyperlinker/Ast.hs | 20 +++++++++++++++++++-
1 file changed, 19 insertions(+), 1 deletion(-)
diff --git a/haddock-api/src/Haddock/Backends/Hyperlinker/Ast.hs b/haddock-api/src/Haddock/Backends/Hyperlinker/Ast.hs
index 19ebbe7..2325aa2 100644
--- a/haddock-api/src/Haddock/Backends/Hyperlinker/Ast.hs
+++ b/haddock-api/src/Haddock/Backends/Hyperlinker/Ast.hs
@@ -36,7 +36,12 @@ enrich src =
, rtkDetails = lookupBySpan (tkSpan token) detailsMap
}
where
- detailsMap = variables src ++ types src ++ binds src
+ detailsMap = concat
+ [ variables src
+ , types src
+ , binds src
+ , imports src
+ ]
type DetailsMap = [(GHC.SrcSpan, TokenDetails)]
@@ -81,6 +86,19 @@ binds =
pure (sspan, TokenDetails RtkBind name)
_ -> empty
+imports :: GHC.RenamedSource -> DetailsMap
+imports =
+ everything (<|>) ie
+ where
+ ie term = case cast term of
+ (Just (GHC.IEVar v)) -> pure $ var v
+ (Just (GHC.IEThingAbs t)) -> pure $ typ t
+ (Just (GHC.IEThingAll t)) -> pure $ typ t
+ (Just (GHC.IEThingWith t vs)) -> [typ t] ++ map var vs
+ _ -> empty
+ typ (GHC.L sspan name) = (sspan, TokenDetails RtkType name)
+ var (GHC.L sspan name) = (sspan, TokenDetails RtkVar name)
+
matches :: Span -> GHC.SrcSpan -> Bool
matches tspan (GHC.RealSrcSpan aspan)
| rs && cs && re && ce = True
More information about the ghc-commits
mailing list