aboutsummaryrefslogtreecommitdiff
path: root/haddock-api/src/Haddock/Backends/Hyperlinker.hs
Commit message (Collapse)AuthorAgeFilesLines
* Use `.hie` files for the Hyperlinker backend (#977)Alec Theriault2019-01-311-11/+44
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | # Summary This is a large architectural change to the Hyperlinker. * extract link (and now also type) information from `.hie` instead of doing ad-hoc SYB traversals of the `RenamedSource`. Also adds a superb type-on-hover feature (#715). * re-engineer the lexer to avoid needless string conversions. By going directly through GHC's `P` monad and taking bytestring slices, we avoid a ton of allocation and have better handling of position pragmas and CPP. In terms of performance, the Haddock side of things has gotten _much_ more efficient. Unfortunately, much of this is cancelled out by the increased GHC workload for generating `.hie` files. For the full set of boot libs (including `ghc`-the-library) * the sum of total time went down by 9-10% overall * the sum of total allocations went down by 6-7% # Motivation Haddock is moving towards working entirely over `.hi` and `.hie` files. This change means we no longer need the `RenamedSource` from `TypecheckedModule` (something which is _not_ in `.hi` files). # Details Along the way a bunch of things were fixed: * Cross package (and other) links are now more reliable (#496) * The lexer tries to recover from errors on every line (instead of at CPP boundaries) * `LINE`/`COLUMN` pragmas are taken into account * filter out zero length tokens before rendering * avoid recomputing the `ModuleName`-based `SrcMap` * remove the last use of `Documentation.Haddock.Utf8` (see #998) * restructure temporary folder logic for `.hi`/`.hie` model
* Set UTF-8 encoding before writing files (#934)Alec Theriault2018-10-161-1/+2
| | | | | This should fix #929, as well as guard against future problems of this sort in other places. Basically replaces 'writeFile' (which selects the users default locale) with 'writeUtf8File' (which always uses utf8).
* Move source paths types to hyperlinker types module.Łukasz Hanuszczak2015-07-061-0/+2
|
* Extract main hyperlinker types to separate module.Łukasz Hanuszczak2015-07-061-0/+1
|
* Refactor source path mapping to use modules as indices.Łukasz Hanuszczak2015-07-051-9/+6
|
* Make hyperlinker respect pretty-printer flag and add documentation.Łukasz Hanuszczak2015-06-301-7/+23
|
* Add basic support for cross-package hyperlink generation.Łukasz Hanuszczak2015-06-301-12/+13
|
* Rewrite source generation to fixed links and directory structure.Łukasz Hanuszczak2015-06-301-17/+12
|
* Make external hyperlinks point to locations specified by source URLs.Łukasz Hanuszczak2015-06-301-5/+3
|
* Make source hyperlinker generate output in apropriate directory.Łukasz Hanuszczak2015-06-301-16/+25
|
* Add support for fancy highlighting upon hovering over identifier.Łukasz Hanuszczak2015-06-301-2/+8
|
* Add support for providing custom CSS files for hyperlinked source.Łukasz Hanuszczak2015-06-301-6/+20
|
* Create hyperlinker module and plug it into the Haddock pipeline.Łukasz Hanuszczak2015-06-301-0/+25