Merge of a patch from the old Haddock branch:
authorDavid Waern <david.waern@gmail.com>
Mon, 12 Nov 2007 01:31:43 +0000 (01:31 +0000)
committerDavid Waern <david.waern@gmail.com>
Mon, 12 Nov 2007 01:31:43 +0000 (01:31 +0000)
  Fri Jan  5 12:13:41 CET 2007  Simon Marlow <simonmar@microsoft.com>
    * Fix up a case of extra vertical space after a code block

Please merge this to the 6.8.2 branch

compiler/hsSyn/HsDoc.hs

index 0665e9d..c71f58b 100644 (file)
@@ -68,16 +68,34 @@ docAppend d1 d2
 -- is a DocMonospaced and make it into a DocCodeBlock
 docParagraph :: HsDoc id -> HsDoc id
 docParagraph (DocMonospaced p)
-  = DocCodeBlock p
+  = DocCodeBlock (docCodeBlock p)
 docParagraph (DocAppend (DocString s1) (DocMonospaced p))
   | all isSpace s1
-  = DocCodeBlock p
+  = DocCodeBlock (docCodeBlock p)
 docParagraph (DocAppend (DocString s1)
     (DocAppend (DocMonospaced p) (DocString s2)))
   | all isSpace s1 && all isSpace s2
-  = DocCodeBlock p
+  = DocCodeBlock (docCodeBlock p)
 docParagraph (DocAppend (DocMonospaced p) (DocString s2))
   | all isSpace s2
-  = DocCodeBlock p
+  = DocCodeBlock (docCodeBlock p)
 docParagraph p
   = DocParagraph p
+
+
+-- Drop trailing whitespace from @..@ code blocks.  Otherwise this:
+--
+--    -- @
+--    -- foo
+--    -- @
+--
+-- turns into (DocCodeBlock "\nfoo\n ") which when rendered in HTML
+-- gives an extra vertical space after the code block.  The single space
+-- on the final line seems to trigger the extra vertical space.
+--
+docCodeBlock :: HsDoc id -> HsDoc id
+docCodeBlock (DocString s)
+  = DocString (reverse $ dropWhile (`elem` " \t") $ reverse s)
+docCodeBlock (DocAppend l r)
+  = DocAppend l (docCodeBlock r)
+docCodeBlock d = d