diff options
author | David Waern <david.waern@gmail.com> | 2011-11-26 04:20:12 +0100 |
---|---|---|
committer | David Waern <david.waern@gmail.com> | 2011-11-26 04:20:12 +0100 |
commit | 3ebdc745d7bc79307986332dc71f3495099b4579 (patch) | |
tree | c1e15b26b65e079a52000b37791077eee687d659 /src/Haddock/Backends/Xhtml/DocMarkup.hs | |
parent | c3278a9d3c17ea0929d39116e431a2839bb845ca (diff) |
Give preference to type over data constructors for doc comment links at renaming time.
Previously this was done in the backends.
Also, warn when a doc comment refers to something that is in scope but which we
don't have the .haddock file for.
These changes mean we can make DocIdentifier [a] into DocIdentifier a.
Diffstat (limited to 'src/Haddock/Backends/Xhtml/DocMarkup.hs')
-rw-r--r-- | src/Haddock/Backends/Xhtml/DocMarkup.hs | 25 |
1 files changed, 6 insertions, 19 deletions
diff --git a/src/Haddock/Backends/Xhtml/DocMarkup.hs b/src/Haddock/Backends/Xhtml/DocMarkup.hs index 93536834..05ce7dbb 100644 --- a/src/Haddock/Backends/Xhtml/DocMarkup.hs +++ b/src/Haddock/Backends/Xhtml/DocMarkup.hs @@ -28,17 +28,15 @@ import Haddock.Utils import Text.XHtml hiding ( name, title, p, quote ) import GHC -import Name -import RdrName -parHtmlMarkup :: (a -> Html) -> (a -> Bool) -> DocMarkup a Html -parHtmlMarkup ppId isTyCon = Markup { +parHtmlMarkup :: (a -> Html) -> DocMarkup a Html +parHtmlMarkup ppId = Markup { markupEmpty = noHtml, markupString = toHtml, markupParagraph = paragraph, markupAppend = (+++), - markupIdentifier = thecode . ppId . choose, + markupIdentifier = thecode . ppId, markupModule = \m -> let (mdl,ref) = break (=='#') m in ppModuleRef (mkModuleNoPackage mdl) ref, markupEmphasis = emphasize, @@ -53,17 +51,6 @@ parHtmlMarkup ppId isTyCon = Markup { markupExample = examplesToHtml } where - -- If an id can refer to multiple things, we give precedence to type - -- constructors. This should ideally be done during renaming from RdrName - -- to Name, but since we will move this process from GHC into Haddock in - -- the future, we fix it here in the meantime. - -- TODO: mention this rule in the documentation. - choose [] = error "empty identifier list in HsDoc" - choose [x] = x - choose (x:y:_) - | isTyCon x = x - | otherwise = y - examplesToHtml l = pre (concatHtml $ map exampleToHtml l) ! [theclass "screen"] exampleToHtml (Example expression result) = htmlExample @@ -77,17 +64,17 @@ parHtmlMarkup ppId isTyCon = Markup { -- ugly extra whitespace with some browsers). FIXME: Does this still apply? docToHtml :: Qualification -> Doc DocName -> Html docToHtml qual = markup fmt . cleanup - where fmt = parHtmlMarkup (ppDocName qual) (isTyConName . getName) + where fmt = parHtmlMarkup (ppDocName qual) origDocToHtml :: Doc Name -> Html origDocToHtml = markup fmt . cleanup - where fmt = parHtmlMarkup ppName isTyConName + where fmt = parHtmlMarkup ppName rdrDocToHtml :: Doc RdrName -> Html rdrDocToHtml = markup fmt . cleanup - where fmt = parHtmlMarkup ppRdrName isRdrTc + where fmt = parHtmlMarkup ppRdrName docElement :: (Html -> Html) -> Html -> Html |