aboutsummaryrefslogtreecommitdiff
path: root/haddock-api/src/Haddock/Backends/Hyperlinker.hs
Commit message (Collapse)AuthorAgeFilesLines
* Remove workaround for now-fixed Clang CPP bug (#1028)Alec Theriault2019-03-291-3/+1
| | | | | | | | | | | Before LLVM 6.0.1 (or 10.0 on Apple LLVM), there was a bug where lines that started with an octothorpe but turned out not to lex like pragmas would have an extra line added after them. Since this bug has been fixed upstream and that it doesn't have dire consequences anyways, the workaround is not really worth it anymore - we can just tell people to update their clang version (or re-structure their pragma code).
* 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