From ae23b4f25a972620686617b5aab5375d5046b1c9 Mon Sep 17 00:00:00 2001
From: Alec Theriault <alec.theriault@gmail.com>
Date: Sun, 9 Sep 2018 14:25:57 -0700
Subject: 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...)
---
 latex-test/ref/ConstructorArgs/ConstructorArgs.tex | 34 ++++++++++++----------
 1 file changed, 18 insertions(+), 16 deletions(-)

(limited to 'latex-test/ref/ConstructorArgs/ConstructorArgs.tex')

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
-- 
cgit v1.2.3

