diff options
| author | Alec Theriault <alec.theriault@gmail.com> | 2018-09-09 14:25:57 -0700 | 
|---|---|---|
| committer | Alec Theriault <alec.theriault@gmail.com> | 2019-03-09 11:22:55 -0800 | 
| commit | ae23b4f25a972620686617b5aab5375d5046b1c9 (patch) | |
| tree | f6400b0853050caf7d54ec8945caf36ff78dd811 | |
| parent | 747dfc712bd516b76342f2e17dada7a64d43c778 (diff) | |
Many LaTeX backend fixes
After this commit, we can run with `--latex` on all boot libraries
without crashing (although the generated LaTeX still fails to compile in
a handful of larger packages like `ghc` and `base`).
 * Add newlines after all block elements in LaTeX. This is important to
   prevent the final output from being more an more indented. See the
   `latext-test/src/Example` test case for a sample of this.
 * Support associated types in class declarations (but not yet defaults)
 * Several small issues for producing compiling LaTeX;
     - avoid empy `\haddockbeginargs` lists (ex: `type family Any`)
     - properly escape identifiers depending on context (ex: `Int#`)
     - add `vbox` around `itemize`/`enumerate` (so they can be in tables)
 * Several spacing fixes:
     - limit the width of `Pretty`-arranged monospaced code
     - cut out extra space characters in export lists
     - only escape spaces if there are _multiple_ spaces
     - allow type signatures to be multiline (even without docs)
 * Remove uninteresting and repetitive `main.tex`/`haddock.sty` files
   from `latex-test` test reference output.
