----------------------------------------------------------------------------- -- Small improvements * When no GHC can be found, give an error message that tells you to use --with-ghc= * Instead of receiving the GHC lib dir as input, try to autodetect it with ghc --print-libdir. Add a --with-ghc flag instead of -B. * Print an error message when given -optghc=.. instead of --optghc=.. -- --------------------------------------------------------------------------- -- Before next release * There should be a --maintainer flag to allow Cabal to pass the maintainer from the .cabal file to the generated docs. * The docs don't mention the module header stuff. ----------------------------------------------------------------------------- -- bugs * Parser is less liberal than before (pre 2.0.0.0) in respect to doc comments that aren't attached to anything. Some examples of things people do that were harmless before: -- | module header -- | extra comment describing module module MyModule where import Stuff -- ^ we might use this type MyInt = Int -- ^ comment * Haddock generates links to hidden modules (e.g. uses of IO point at GHC.IOBase.IO). * Haddock fails to process source files containing UNPACK pragmas. This needs to be fixed in the GHC parser. * HsParser bug: starting the module with '-- | doc' followed by a declaration doesn't parse, because the '-- | doc' is interpreted as the module documentation (the grammar has an S/R conflict because of this). * We don't point module references ("..." in doc strings) to the correct package, they are always assumed to be modules in the current package. * For a non-home occurrence of an entity, we should point to the home location in the doc somehow. This would help to distinguish multiple functions with the same name (eg. we don't know whether Prelude.catch is Control.Exception.catch vs. System.IO.Error.catch). * The lexer should handle "...." in doc strings, only recognising it if the contents looks like a module name. * Mentioning a qualified identifer in doc loses the qualifier, even when it is required? (see "[Haskell] auto-qualification of identifiers in Haddock"). * A module re-export should only reference the target module if the target module is imported without hiding any of its exports (otherwise we should inline just the exported bits). * Be a bit cleaner about error cases: some internal errors can be generated by bugs in the Haskell source. Divide out the proper internal error cases and emit proper error messages. * The synopsis generated for a module with no docs should not attempt to link to the doc for each entity. We need a different kind of summary here: what we really want is just the documentation section but without the extra whitespace between decls. * We don't handle non-ASCII characters in doc comments. (need to specify the encoding in the generated HTML too?). * There's no way to refer explicitly to either a type/class constructor or data constructor When there are more than one of these with the same name. Perhaps introduce a special syntax for them? (eg. ':C' means data constructor C?) ----------------------------------------------------------------------------- -- features * Optionally show qualifications of identifiers, that is print "Sequence.map" rather than "map", "Music.T" rather than just "T". The option for haddock could be --qualification QUAL QUAL=none (default) strip off qualification (just "map") QUAL=orig show the identifiers as they are written in the module (e.g. "map" or "List.map") QUAL=full show all identifiers with full qualification (Data.List.map) Actually I tried to implement it by myself in the old Haddock, but I could not precisely identify the place, where the qualification is removed. * Documentation of arguments of type constructors other than 'top level' arrows. E.g. T (a {- ^ arg -} -> b {- ^ result -} ) (a {- ^ arg -} -> b {- ^ result -} ) -> c (a {- ^ x coord -}, b {- ^ y coord -}) -> c It's probably difficult to format properly in HTML. * Do something better about re-exported symbols from another package. * Haddock could compare interfaces from multiple versions of a module and indicate changes between versions (eg. a small "new!" or "changed!" icon, or "stable since 1.0"). * Something equivalent to JavaDoc's @since * Source code: various people want to get at the source code from the docs. * Optionally include source code for a function in its docs? * Suggestion from Benjamin Pierce: generat separate HTML pages with the source code, with anchors that you can link to from the docs. Sounds fairly easy to implement... * Parse and remember {-# SOURCE #-} imports, possibly do something sensible with them? * nested itemized and enumerated lists. * There ought to be a way to include some structure in the "description" (section headings, etc.) and possibly in other comments. (suggseted by Daan). * Comments on instance declarations? (suggested by Daan and Iavor). * Comments on default method declarations? (suggested by Satnam). * Comments on components of a tuple, for argument or return types. * Add a search feature which just invokes Google? * attributes for individual declarations, eg. -- #abstract or targetted to a specific decl: -- #T: abstract #long, #short, #noinstances (on a type or class) #inline, #noinline on a module export * Allow documentation annotations to explicitly name the entity they refer to. * In the contents page, indicate portability/stability of each module somehow. * Add back-references from the definition to the uses of types/classes (perhaps in the index?) * Add a link to the defining location of a re-exported entity * fixities * include file revision info in module headers * Allow individual function arguments to be documented when the function type is a record element? * hiding instances? * Add a way to indicate DEPRECATED functions/types/modules? Perhaps parse the GHC DEPRECATED pragma? ----------------------------------------------------------------------------- -- cosmetic * Allow more parts of the documentation to be squashed and expanded? * for a constructor, don't fill its entire cell with a grey background. * switch to longer rendering form for datatypes when necessary? * remove extra whitespace from the generated HTML to save space