Fixes #935, #929 (LaTeX docs for `text` build & compile)
Fixes #727, #930 (I think both are really about type families...)
29 files changed, 253 insertions, 732 deletions
@@ -26,6 +26,9 @@   * Render associated type defaults and also improve rendering of     default method signatures + * Many fixes to the LaTeX backend, mostly focused on not crashing +   as well as generating LaTeX source that compiles +  ## Changes in version 2.22.0   * Make `--package-version` optional for `--hoogle` (#899) diff --git a/haddock-api/src/Haddock/Backends/LaTeX.hs b/haddock-api/src/Haddock/Backends/LaTeX.hs index 1cc17dab..cc096a7a 100644 --- a/haddock-api/src/Haddock/Backends/LaTeX.hs +++ b/haddock-api/src/Haddock/Backends/LaTeX.hs @@ -103,6 +103,10 @@ haddockSty = "haddock.sty"  type LaTeX = Pretty.Doc +-- | Default way of rendering a 'LaTeX'. The width is 90 by default (since 100 +-- often overflows the line). +latex2String :: LaTeX -> String +latex2String = fullRender PageMode 90 1 txtPrinter ""  ppLaTeXTop     :: String @@ -156,7 +160,7 @@ ppLaTeXModule _title odir iface = do          text "\\haddockbeginheader",          verb $ vcat [             text "module" <+> text mdl_str <+> lparen, -           text "    " <> fsep (punctuate (text ", ") $ +           text "    " <> fsep (punctuate (char ',') $                                 map exportListItem $                                 filter forSummary exports),             text "  ) where" @@ -171,7 +175,7 @@ ppLaTeXModule _title odir iface = do        body = processExports exports    -- -  writeUtf8File (odir </> moduleLaTeXFile mdl) (fullRender PageMode 80 1 txtPrinter "" tex) +  writeUtf8File (odir </> moduleLaTeXFile mdl) (show tex)  -- | Prints out an entry in a module export list.  exportListItem :: ExportItem DocNameI -> LaTeX @@ -287,7 +291,7 @@ ppDecl :: LHsDecl DocNameI                         -- ^ decl to print         -> LaTeX  ppDecl decl pats (doc, fnArgsDoc) instances subdocs _fxts = case unLoc decl of -  TyClD _ d@FamDecl {}         -> ppFamDecl doc instances d unicode +  TyClD _ d@FamDecl {}         -> ppFamDecl False doc instances d unicode    TyClD _ d@DataDecl {}        -> ppDataDecl pats instances subdocs (Just doc) d unicode    TyClD _ d@SynDecl {}         -> ppTySyn (doc, fnArgsDoc) d unicode  -- Family instances happen via FamInst now @@ -317,13 +321,14 @@ ppFor _ _ _ = error "ppFor error in Haddock.Backends.LaTeX"  -------------------------------------------------------------------------------  -- | Pretty-print a data\/type family declaration -ppFamDecl :: Documentation DocName    -- ^ this decl's docs +ppFamDecl :: Bool                     -- ^ is the family associated? +          -> Documentation DocName    -- ^ this decl's docs            -> [DocInstance DocNameI]   -- ^ relevant instances            -> TyClDecl DocNameI        -- ^ family to print            -> Bool                     -- ^ unicode            -> LaTeX -ppFamDecl doc instances decl unicode = -  declWithDoc (ppFamHeader (tcdFam decl) unicode <+> whereBit) +ppFamDecl associated doc instances decl unicode = +  declWithDoc (ppFamHeader (tcdFam decl) unicode associated <+> whereBit)                (if null body then Nothing else Just (vcat body))    $$ instancesBit    where @@ -335,6 +340,7 @@ ppFamDecl doc instances decl unicode =      familyEqns        | FamilyDecl { fdInfo = ClosedTypeFamily (Just eqns) } <- tcdFam decl +      , not (null eqns)        = Just (text "\\haddockbeginargs" $$                vcat [ decltt (ppFamDeclEqn eqn) <+> nl | L _ eqn <- eqns ] $$                text "\\end{tabulary}\\par") @@ -356,22 +362,26 @@ ppFamDecl doc instances decl unicode =  -- | Print the LHS of a type\/data family declaration.  ppFamHeader :: FamilyDecl DocNameI  -- ^ family header to print -              -> Bool                 -- ^ unicode -              -> LaTeX -ppFamHeader (XFamilyDecl _) _ = panic "haddock;ppFamHeader" +            -> Bool                 -- ^ unicode +            -> Bool                 -- ^ is the family associated? +            -> LaTeX +ppFamHeader (XFamilyDecl _) _ _ = panic "haddock;ppFamHeader"  ppFamHeader (FamilyDecl { fdLName = L _ name                          , fdTyVars = tvs                          , fdInfo = info                          , fdResultSig = L _ result                          , fdInjectivityAnn = injectivity }) -              unicode = -  leader <+> keyword "family" <+> famName <+> famSig <+> injAnn +              unicode associated = +  famly leader <+> famName <+> famSig <+> injAnn    where      leader = case info of        OpenTypeFamily     -> keyword "type"        ClosedTypeFamily _ -> keyword "type"        DataFamily         -> keyword "data" +    famly | associated = id +          | otherwise = (<+> keyword "family") +      famName = ppAppDocNameTyVarBndrs unicode name (hsq_explicit tvs)      famSig = case result of @@ -475,11 +485,15 @@ ppSubSigLike unicode typ argDocs subdocs leader = do_args 0 leader typ      arg_doc n = rDoc . fmap _doc $ Map.lookup n argDocs      do_args :: Int -> LaTeX -> HsType DocNameI -> [(LaTeX, LaTeX)] -    do_args n leader (HsForAllTy _ tvs ltype) -      = do_largs n (leader <+> decltt (ppForAllPart unicode tvs)) ltype +    do_args _n leader (HsForAllTy _ tvs ltype) +      = [ ( decltt leader +          , decltt (ppForAllPart unicode tvs) +              <+> ppLType unicode ltype +          ) ]      do_args n leader (HsQualTy _ lctxt ltype) -      = (decltt leader, decltt (ppLContextNoArrow lctxt unicode) <+> nl) -        : do_largs n (darrow unicode) ltype +      = ( decltt leader +        , decltt (ppLContextNoArrow lctxt unicode) <+> nl +        ) : do_largs n (darrow unicode) ltype      do_args n leader (HsFunTy _ (L _ (HsRecTy _ fields)) r)        = [ (decltt ldr, latex <+> nl) @@ -498,9 +512,9 @@ ppSubSigLike unicode typ argDocs subdocs leader = do_args 0 leader typ      -- We need 'gadtComma' and 'gadtEnd' to line up with the `{` from      -- 'gadtOpen', so we add 3 spaces to cover for `-> `/`:: ` (3 in unicode      -- mode since `->` and `::` are rendered as single characters. -    gadtComma = hcat (replicate (if unicode then 3 else 4) (text "\\ ")) <> text "," -    gadtEnd = hcat (replicate (if unicode then 3 else 4) (text "\\ ")) <> text "\\}" -    gadtOpen = text "\\{" +    gadtComma = hcat (replicate (if unicode then 3 else 4) (char ' ')) <> char ',' +    gadtEnd = hcat (replicate (if unicode then 3 else 4) (char ' ')) <> char '}' +    gadtOpen = char '{'  ppTypeSig :: [Name] -> HsType DocNameI  -> Bool -> LaTeX @@ -512,7 +526,7 @@ ppTypeSig nms ty unicode =  -- | Pretty-print type variables.  ppTyVars :: Bool -> [LHsTyVarBndr DocNameI] -> [LaTeX] -ppTyVars unicode tvs = map (ppHsTyVarBndr unicode . unLoc) tvs +ppTyVars unicode = map (ppHsTyVarBndr unicode . unLoc)  tyvarNames :: LHsQTyVars DocNameI -> [Name] @@ -523,10 +537,9 @@ declWithDoc :: LaTeX -> Maybe LaTeX -> LaTeX  declWithDoc decl doc =     text "\\begin{haddockdesc}" $$     text "\\item[\\begin{tabular}{@{}l}" $$ -   text (latexMonoFilter (show decl)) $$ -   text "\\end{tabular}]" <> -       (if isNothing doc then empty else text "\\haddockbegindoc") $$ -   maybe empty id doc $$ +   text (latexMonoFilter (latex2String decl)) $$ +   text "\\end{tabular}]" $$ +   maybe empty (\x -> text "{\\haddockbegindoc" $$ x <> text "}") doc $$     text "\\end{haddockdesc}" @@ -537,9 +550,9 @@ multiDecl :: [LaTeX] -> LaTeX  multiDecl decls =     text "\\begin{haddockdesc}" $$     vcat [ -      text "\\item[" $$ -      text (latexMonoFilter (show decl)) $$ -      text "]" +      text "\\item[\\begin{tabular}{@{}l}" $$ +      text (latexMonoFilter (latex2String decl)) $$ +      text "\\end{tabular}]"        | decl <- decls ] $$     text "\\end{haddockdesc}" @@ -583,7 +596,7 @@ ppFds fds unicode =                             hsep (map (ppDocName . unLoc) vars2) --- TODO: associated types, associated type defaults, docs on default methods +-- TODO: associated type defaults, docs on default methods  ppClassDecl :: [DocInstance DocNameI]              -> Documentation DocName -> [(DocName, DocForDecl DocName)]              -> TyClDecl DocNameI -> Bool -> LaTeX @@ -604,8 +617,16 @@ ppClassDecl instances doc subdocs      body_        | null lsigs, null ats, null at_defs = Nothing        | null ats, null at_defs = Just methodTable ----     | otherwise = atTable $$ methodTable -      | otherwise = error "LaTeX.ppClassDecl" +      | otherwise = Just (atTable $$ methodTable) + +    atTable = +      text "\\haddockpremethods{}" <> emph (text "Associated Types") $$ +      vcat  [ ppFamDecl True (fst doc) [] (FamDecl noExt decl) True +            | L _ decl <- ats +            , let name = unL . fdLName $ decl +                  doc = lookupAnySubdoc name subdocs +            ] +      methodTable =        text "\\haddockpremethods{}" <> emph (text "Methods") $$ @@ -636,6 +657,7 @@ ppDocInstances unicode (i : rest)  isUndocdInstance :: DocInstance a -> Maybe (InstHead a)  isUndocdInstance (i,Nothing,_,_) = Just i +isUndocdInstance (i,Just (MetaDoc _ DocEmpty),_,_) = Just i  isUndocdInstance _ = Nothing  -- | Print a possibly commented instance. The instance header is printed inside @@ -1001,7 +1023,7 @@ ppLFunLhType  unicode y = ppFunLhType unicode (unLoc y)  ppType, ppParendType, ppFunLhType, ppCtxType :: Bool -> HsType DocNameI -> LaTeX  ppType       unicode ty = ppr_mono_ty (reparenTypePrec PREC_TOP ty) unicode -ppParendType unicode ty = ppr_mono_ty (reparenTypePrec PREC_TOP ty) unicode +ppParendType unicode ty = ppr_mono_ty (reparenTypePrec PREC_CON ty) unicode  ppFunLhType  unicode ty = ppr_mono_ty (reparenTypePrec PREC_FUN ty) unicode  ppCtxType    unicode ty = ppr_mono_ty (reparenTypePrec PREC_CTX ty) unicode @@ -1014,7 +1036,7 @@ ppLHsTypeArg _ (HsArgPar _) = text ""  ppHsTyVarBndr :: Bool -> HsTyVarBndr DocNameI -> LaTeX  ppHsTyVarBndr _ (UserTyVar _ (L _ name)) = ppDocName name  ppHsTyVarBndr unicode (KindedTyVar _ (L _ name) kind) = -  parens (ppDocName name) <+> dcolon unicode <+> ppLKind unicode kind +  parens (ppDocName name <+> dcolon unicode <+> ppLKind unicode kind)  ppHsTyVarBndr _ (XTyVarBndr _) = panic "haddock:ppHsTyVarBndr"  ppLKind :: Bool -> LHsKind DocNameI -> LaTeX @@ -1080,7 +1102,7 @@ ppr_mono_ty (HsParTy _ ty) unicode  ppr_mono_ty (HsDocTy _ ty _) unicode    = ppr_mono_lty ty unicode -ppr_mono_ty (HsWildCardTy _) _ = text "\\_" +ppr_mono_ty (HsWildCardTy _) _ = char '_'  ppr_mono_ty (HsTyLit _ t) u = ppr_tylit t u  ppr_mono_ty (HsStarTy _ isUni) unicode = starSymbol (isUni || unicode) @@ -1114,27 +1136,16 @@ ppSymName name    | otherwise = ppName name -ppVerbOccName :: Wrap OccName -> LaTeX -ppVerbOccName = text . latexFilter . showWrapped occNameString -  ppIPName :: HsIPName -> LaTeX  ppIPName = text . ('?':) . unpackFS . hsIPNameFS  ppOccName :: OccName -> LaTeX  ppOccName = text . occNameString -ppVerbDocName :: Wrap DocName -> LaTeX -ppVerbDocName = text . latexFilter . showWrapped (occNameString . nameOccName . getName) - - -ppVerbRdrName :: Wrap RdrName -> LaTeX -ppVerbRdrName = text . latexFilter . showWrapped (occNameString . rdrNameOcc) -  ppDocName :: DocName -> LaTeX  ppDocName = ppOccName . nameOccName . getName -  ppLDocName :: Located DocName -> LaTeX  ppLDocName (L _ d) = ppDocName d @@ -1172,9 +1183,10 @@ latexMunge c    s = c : s  latexMonoMunge :: Char -> String -> String -latexMonoMunge ' ' s = '\\' : ' ' : s +latexMonoMunge ' '      (' ':s) = "\\ \\ " ++ s +latexMonoMunge ' ' ('\\':' ':s) = "\\ \\ " ++ s  latexMonoMunge '\n' s = '\\' : '\\' : s -latexMonoMunge c   s = latexMunge c s +latexMonoMunge c s = latexMunge c s  ------------------------------------------------------------------------------- @@ -1182,34 +1194,40 @@ latexMonoMunge c   s = latexMunge c s  ------------------------------------------------------------------------------- -parLatexMarkup :: (a -> LaTeX) -> DocMarkup a (StringContext -> LaTeX) -parLatexMarkup ppId = Markup { -  markupParagraph            = \p v -> p v <> text "\\par" $$ text "", -  markupEmpty                = \_ -> empty, -  markupString               = \s v -> text (fixString v s), -  markupAppend               = \l r v -> l v <> r v, -  markupIdentifier           = markupId ppId, -  markupIdentifierUnchecked  = markupId (ppVerbOccName . fmap snd), -  markupModule               = \m _ -> let (mdl,_ref) = break (=='#') m in tt (text mdl), -  markupWarning              = \p v -> p v, -  markupEmphasis             = \p v -> emph (p v), -  markupBold                 = \p v -> bold (p v), -  markupMonospaced           = \p _ -> tt (p Mono), -  markupUnorderedList        = \p v -> itemizedList (map ($v) p) $$ text "", -  markupPic                  = \p _ -> markupPic p, -  markupMathInline           = \p _ -> markupMathInline p, -  markupMathDisplay          = \p _ -> markupMathDisplay p, -  markupOrderedList          = \p v -> enumeratedList (map ($v) p) $$ text "", -  markupDefList              = \l v -> descriptionList (map (\(a,b) -> (a v, b v)) l), -  markupCodeBlock            = \p _ -> quote (verb (p Verb)) $$ text "", -  markupHyperlink            = \(Hyperlink u l) p -> markupLink u (fmap ($p) l), -  markupAName                = \_ _ -> empty, -  markupProperty             = \p _ -> quote $ verb $ text p, -  markupExample              = \e _ -> quote $ verb $ text $ unlines $ map exampleToString e, -  markupHeader               = \(Header l h) p -> header l (h p), -  markupTable                = \(Table h b) p -> table h b p +latexMarkup :: HasOccName a => DocMarkup (Wrap a) (StringContext -> LaTeX -> LaTeX) +latexMarkup = Markup +  { markupParagraph            = \p v -> blockElem (p v (text "\\par")) +  , markupEmpty                = \_ -> id +  , markupString               = \s v -> inlineElem (text (fixString v s)) +  , markupAppend               = \l r v -> l v . r v +  , markupIdentifier           = \i v -> inlineElem (markupId v (fmap occName i)) +  , markupIdentifierUnchecked  = \i v -> inlineElem (markupId v (fmap snd i)) +  , markupModule               = \m _ -> inlineElem (let (mdl,_ref) = break (=='#') m in (tt (text mdl))) +  , markupWarning              = \p v -> p v +  , markupEmphasis             = \p v -> inlineElem (emph (p v empty)) +  , markupBold                 = \p v -> inlineElem (bold (p v empty)) +  , markupMonospaced           = \p v -> inlineElem (markupMonospace p v) +  , markupUnorderedList        = \p v -> blockElem (itemizedList (map (\p' -> p' v empty) p)) +  , markupPic                  = \p _ -> inlineElem (markupPic p) +  , markupMathInline           = \p _ -> inlineElem (markupMathInline p) +  , markupMathDisplay          = \p _ -> blockElem (markupMathDisplay p) +  , markupOrderedList          = \p v -> blockElem (enumeratedList (map (\p' -> p' v empty) p)) +  , markupDefList              = \l v -> blockElem (descriptionList (map (\(a,b) -> (a v empty, b v empty)) l)) +  , markupCodeBlock            = \p _ -> blockElem (quote (verb (p Verb empty))) +  , markupHyperlink            = \(Hyperlink u l) v -> inlineElem (markupLink u (fmap (\x -> x v empty) l)) +  , markupAName                = \_ _ -> id -- TODO +  , markupProperty             = \p _ -> blockElem (quote (verb (text p))) +  , markupExample              = \e _ -> blockElem (quote (verb (text $ unlines $ map exampleToString e))) +  , markupHeader               = \(Header l h) p -> blockElem (header l (h p empty)) +  , markupTable                = \(Table h b) p -> blockElem (table h b p)    }    where +    blockElem :: LaTeX -> LaTeX -> LaTeX +    blockElem = ($$) + +    inlineElem :: LaTeX -> LaTeX -> LaTeX +    inlineElem = (<>) +      header 1 d = text "\\section*" <> braces d      header 2 d = text "\\subsection*" <> braces d      header l d @@ -1222,6 +1240,9 @@ parLatexMarkup ppId = Markup {      fixString Verb  s = s      fixString Mono  s = latexMonoFilter s +    markupMonospace p Verb = p Verb empty +    markupMonospace p _ = tt (p Mono empty) +      markupLink url mLabel = case mLabel of        Just label -> text "\\href" <> braces (text url) <> braces label        Nothing    -> text "\\url"  <> braces (text url) @@ -1238,35 +1259,28 @@ parLatexMarkup ppId = Markup {      markupMathDisplay mathjax = text "\\[" <> text mathjax <> text "\\]" -    markupId ppId_ id v = +    markupId v wrappedOcc =        case v of -        Verb  -> theid -        Mono  -> theid -        Plain -> text "\\haddockid" <> braces theid -      where theid = ppId_ id - - -latexMarkup :: DocMarkup (Wrap DocName) (StringContext -> LaTeX) -latexMarkup = parLatexMarkup ppVerbDocName - - -rdrLatexMarkup :: DocMarkup (Wrap RdrName) (StringContext -> LaTeX) -rdrLatexMarkup = parLatexMarkup ppVerbRdrName - +        Verb  -> text i +        Mono  -> text "\\haddockid" <> braces (text . latexMonoFilter $ i) +        Plain -> text "\\haddockid" <> braces (text . latexFilter $ i) +      where i = showWrapped occNameString wrappedOcc  docToLaTeX :: Doc DocName -> LaTeX -docToLaTeX doc = markup latexMarkup doc Plain - +docToLaTeX doc = markup latexMarkup doc Plain empty  documentationToLaTeX :: Documentation DocName -> Maybe LaTeX  documentationToLaTeX = fmap docToLaTeX . fmap _doc . combineDocumentation  rdrDocToLaTeX :: Doc RdrName -> LaTeX -rdrDocToLaTeX doc = markup rdrLatexMarkup doc Plain +rdrDocToLaTeX doc = markup latexMarkup doc Plain empty -data StringContext = Plain | Verb | Mono +data StringContext +  = Plain  -- ^ all special characters have to be escape +  | Mono   -- ^ on top of special characters, escape space chraacters +  | Verb   -- ^ don't escape anything  latexStripTrailingWhitespace :: Doc a -> Doc a @@ -1291,23 +1305,23 @@ latexStripTrailingWhitespace other = other  itemizedList :: [LaTeX] -> LaTeX  itemizedList items = -  text "\\begin{itemize}" $$ +  text "\\vbox{\\begin{itemize}" $$    vcat (map (text "\\item" $$) items) $$ -  text "\\end{itemize}" +  text "\\end{itemize}}"  enumeratedList :: [LaTeX] -> LaTeX  enumeratedList items = -  text "\\begin{enumerate}" $$ +  text "\\vbox{\\begin{enumerate}" $$    vcat (map (text "\\item " $$) items) $$ -  text "\\end{enumerate}" +  text "\\end{enumerate}}"  descriptionList :: [(LaTeX,LaTeX)] -> LaTeX  descriptionList items = -  text "\\begin{description}" $$ -  vcat (map (\(a,b) -> text "\\item" <> brackets a <+> b) items) $$ -  text "\\end{description}" +  text "\\vbox{\\begin{description}" $$ +  vcat (map (\(a,b) -> text "\\item" <> brackets a <> text "\\hfill \\par" $$ b) items) $$ +  text "\\end{description}}"  tt :: LaTeX -> LaTeX @@ -1315,8 +1329,8 @@ tt ltx = text "\\haddocktt" <> braces ltx  decltt :: LaTeX -> LaTeX -decltt ltx = text "\\haddockdecltt" <> braces ltx - +decltt ltx = text "\\haddockdecltt" <> braces (text filtered) +  where filtered = latexMonoFilter (latex2String ltx)  emph :: LaTeX -> LaTeX  emph ltx = text "\\emph" <> braces ltx @@ -1324,6 +1338,12 @@ emph ltx = text "\\emph" <> braces ltx  bold :: LaTeX -> LaTeX  bold ltx = text "\\textbf" <> braces ltx +-- TODO: @verbatim@ is too much since +-- +--   * Haddock supports markup _inside_ of codeblocks. Right now, the LaTeX +--     representing that markup gets printed verbatim +--   * Verbatim environments are not supported everywhere (example: not nested +--     inside a @tabulary@ environment)  verb :: LaTeX -> LaTeX  verb doc = text "{\\haddockverb\\begin{verbatim}" $$ doc <> text "\\end{verbatim}}"     -- NB. swallow a trailing \n in the verbatim text by appending the diff --git a/latex-test/Main.hs b/latex-test/Main.hs index 8d2a4922..17ae8ae8 100755 --- a/latex-test/Main.hs +++ b/latex-test/Main.hs @@ -19,7 +19,9 @@ checkConfig = CheckConfig  dirConfig :: DirConfig -dirConfig = defaultDirConfig $ takeDirectory __FILE__ +dirConfig = (defaultDirConfig $ takeDirectory __FILE__) +  { dcfgCheckIgnore = (`elem` ["haddock.sty", "main.tex"]) . takeFileName +  }  main :: IO () diff --git a/latex-test/ref/ConstructorArgs/ConstructorArgs.tex b/latex-test/ref/ConstructorArgs/ConstructorArgs.tex index 44304f47..053d2e41 100644 --- a/latex-test/ref/ConstructorArgs/ConstructorArgs.tex +++ b/latex-test/ref/ConstructorArgs/ConstructorArgs.tex @@ -3,15 +3,16 @@  \haddockbeginheader  {\haddockverb\begin{verbatim}  module ConstructorArgs ( -    Foo((:|), Rec, Baz, Boa, (:*), x, y),  Boo(Foo, Foa, Fo, Fo'),  pattern Bo,  -    pattern Bo' +    Foo((:|), Rec, Baz, Boa, (:*), x, y), Boo(Foo, Foa, Fo, Fo'), +    pattern Bo, pattern Bo'    ) where\end{verbatim}}  \haddockendheader  \begin{haddockdesc}  \item[\begin{tabular}{@{}l} -data\ Foo -\end{tabular}]\haddockbegindoc +data Foo +\end{tabular}] +{\haddockbegindoc  \enspace \emph{Constructors}\par  \haddockbeginconstrs  \haddockdecltt{=} & \haddockdecltt{Rec} & doc on a record \\ @@ -25,12 +26,13 @@ data\ Foo  \haddockdecltt{|} & \haddockdecltt{(:*)} & doc on the \haddockid{:*} constructor \\                                             & \qquad \haddockdecltt{Int} & doc on the \haddockid{Int} field of the \haddockid{:*} constructor \\                                             & \qquad \haddockdecltt{String} & doc on the \haddockid{String} field of the \haddockid{:*} constructor \\ -\end{tabulary}\par +\end{tabulary}\par}  \end{haddockdesc}  \begin{haddockdesc}  \item[\begin{tabular}{@{}l} -data\ Boo\ where -\end{tabular}]\haddockbegindoc +data Boo where +\end{tabular}] +{\haddockbegindoc  \enspace \emph{Constructors}\par  \haddockbeginconstrs  & \haddockdecltt{Foo} & Info about a \haddockid{Foo} \\ @@ -46,24 +48,24 @@ data\ Boo\ where                                 & \qquad \haddockdecltt{->} \enspace \haddockdecltt{String} & a \haddockid{String} \\                                 & \qquad \haddockdecltt{->} \enspace \haddockdecltt{Boo} & a \haddockid{Boo} \\  & \haddockdecltt{pattern Fo' :: Boo} & Bundled and no argument docs \\ -\end{tabulary}\par +\end{tabulary}\par}  \end{haddockdesc}  \begin{haddockdesc}  \item[\begin{tabular}{@{}l} -pattern\ Bo -\end{tabular}]\haddockbegindoc +pattern Bo +\end{tabular}] +{\haddockbegindoc  \haddockbeginargs  \haddockdecltt{::} & \haddockdecltt{Int} & an \haddockid{Int} \\  \haddockdecltt{->} & \haddockdecltt{String} & a \haddockid{String} \\  \haddockdecltt{->} & \haddockdecltt{Boo} & a \haddockid{Boo} pattern \\  \end{tabulary}\par -Info about not-bundled \haddockid{Bo}\par - +Info about not-bundled \haddockid{Bo}\par}  \end{haddockdesc}  \begin{haddockdesc}  \item[\begin{tabular}{@{}l} -pattern\ Bo'\ ::\ Int\ ->\ String\ ->\ Boo -\end{tabular}]\haddockbegindoc -Not bunded and no argument docs\par - +pattern Bo' :: Int -> String -> Boo +\end{tabular}] +{\haddockbegindoc +Not bunded and no argument docs\par}  \end{haddockdesc}
\ No newline at end of file diff --git a/latex-test/ref/ConstructorArgs/haddock.sty b/latex-test/ref/ConstructorArgs/haddock.sty deleted file mode 100644 index 6e031a98..00000000 --- a/latex-test/ref/ConstructorArgs/haddock.sty +++ /dev/null @@ -1,57 +0,0 @@ -% Default Haddock style definitions.  To use your own style, invoke -% Haddock with the option --latex-style=mystyle. - -\usepackage{tabulary} % see below - -% make hyperlinks in the PDF, and add an expandabale index -\usepackage[pdftex,bookmarks=true]{hyperref} - -\newenvironment{haddocktitle} -  {\begin{center}\bgroup\large\bfseries} -  {\egroup\end{center}} -\newenvironment{haddockprologue}{\vspace{1in}}{} - -\newcommand{\haddockmoduleheading}[1]{\chapter{\texttt{#1}}} - -\newcommand{\haddockbeginheader}{\hrulefill} -\newcommand{\haddockendheader}{\noindent\hrulefill} - -% a little gap before the ``Methods'' header -\newcommand{\haddockpremethods}{\vspace{2ex}} - -% inserted before \\begin{verbatim} -\newcommand{\haddockverb}{\small} - -% an identifier: add an index entry -\newcommand{\haddockid}[1]{\haddocktt{#1}\index{#1@\texttt{#1}}} - -% The tabulary environment lets us have a column that takes up ``the -% rest of the space''.  Unfortunately it doesn't allow -% the \end{tabulary} to be in the expansion of a macro, it must appear -% literally in the document text, so Haddock inserts -% the \end{tabulary} itself. -\newcommand{\haddockbeginconstrs}{\begin{tabulary}{\linewidth}{@{}llJ@{}}} -\newcommand{\haddockbeginargs}{\begin{tabulary}{\linewidth}{@{}llJ@{}}} - -\newcommand{\haddocktt}[1]{{\small \texttt{#1}}} -\newcommand{\haddockdecltt}[1]{{\small\bfseries \texttt{#1}}} - -\makeatletter -\newenvironment{haddockdesc} -               {\list{}{\labelwidth\z@ \itemindent-\leftmargin -                        \let\makelabel\haddocklabel}} -               {\endlist} -\newcommand*\haddocklabel[1]{\hspace\labelsep\haddockdecltt{#1}} -\makeatother - -% after a declaration, start a new line for the documentation. -% Otherwise, the documentation starts right after the declaration, -% because we're using the list environment and the declaration is the -% ``label''.  I tried making this newline part of the label, but -% couldn't get that to work reliably (the space seemed to stretch -% sometimes). -\newcommand{\haddockbegindoc}{\hfill\\[1ex]} - -% spacing between paragraphs and no \parindent looks better -\parskip=10pt plus2pt minus2pt -\setlength{\parindent}{0cm} diff --git a/latex-test/ref/ConstructorArgs/main.tex b/latex-test/ref/ConstructorArgs/main.tex deleted file mode 100644 index 80f639c5..00000000 --- a/latex-test/ref/ConstructorArgs/main.tex +++ /dev/null @@ -1,11 +0,0 @@ -\documentclass{book} -\usepackage{haddock} -\begin{document} -\begin{titlepage} -\begin{haddocktitle} - -\end{haddocktitle} -\end{titlepage} -\tableofcontents -\input{ConstructorArgs} -\end{document}
\ No newline at end of file diff --git a/latex-test/ref/DefaultSignatures/DefaultSignatures.tex b/latex-test/ref/DefaultSignatures/DefaultSignatures.tex index 4dbcda49..162f5014 100644 --- a/latex-test/ref/DefaultSignatures/DefaultSignatures.tex +++ b/latex-test/ref/DefaultSignatures/DefaultSignatures.tex @@ -9,33 +9,33 @@ module DefaultSignatures (  \begin{haddockdesc}  \item[\begin{tabular}{@{}l} -class\ Foo\ a\ where -\end{tabular}]\haddockbegindoc +class Foo a where +\end{tabular}] +{\haddockbegindoc  Documentation for Foo.\par -  \haddockpremethods{}\emph{Methods}  \begin{haddockdesc}  \item[\begin{tabular}{@{}l} -bar,\ baz\ ::\ a\ ->\ String -\end{tabular}]\haddockbegindoc -Documentation for bar and baz.\par - +bar, baz :: a -> String +\end{tabular}] +{\haddockbegindoc +Documentation for bar and baz.\par}  \end{haddockdesc}  \begin{haddockdesc}  \item[\begin{tabular}{@{}l} -default\ bar\ ::\ Show\ a\ =>\ a\ ->\ String +default bar :: Show a => a -> String  \end{tabular}]  \end{haddockdesc}  \begin{haddockdesc}  \item[\begin{tabular}{@{}l} -baz'\ ::\ String\ ->\ a -\end{tabular}]\haddockbegindoc -Documentation for baz'.\par - +baz' :: String -> a +\end{tabular}] +{\haddockbegindoc +Documentation for baz'.\par}  \end{haddockdesc}  \begin{haddockdesc}  \item[\begin{tabular}{@{}l} -default\ baz'\ ::\ Read\ a\ =>\ String\ ->\ a +default baz' :: Read a => String -> a  \end{tabular}] -\end{haddockdesc} +\end{haddockdesc}}  \end{haddockdesc}
\ No newline at end of file diff --git a/latex-test/ref/DefaultSignatures/haddock.sty b/latex-test/ref/DefaultSignatures/haddock.sty deleted file mode 100644 index 6e031a98..00000000 --- a/latex-test/ref/DefaultSignatures/haddock.sty +++ /dev/null @@ -1,57 +0,0 @@ -% Default Haddock style definitions.  To use your own style, invoke -% Haddock with the option --latex-style=mystyle. - -\usepackage{tabulary} % see below - -% make hyperlinks in the PDF, and add an expandabale index -\usepackage[pdftex,bookmarks=true]{hyperref} - -\newenvironment{haddocktitle} -  {\begin{center}\bgroup\large\bfseries} -  {\egroup\end{center}} -\newenvironment{haddockprologue}{\vspace{1in}}{} - -\newcommand{\haddockmoduleheading}[1]{\chapter{\texttt{#1}}} - -\newcommand{\haddockbeginheader}{\hrulefill} -\newcommand{\haddockendheader}{\noindent\hrulefill} - -% a little gap before the ``Methods'' header -\newcommand{\haddockpremethods}{\vspace{2ex}} - -% inserted before \\begin{verbatim} -\newcommand{\haddockverb}{\small} - -% an identifier: add an index entry -\newcommand{\haddockid}[1]{\haddocktt{#1}\index{#1@\texttt{#1}}} - -% The tabulary environment lets us have a column that takes up ``the -% rest of the space''.  Unfortunately it doesn't allow -% the \end{tabulary} to be in the expansion of a macro, it must appear -% literally in the document text, so Haddock inserts -% the \end{tabulary} itself. -\newcommand{\haddockbeginconstrs}{\begin{tabulary}{\linewidth}{@{}llJ@{}}} -\newcommand{\haddockbeginargs}{\begin{tabulary}{\linewidth}{@{}llJ@{}}} - -\newcommand{\haddocktt}[1]{{\small \texttt{#1}}} -\newcommand{\haddockdecltt}[1]{{\small\bfseries \texttt{#1}}} - -\makeatletter -\newenvironment{haddockdesc} -               {\list{}{\labelwidth\z@ \itemindent-\leftmargin -                        \let\makelabel\haddocklabel}} -               {\endlist} -\newcommand*\haddocklabel[1]{\hspace\labelsep\haddockdecltt{#1}} -\makeatother - -% after a declaration, start a new line for the documentation. -% Otherwise, the documentation starts right after the declaration, -% because we're using the list environment and the declaration is the -% ``label''.  I tried making this newline part of the label, but -% couldn't get that to work reliably (the space seemed to stretch -% sometimes). -\newcommand{\haddockbegindoc}{\hfill\\[1ex]} - -% spacing between paragraphs and no \parindent looks better -\parskip=10pt plus2pt minus2pt -\setlength{\parindent}{0cm} diff --git a/latex-test/ref/DefaultSignatures/main.tex b/latex-test/ref/DefaultSignatures/main.tex deleted file mode 100644 index d30eb008..00000000 --- a/latex-test/ref/DefaultSignatures/main.tex +++ /dev/null @@ -1,11 +0,0 @@ -\documentclass{book} -\usepackage{haddock} -\begin{document} -\begin{titlepage} -\begin{haddocktitle} - -\end{haddocktitle} -\end{titlepage} -\tableofcontents -\input{DefaultSignatures} -\end{document}
\ No newline at end of file diff --git a/latex-test/ref/Deprecated/Deprecated.tex b/latex-test/ref/Deprecated/Deprecated.tex index fa8fc20a..0ae2410b 100644 --- a/latex-test/ref/Deprecated/Deprecated.tex +++ b/latex-test/ref/Deprecated/Deprecated.tex @@ -9,9 +9,9 @@ module Deprecated (  \begin{haddockdesc}  \item[\begin{tabular}{@{}l} -deprecated\ ::\ Int -\end{tabular}]\haddockbegindoc +deprecated :: Int +\end{tabular}] +{\haddockbegindoc  Deprecated: Don't use this\par -Docs for something deprecated\par - +Docs for something deprecated\par}  \end{haddockdesc}
\ No newline at end of file diff --git a/latex-test/ref/Deprecated/haddock.sty b/latex-test/ref/Deprecated/haddock.sty deleted file mode 100644 index 6e031a98..00000000 --- a/latex-test/ref/Deprecated/haddock.sty +++ /dev/null @@ -1,57 +0,0 @@ -% Default Haddock style definitions.  To use your own style, invoke -% Haddock with the option --latex-style=mystyle. - -\usepackage{tabulary} % see below - -% make hyperlinks in the PDF, and add an expandabale index -\usepackage[pdftex,bookmarks=true]{hyperref} - -\newenvironment{haddocktitle} -  {\begin{center}\bgroup\large\bfseries} -  {\egroup\end{center}} -\newenvironment{haddockprologue}{\vspace{1in}}{} - -\newcommand{\haddockmoduleheading}[1]{\chapter{\texttt{#1}}} - -\newcommand{\haddockbeginheader}{\hrulefill} -\newcommand{\haddockendheader}{\noindent\hrulefill} - -% a little gap before the ``Methods'' header -\newcommand{\haddockpremethods}{\vspace{2ex}} - -% inserted before \\begin{verbatim} -\newcommand{\haddockverb}{\small} - -% an identifier: add an index entry -\newcommand{\haddockid}[1]{\haddocktt{#1}\index{#1@\texttt{#1}}} - -% The tabulary environment lets us have a column that takes up ``the -% rest of the space''.  Unfortunately it doesn't allow -% the \end{tabulary} to be in the expansion of a macro, it must appear -% literally in the document text, so Haddock inserts -% the \end{tabulary} itself. -\newcommand{\haddockbeginconstrs}{\begin{tabulary}{\linewidth}{@{}llJ@{}}} -\newcommand{\haddockbeginargs}{\begin{tabulary}{\linewidth}{@{}llJ@{}}} - -\newcommand{\haddocktt}[1]{{\small \texttt{#1}}} -\newcommand{\haddockdecltt}[1]{{\small\bfseries \texttt{#1}}} - -\makeatletter -\newenvironment{haddockdesc} -               {\list{}{\labelwidth\z@ \itemindent-\leftmargin -                        \let\makelabel\haddocklabel}} -               {\endlist} -\newcommand*\haddocklabel[1]{\hspace\labelsep\haddockdecltt{#1}} -\makeatother - -% after a declaration, start a new line for the documentation. -% Otherwise, the documentation starts right after the declaration, -% because we're using the list environment and the declaration is the -% ``label''.  I tried making this newline part of the label, but -% couldn't get that to work reliably (the space seemed to stretch -% sometimes). -\newcommand{\haddockbegindoc}{\hfill\\[1ex]} - -% spacing between paragraphs and no \parindent looks better -\parskip=10pt plus2pt minus2pt -\setlength{\parindent}{0cm} diff --git a/latex-test/ref/Deprecated/main.tex b/latex-test/ref/Deprecated/main.tex deleted file mode 100644 index 76def1cd..00000000 --- a/latex-test/ref/Deprecated/main.tex +++ /dev/null @@ -1,11 +0,0 @@ -\documentclass{book} -\usepackage{haddock} -\begin{document} -\begin{titlepage} -\begin{haddocktitle} - -\end{haddocktitle} -\end{titlepage} -\tableofcontents -\input{Deprecated} -\end{document}
\ No newline at end of file diff --git a/latex-test/ref/Example/Example.tex b/latex-test/ref/Example/Example.tex new file mode 100644 index 00000000..11f7e734 --- /dev/null +++ b/latex-test/ref/Example/Example.tex @@ -0,0 +1,30 @@ +\haddockmoduleheading{Example} +\label{module:Example} +\haddockbeginheader +{\haddockverb\begin{verbatim} +module Example ( +    split +  ) where\end{verbatim}} +\haddockendheader + +\begin{haddockdesc} +\item[\begin{tabular}{@{}l} +split :: Int -> () +\end{tabular}] +{\haddockbegindoc +Example use.\par +\begin{quote} +{\haddockverb\begin{verbatim} +>>> split 1 +() + +\end{verbatim}} +\end{quote} +\begin{quote} +{\haddockverb\begin{verbatim} +>>> split 2 +() + +\end{verbatim}} +\end{quote}} +\end{haddockdesc}
\ No newline at end of file diff --git a/latex-test/ref/GadtConstructorArgs/GadtConstructorArgs.tex b/latex-test/ref/GadtConstructorArgs/GadtConstructorArgs.tex index 7aaf5512..9953ce55 100644 --- a/latex-test/ref/GadtConstructorArgs/GadtConstructorArgs.tex +++ b/latex-test/ref/GadtConstructorArgs/GadtConstructorArgs.tex @@ -9,17 +9,18 @@ module GadtConstructorArgs (  \begin{haddockdesc}  \item[\begin{tabular}{@{}l} -data\ Boo\ where -\end{tabular}]\haddockbegindoc +data Boo where +\end{tabular}] +{\haddockbegindoc  \enspace \emph{Constructors}\par  \haddockbeginconstrs  & \haddockdecltt{Fot} & \\ -                        & \qquad \haddockdecltt{:: \{} \enspace \haddockdecltt{x :: Int} & an \haddockid{x} \\ +                        & \qquad \haddockdecltt{:: {\char '173}} \enspace \haddockdecltt{x :: Int} & an \haddockid{x} \\                          & \qquad \haddockdecltt{\ \ \ \ ,} \enspace \haddockdecltt{y :: Int} & a \haddockid{y} \\ -                        & \qquad \haddockdecltt{\ \ \ \ \} ->} \enspace \haddockdecltt{Boo} & \\ +                        & \qquad \haddockdecltt{\ \ \ \ {\char '175} ->} \enspace \haddockdecltt{Boo} & \\  & \haddockdecltt{Fob} & Record GADT with docs \\ -                        & \qquad \haddockdecltt{:: \{} \enspace \haddockdecltt{w :: Int} & a \haddockid{w} \\ +                        & \qquad \haddockdecltt{:: {\char '173}} \enspace \haddockdecltt{w :: Int} & a \haddockid{w} \\                          & \qquad \haddockdecltt{\ \ \ \ ,} \enspace \haddockdecltt{z :: Int} & a \haddockid{z} \\ -                        & \qquad \haddockdecltt{\ \ \ \ \} ->} \enspace \haddockdecltt{Boo} & a \haddockid{Boo} \\ -\end{tabulary}\par +                        & \qquad \haddockdecltt{\ \ \ \ {\char '175} ->} \enspace \haddockdecltt{Boo} & a \haddockid{Boo} \\ +\end{tabulary}\par}  \end{haddockdesc}
\ No newline at end of file diff --git a/latex-test/ref/GadtConstructorArgs/haddock.sty b/latex-test/ref/GadtConstructorArgs/haddock.sty deleted file mode 100644 index 6e031a98..00000000 --- a/latex-test/ref/GadtConstructorArgs/haddock.sty +++ /dev/null @@ -1,57 +0,0 @@ -% Default Haddock style definitions.  To use your own style, invoke -% Haddock with the option --latex-style=mystyle. - -\usepackage{tabulary} % see below - -% make hyperlinks in the PDF, and add an expandabale index -\usepackage[pdftex,bookmarks=true]{hyperref} - -\newenvironment{haddocktitle} -  {\begin{center}\bgroup\large\bfseries} -  {\egroup\end{center}} -\newenvironment{haddockprologue}{\vspace{1in}}{} - -\newcommand{\haddockmoduleheading}[1]{\chapter{\texttt{#1}}} - -\newcommand{\haddockbeginheader}{\hrulefill} -\newcommand{\haddockendheader}{\noindent\hrulefill} - -% a little gap before the ``Methods'' header -\newcommand{\haddockpremethods}{\vspace{2ex}} - -% inserted before \\begin{verbatim} -\newcommand{\haddockverb}{\small} - -% an identifier: add an index entry -\newcommand{\haddockid}[1]{\haddocktt{#1}\index{#1@\texttt{#1}}} - -% The tabulary environment lets us have a column that takes up ``the -% rest of the space''.  Unfortunately it doesn't allow -% the \end{tabulary} to be in the expansion of a macro, it must appear -% literally in the document text, so Haddock inserts -% the \end{tabulary} itself. -\newcommand{\haddockbeginconstrs}{\begin{tabulary}{\linewidth}{@{}llJ@{}}} -\newcommand{\haddockbeginargs}{\begin{tabulary}{\linewidth}{@{}llJ@{}}} - -\newcommand{\haddocktt}[1]{{\small \texttt{#1}}} -\newcommand{\haddockdecltt}[1]{{\small\bfseries \texttt{#1}}} - -\makeatletter -\newenvironment{haddockdesc} -               {\list{}{\labelwidth\z@ \itemindent-\leftmargin -                        \let\makelabel\haddocklabel}} -               {\endlist} -\newcommand*\haddocklabel[1]{\hspace\labelsep\haddockdecltt{#1}} -\makeatother - -% after a declaration, start a new line for the documentation. -% Otherwise, the documentation starts right after the declaration, -% because we're using the list environment and the declaration is the -% ``label''.  I tried making this newline part of the label, but -% couldn't get that to work reliably (the space seemed to stretch -% sometimes). -\newcommand{\haddockbegindoc}{\hfill\\[1ex]} - -% spacing between paragraphs and no \parindent looks better -\parskip=10pt plus2pt minus2pt -\setlength{\parindent}{0cm} diff --git a/latex-test/ref/GadtConstructorArgs/main.tex b/latex-test/ref/GadtConstructorArgs/main.tex deleted file mode 100644 index dc1a1aa3..00000000 --- a/latex-test/ref/GadtConstructorArgs/main.tex +++ /dev/null @@ -1,11 +0,0 @@ -\documentclass{book} -\usepackage{haddock} -\begin{document} -\begin{titlepage} -\begin{haddocktitle} - -\end{haddocktitle} -\end{titlepage} -\tableofcontents -\input{GadtConstructorArgs} -\end{document}
\ No newline at end of file diff --git a/latex-test/ref/NamespacedIdentifier/NamespacedIdentifiers.tex b/latex-test/ref/NamespacedIdentifier/NamespacedIdentifiers.tex index f39bd0ec..44c052c6 100644 --- a/latex-test/ref/NamespacedIdentifier/NamespacedIdentifiers.tex +++ b/latex-test/ref/NamespacedIdentifier/NamespacedIdentifiers.tex @@ -3,39 +3,35 @@  \haddockbeginheader  {\haddockverb\begin{verbatim}  module NamespacedIdentifiers ( -    Foo(Bar),  Bar +    Foo(Bar), Bar    ) where\end{verbatim}}  \haddockendheader  \begin{haddockdesc}  \item[\begin{tabular}{@{}l} -data\ Foo -\end{tabular}]\haddockbegindoc +data Foo +\end{tabular}] +{\haddockbegindoc  A link to:\par -\begin{itemize} +\vbox{\begin{itemize}  \item  the type \haddockid{Bar}\par -  \item  the constructor \haddockid{Bar}\par -  \item  the unimported but qualified type \haddockid{A}\par -  \item  the unimported but qualified value \haddockid{A}\par - -\end{itemize} - +\end{itemize}}  \enspace \emph{Constructors}\par  \haddockbeginconstrs  \haddockdecltt{=} & \haddockdecltt{Bar} & \\ -\end{tabulary}\par +\end{tabulary}\par}  \end{haddockdesc}  \begin{haddockdesc}  \item[\begin{tabular}{@{}l} -data\ Bar -\end{tabular}]\haddockbegindoc -A link to the value \haddocktt{Foo} (which shouldn't exist).\par - +data Bar +\end{tabular}] +{\haddockbegindoc +A link to the value \haddocktt{Foo} (which shouldn't exist).\par}  \end{haddockdesc}
\ No newline at end of file diff --git a/latex-test/ref/NamespacedIdentifier/haddock.sty b/latex-test/ref/NamespacedIdentifier/haddock.sty deleted file mode 100644 index 6e031a98..00000000 --- a/latex-test/ref/NamespacedIdentifier/haddock.sty +++ /dev/null @@ -1,57 +0,0 @@ -% Default Haddock style definitions.  To use your own style, invoke -% Haddock with the option --latex-style=mystyle. - -\usepackage{tabulary} % see below - -% make hyperlinks in the PDF, and add an expandabale index -\usepackage[pdftex,bookmarks=true]{hyperref} - -\newenvironment{haddocktitle} -  {\begin{center}\bgroup\large\bfseries} -  {\egroup\end{center}} -\newenvironment{haddockprologue}{\vspace{1in}}{} - -\newcommand{\haddockmoduleheading}[1]{\chapter{\texttt{#1}}} - -\newcommand{\haddockbeginheader}{\hrulefill} -\newcommand{\haddockendheader}{\noindent\hrulefill} - -% a little gap before the ``Methods'' header -\newcommand{\haddockpremethods}{\vspace{2ex}} - -% inserted before \\begin{verbatim} -\newcommand{\haddockverb}{\small} - -% an identifier: add an index entry -\newcommand{\haddockid}[1]{\haddocktt{#1}\index{#1@\texttt{#1}}} - -% The tabulary environment lets us have a column that takes up ``the -% rest of the space''.  Unfortunately it doesn't allow -% the \end{tabulary} to be in the expansion of a macro, it must appear -% literally in the document text, so Haddock inserts -% the \end{tabulary} itself. -\newcommand{\haddockbeginconstrs}{\begin{tabulary}{\linewidth}{@{}llJ@{}}} -\newcommand{\haddockbeginargs}{\begin{tabulary}{\linewidth}{@{}llJ@{}}} - -\newcommand{\haddocktt}[1]{{\small \texttt{#1}}} -\newcommand{\haddockdecltt}[1]{{\small\bfseries \texttt{#1}}} - -\makeatletter -\newenvironment{haddockdesc} -               {\list{}{\labelwidth\z@ \itemindent-\leftmargin -                        \let\makelabel\haddocklabel}} -               {\endlist} -\newcommand*\haddocklabel[1]{\hspace\labelsep\haddockdecltt{#1}} -\makeatother - -% after a declaration, start a new line for the documentation. -% Otherwise, the documentation starts right after the declaration, -% because we're using the list environment and the declaration is the -% ``label''.  I tried making this newline part of the label, but -% couldn't get that to work reliably (the space seemed to stretch -% sometimes). -\newcommand{\haddockbegindoc}{\hfill\\[1ex]} - -% spacing between paragraphs and no \parindent looks better -\parskip=10pt plus2pt minus2pt -\setlength{\parindent}{0cm} diff --git a/latex-test/ref/NamespacedIdentifier/main.tex b/latex-test/ref/NamespacedIdentifier/main.tex deleted file mode 100644 index 75493e12..00000000 --- a/latex-test/ref/NamespacedIdentifier/main.tex +++ /dev/null @@ -1,11 +0,0 @@ -\documentclass{book} -\usepackage{haddock} -\begin{document} -\begin{titlepage} -\begin{haddocktitle} - -\end{haddocktitle} -\end{titlepage} -\tableofcontents -\input{NamespacedIdentifiers} -\end{document}
\ No newline at end of file diff --git a/latex-test/ref/Simple/Simple.tex b/latex-test/ref/Simple/Simple.tex index 5ba4712c..96e9338a 100644 --- a/latex-test/ref/Simple/Simple.tex +++ b/latex-test/ref/Simple/Simple.tex @@ -9,8 +9,8 @@ module Simple (  \begin{haddockdesc}  \item[\begin{tabular}{@{}l} -foo\ ::\ t -\end{tabular}]\haddockbegindoc -This is foo.\par - +foo :: t +\end{tabular}] +{\haddockbegindoc +This is foo.\par}  \end{haddockdesc}
\ No newline at end of file diff --git a/latex-test/ref/Simple/haddock.sty b/latex-test/ref/Simple/haddock.sty deleted file mode 100644 index 6e031a98..00000000 --- a/latex-test/ref/Simple/haddock.sty +++ /dev/null @@ -1,57 +0,0 @@ -% Default Haddock style definitions.  To use your own style, invoke -% Haddock with the option --latex-style=mystyle. - -\usepackage{tabulary} % see below - -% make hyperlinks in the PDF, and add an expandabale index -\usepackage[pdftex,bookmarks=true]{hyperref} - -\newenvironment{haddocktitle} -  {\begin{center}\bgroup\large\bfseries} -  {\egroup\end{center}} -\newenvironment{haddockprologue}{\vspace{1in}}{} - -\newcommand{\haddockmoduleheading}[1]{\chapter{\texttt{#1}}} - -\newcommand{\haddockbeginheader}{\hrulefill} -\newcommand{\haddockendheader}{\noindent\hrulefill} - -% a little gap before the ``Methods'' header -\newcommand{\haddockpremethods}{\vspace{2ex}} - -% inserted before \\begin{verbatim} -\newcommand{\haddockverb}{\small} - -% an identifier: add an index entry -\newcommand{\haddockid}[1]{\haddocktt{#1}\index{#1@\texttt{#1}}} - -% The tabulary environment lets us have a column that takes up ``the -% rest of the space''.  Unfortunately it doesn't allow -% the \end{tabulary} to be in the expansion of a macro, it must appear -% literally in the document text, so Haddock inserts -% the \end{tabulary} itself. -\newcommand{\haddockbeginconstrs}{\begin{tabulary}{\linewidth}{@{}llJ@{}}} -\newcommand{\haddockbeginargs}{\begin{tabulary}{\linewidth}{@{}llJ@{}}} - -\newcommand{\haddocktt}[1]{{\small \texttt{#1}}} -\newcommand{\haddockdecltt}[1]{{\small\bfseries \texttt{#1}}} - -\makeatletter -\newenvironment{haddockdesc} -               {\list{}{\labelwidth\z@ \itemindent-\leftmargin -                        \let\makelabel\haddocklabel}} -               {\endlist} -\newcommand*\haddocklabel[1]{\hspace\labelsep\haddockdecltt{#1}} -\makeatother - -% after a declaration, start a new line for the documentation. -% Otherwise, the documentation starts right after the declaration, -% because we're using the list environment and the declaration is the -% ``label''.  I tried making this newline part of the label, but -% couldn't get that to work reliably (the space seemed to stretch -% sometimes). -\newcommand{\haddockbegindoc}{\hfill\\[1ex]} - -% spacing between paragraphs and no \parindent looks better -\parskip=10pt plus2pt minus2pt -\setlength{\parindent}{0cm} diff --git a/latex-test/ref/Simple/main.tex b/latex-test/ref/Simple/main.tex deleted file mode 100644 index 36536981..00000000 --- a/latex-test/ref/Simple/main.tex +++ /dev/null @@ -1,11 +0,0 @@ -\documentclass{book} -\usepackage{haddock} -\begin{document} -\begin{titlepage} -\begin{haddocktitle} - -\end{haddocktitle} -\end{titlepage} -\tableofcontents -\input{Simple} -\end{document}
\ No newline at end of file diff --git a/latex-test/ref/TypeFamilies3/TypeFamilies3.tex b/latex-test/ref/TypeFamilies3/TypeFamilies3.tex index 2a8ad297..d8787704 100644 --- a/latex-test/ref/TypeFamilies3/TypeFamilies3.tex +++ b/latex-test/ref/TypeFamilies3/TypeFamilies3.tex @@ -3,42 +3,42 @@  \haddockbeginheader  {\haddockverb\begin{verbatim}  module TypeFamilies3 ( -    Foo,  Bar,  Baz(Baz3, Baz2, Baz1) +    Foo, Bar, Baz(Baz3, Baz2, Baz1)    ) where\end{verbatim}}  \haddockendheader  \begin{haddockdesc}  \item[\begin{tabular}{@{}l} -type\ family\ Foo\ a\ where -\end{tabular}]\haddockbegindoc +type family Foo a where +\end{tabular}] +{\haddockbegindoc  \haddockbeginargs  \haddockdecltt{Foo () = Int} \\ -\haddockdecltt{Foo \_ = ()} \\ +\haddockdecltt{Foo {\char '137} = ()} \\  \end{tabulary}\par -A closed type family\par - +A closed type family\par}  \end{haddockdesc}  \begin{haddockdesc}  \item[\begin{tabular}{@{}l} -type\ family\ Bar\ a -\end{tabular}]\haddockbegindoc -An open family\par - +type family Bar a +\end{tabular}] +{\haddockbegindoc +An open family\par}  \end{haddockdesc}  \begin{haddockdesc}  \item[\begin{tabular}{@{}l} -type\ instance\ Bar\ Int\ =\ ()\\type\ instance\ Bar\ ()\ =\ Int +type instance Bar Int = ()\\type instance Bar () = Int  \end{tabular}]  \end{haddockdesc}  \begin{haddockdesc}  \item[\begin{tabular}{@{}l} -data\ family\ Baz\ a -\end{tabular}]\haddockbegindoc -A data family\par - +data family Baz a +\end{tabular}] +{\haddockbegindoc +A data family\par}  \end{haddockdesc}  \begin{haddockdesc}  \item[\begin{tabular}{@{}l} -newtype\ instance\ Baz\ Double\\data\ instance\ Baz\ Int\\data\ instance\ Baz\ () +newtype instance Baz Double\\data instance Baz Int\\data instance Baz ()  \end{tabular}]  \end{haddockdesc}
\ No newline at end of file diff --git a/latex-test/ref/TypeFamilies3/haddock.sty b/latex-test/ref/TypeFamilies3/haddock.sty deleted file mode 100644 index 6e031a98..00000000 --- a/latex-test/ref/TypeFamilies3/haddock.sty +++ /dev/null @@ -1,57 +0,0 @@ -% Default Haddock style definitions.  To use your own style, invoke -% Haddock with the option --latex-style=mystyle. - -\usepackage{tabulary} % see below - -% make hyperlinks in the PDF, and add an expandabale index -\usepackage[pdftex,bookmarks=true]{hyperref} - -\newenvironment{haddocktitle} -  {\begin{center}\bgroup\large\bfseries} -  {\egroup\end{center}} -\newenvironment{haddockprologue}{\vspace{1in}}{} - -\newcommand{\haddockmoduleheading}[1]{\chapter{\texttt{#1}}} - -\newcommand{\haddockbeginheader}{\hrulefill} -\newcommand{\haddockendheader}{\noindent\hrulefill} - -% a little gap before the ``Methods'' header -\newcommand{\haddockpremethods}{\vspace{2ex}} - -% inserted before \\begin{verbatim} -\newcommand{\haddockverb}{\small} - -% an identifier: add an index entry -\newcommand{\haddockid}[1]{\haddocktt{#1}\index{#1@\texttt{#1}}} - -% The tabulary environment lets us have a column that takes up ``the -% rest of the space''.  Unfortunately it doesn't allow -% the \end{tabulary} to be in the expansion of a macro, it must appear -% literally in the document text, so Haddock inserts -% the \end{tabulary} itself. -\newcommand{\haddockbeginconstrs}{\begin{tabulary}{\linewidth}{@{}llJ@{}}} -\newcommand{\haddockbeginargs}{\begin{tabulary}{\linewidth}{@{}llJ@{}}} - -\newcommand{\haddocktt}[1]{{\small \texttt{#1}}} -\newcommand{\haddockdecltt}[1]{{\small\bfseries \texttt{#1}}} - -\makeatletter -\newenvironment{haddockdesc} -               {\list{}{\labelwidth\z@ \itemindent-\leftmargin -                        \let\makelabel\haddocklabel}} -               {\endlist} -\newcommand*\haddocklabel[1]{\hspace\labelsep\haddockdecltt{#1}} -\makeatother - -% after a declaration, start a new line for the documentation. -% Otherwise, the documentation starts right after the declaration, -% because we're using the list environment and the declaration is the -% ``label''.  I tried making this newline part of the label, but -% couldn't get that to work reliably (the space seemed to stretch -% sometimes). -\newcommand{\haddockbegindoc}{\hfill\\[1ex]} - -% spacing between paragraphs and no \parindent looks better -\parskip=10pt plus2pt minus2pt -\setlength{\parindent}{0cm} diff --git a/latex-test/ref/TypeFamilies3/main.tex b/latex-test/ref/TypeFamilies3/main.tex deleted file mode 100644 index 2c98043c..00000000 --- a/latex-test/ref/TypeFamilies3/main.tex +++ /dev/null @@ -1,11 +0,0 @@ -\documentclass{book} -\usepackage{haddock} -\begin{document} -\begin{titlepage} -\begin{haddocktitle} - -\end{haddocktitle} -\end{titlepage} -\tableofcontents -\input{TypeFamilies3} -\end{document}
\ No newline at end of file diff --git a/latex-test/ref/UnboxedStuff/UnboxedStuff.tex b/latex-test/ref/UnboxedStuff/UnboxedStuff.tex index 36d5c12b..990d2a5b 100644 --- a/latex-test/ref/UnboxedStuff/UnboxedStuff.tex +++ b/latex-test/ref/UnboxedStuff/UnboxedStuff.tex @@ -3,34 +3,34 @@  \haddockbeginheader  {\haddockverb\begin{verbatim}  module UnboxedStuff ( -    X,  Y,  Z,  unboxedUnit,  unboxedTuple,  unboxedSum +    X, Y, Z, unboxedUnit, unboxedTuple, unboxedSum    ) where\end{verbatim}}  \haddockendheader  \begin{haddockdesc}  \item[\begin{tabular}{@{}l} -data\ X +data X  \end{tabular}]  \end{haddockdesc}  \begin{haddockdesc}  \item[\begin{tabular}{@{}l} -data\ Y +data Y  \end{tabular}]  \end{haddockdesc}  \begin{haddockdesc}  \item[\begin{tabular}{@{}l} -data\ Z +data Z  \end{tabular}]  \end{haddockdesc}  \section{Unboxed type constructors}  \begin{haddockdesc} -\item[ -unboxedUnit\ ::\ ({\char '43}\ {\char '43})\ ->\ ({\char '43}\ {\char '43}) -] -\item[ -unboxedTuple\ ::\ ({\char '43}\ X,\ Y\ {\char '43})\ ->\ ({\char '43}\ X,\ Y,\ Z\ {\char '43}) -] -\item[ -unboxedSum\ ::\ ({\char '43}\ X\ |\ Y\ {\char '43})\ ->\ ({\char '43}\ X\ |\ Y\ |\ Z\ {\char '43}) -] +\item[\begin{tabular}{@{}l} +unboxedUnit :: ({\char '43} {\char '43}) -> ({\char '43} {\char '43}) +\end{tabular}] +\item[\begin{tabular}{@{}l} +unboxedTuple :: ({\char '43} X, Y {\char '43}) -> ({\char '43} X, Y, Z {\char '43}) +\end{tabular}] +\item[\begin{tabular}{@{}l} +unboxedSum :: ({\char '43} X | Y {\char '43}) -> ({\char '43} X | Y | Z {\char '43}) +\end{tabular}]  \end{haddockdesc}
\ No newline at end of file diff --git a/latex-test/ref/UnboxedStuff/haddock.sty b/latex-test/ref/UnboxedStuff/haddock.sty deleted file mode 100644 index 6e031a98..00000000 --- a/latex-test/ref/UnboxedStuff/haddock.sty +++ /dev/null @@ -1,57 +0,0 @@ -% Default Haddock style definitions.  To use your own style, invoke -% Haddock with the option --latex-style=mystyle. - -\usepackage{tabulary} % see below - -% make hyperlinks in the PDF, and add an expandabale index -\usepackage[pdftex,bookmarks=true]{hyperref} - -\newenvironment{haddocktitle} -  {\begin{center}\bgroup\large\bfseries} -  {\egroup\end{center}} -\newenvironment{haddockprologue}{\vspace{1in}}{} - -\newcommand{\haddockmoduleheading}[1]{\chapter{\texttt{#1}}} - -\newcommand{\haddockbeginheader}{\hrulefill} -\newcommand{\haddockendheader}{\noindent\hrulefill} - -% a little gap before the ``Methods'' header -\newcommand{\haddockpremethods}{\vspace{2ex}} - -% inserted before \\begin{verbatim} -\newcommand{\haddockverb}{\small} - -% an identifier: add an index entry -\newcommand{\haddockid}[1]{\haddocktt{#1}\index{#1@\texttt{#1}}} - -% The tabulary environment lets us have a column that takes up ``the -% rest of the space''.  Unfortunately it doesn't allow -% the \end{tabulary} to be in the expansion of a macro, it must appear -% literally in the document text, so Haddock inserts -% the \end{tabulary} itself. -\newcommand{\haddockbeginconstrs}{\begin{tabulary}{\linewidth}{@{}llJ@{}}} -\newcommand{\haddockbeginargs}{\begin{tabulary}{\linewidth}{@{}llJ@{}}} - -\newcommand{\haddocktt}[1]{{\small \texttt{#1}}} -\newcommand{\haddockdecltt}[1]{{\small\bfseries \texttt{#1}}} - -\makeatletter -\newenvironment{haddockdesc} -               {\list{}{\labelwidth\z@ \itemindent-\leftmargin -                        \let\makelabel\haddocklabel}} -               {\endlist} -\newcommand*\haddocklabel[1]{\hspace\labelsep\haddockdecltt{#1}} -\makeatother - -% after a declaration, start a new line for the documentation. -% Otherwise, the documentation starts right after the declaration, -% because we're using the list environment and the declaration is the -% ``label''.  I tried making this newline part of the label, but -% couldn't get that to work reliably (the space seemed to stretch -% sometimes). -\newcommand{\haddockbegindoc}{\hfill\\[1ex]} - -% spacing between paragraphs and no \parindent looks better -\parskip=10pt plus2pt minus2pt -\setlength{\parindent}{0cm} diff --git a/latex-test/ref/UnboxedStuff/main.tex b/latex-test/ref/UnboxedStuff/main.tex deleted file mode 100644 index e34c5f14..00000000 --- a/latex-test/ref/UnboxedStuff/main.tex +++ /dev/null @@ -1,11 +0,0 @@ -\documentclass{book} -\usepackage{haddock} -\begin{document} -\begin{titlepage} -\begin{haddocktitle} - -\end{haddocktitle} -\end{titlepage} -\tableofcontents -\input{UnboxedStuff} -\end{document}
\ No newline at end of file diff --git a/latex-test/src/Example/Example.hs b/latex-test/src/Example/Example.hs new file mode 100644 index 00000000..42ff1646 --- /dev/null +++ b/latex-test/src/Example/Example.hs @@ -0,0 +1,11 @@ +module Example where + +-- | Example use. +-- +-- >>> split 1 +-- () +-- +-- >>> split 2 +-- () +split :: Int -> () +split _ = ()  | 
