Commit Graph

242 Commits

Author SHA1 Message Date
Kat Marchán ce0dea541a fix(theme): remove code styling 2021-09-22 16:34:21 -07:00
Kat Marchán 717f8e3d88 feat(graphical): add theming customization for linums 2021-09-22 16:34:21 -07:00
JT a69020422e fix(graphical): Fix off-by-one span_applies calculation (#70)
This changes the span_applies calculation to only count spans where the end of the span is considered part of it if the underline spills into it. I believe this happens if, say, the span.offset() is 10 and span.len() is 2, then we want to count offsets 10 and 11 as part of the span and those would spill, but not 12 as it's the "one past the end" where we know when to stop underlining.
2021-09-22 16:34:21 -07:00
Kat Marchán 55ca8e0b7f fix(api): put panic handler properly behind a flag 2021-09-22 16:34:21 -07:00
Kat Marchán 72c0bb9e65 feat(graphical): compact even more 2021-09-22 16:34:21 -07:00
Kat Marchán 41cb710a7d fix(context): get labels/snippets working when using .context() 2021-09-22 16:34:21 -07:00
Kat Marchán db637a366b feat(graphical): compact graphical display a bit 2021-09-22 16:34:21 -07:00
Kat Marchán 8e11baab7b feat(related): Add related diagnostics (#68)
Fixes: https://github.com/zkat/miette/issues/47
2021-09-22 16:34:21 -07:00
Kat Marchán 18e0ed7749 fix(graphical): fix coalescing adjacent things when they cross boundaries 2021-09-22 16:34:21 -07:00
Kat Marchán 6c6484633e feat(graphical): simplify graphical header and remove a dep 2021-09-22 16:34:21 -07:00
Kat Marchán e2e4027fda fix(graphical): stop rendering red vbars before the last item 2021-09-22 16:34:21 -07:00
Kat Marchán 858ac16935 feat(panic): add backtrace support to panic handler and move set_panic_hook into fancy features 2021-09-22 16:34:21 -07:00
Kat Marchán c6daee7b93 feat(panic): Add basic panic handler and installation function
Fixes: https://github.com/zkat/miette/issues/22
2021-09-22 16:34:21 -07:00
Kat Marchán 2cff68449c misc: remove stale comment 2021-09-22 16:34:21 -07:00
Kat Marchán 1a0f359e3c feat(report): nicer, non-overlapping same-line highlights 2021-09-22 16:34:21 -07:00
Kat Marchán 4bb9d12102 feat(handlers): Update graphical handler to use new label protocol (#66) 2021-09-22 16:34:21 -07:00
Kat Marchán 9aa8ff0d31 feat(protocol): Make SourceCode Send+Sync 2021-09-22 16:34:21 -07:00
Kat Marchán f87b158b22 feat(labels): replace snippet stuff with simpler labels (#62) 2021-09-22 16:34:21 -07:00
Kat Marchán 9841d6fd77 feat(report): add debug report as default, instead of narrated one 2021-09-22 16:34:21 -07:00
Kat Marchán c3505fac26 fix(protocol): implement source/cause for Box<dyn Diagnostic> 2021-09-22 16:34:21 -07:00
Kat Marchán 2c43740346 feat(theme): more styling changes 2021-09-22 16:34:21 -07:00
Kat Marchán c5c0576ec6 feat(theme): rename some theme items for clarity
BREAKING CHANGE: These were part of the public API, so if you were using theming, this might have broken for you
2021-09-22 16:34:21 -07:00
Kat Marchán 93374173e3 feat(footer): add footer support to graphical and narrated
Fixes: https://github.com/zkat/miette/issues/34
2021-09-22 16:34:21 -07:00
Kat Marchán 247e8f8b39 feat(deps): move fancy reporter (and its deps) to a feature
BREAKING CHANGE: The default fancy reporter is no longer available unless you enable the "fancy" feature. This also means you will not be pulling in a bunch of deps if you are using miette for a library

Fixes: https://github.com/zkat/miette/issues/25
2021-09-22 16:34:21 -07:00
Kat Marchán 4c2463f9ae feat(report): make a single big MietteHandler that can switch modes
BREAKING CHANGE: linkification option method on GraphicalReportHandler has been changed to .with_links(bool)
2021-09-22 16:34:21 -07:00
Kat Marchán 80036781cd fix(report): miscellaneous, hacky tweaks to graphical rendering 2021-09-22 16:34:21 -07:00
Kat Marchán 673b435892
tests: remove compile_tests 2021-09-13 18:33:13 -07:00
Cormac Relf 2fa5551c81
feat(derive): Add `#[diagnostic(forward(field_name), code(...))]` (#41) 2021-09-13 15:39:04 -07:00
Robin Appelman d994add912
fix(report): Fix end of previous line wrongly being included in highlight (#52) 2021-09-13 09:57:54 -07:00
Kat Marchán eb07d5bd66
fix(report): fix wrapping for header and add wrapping for footer 2021-09-11 00:57:53 -07:00
Kat Marchán eaebde92cf
feat(report): make header line as wide as terminal 2021-09-10 17:09:52 -07:00
Kat Marchán bc72532465
feat(report): take terminal width into account for wrapping text 2021-09-10 12:39:10 -07:00
Kat Marchán f482dcec6a
feat(report): wrap multiline messages to keep formatting
Fixes: https://github.com/zkat/miette/issues/51
2021-09-10 08:16:40 -07:00
Kat Marchán 1ba3f2f5d2
fix(report): get rid of the weird arrow thing. it does not look good 2021-09-10 07:36:09 -07:00
Kat Marchán e4fdac38ea
fix(context): pass on diagnostic metadata when wrapping with `Report` 2021-09-09 20:27:27 -07:00
Kat Marchán 533ff5f348
fix(reporter): improve color situation and style things a little nicer 2021-09-08 20:59:19 -07:00
Kat Marchán 6422f82174
fix(report): don't color error message text to draw eyes back to it 2021-09-08 18:29:41 -07:00
Kat Marchán 824cd8bebe
feat(printer): use uparrow for empty highlights and fix 0-offset display bug 2021-09-07 17:41:28 -07:00
Kat Marchán 3f9da04b86
feat(report): anyhow-ify DiagnosticReport (#35)
This PR overhauls the toplevel/main experience for `miette`. It adds a new `Report` type based on `eyre::Report` and overhauls various types to fit into this model, as well as prepare for some [future changes in Rust](https://github.com/nrc/rfcs/pull/1) that will make it possible to integrate `miette` directly with crates like `eyre` instead of having to use this specific `Report`.

As such, this PR is a major breaking change, especially for anyone using `DiagnosticReport` and company.

BREAKING CHANGES:
* `DiagnosticReport` is now just `Report`, and is a different, `eyre::Report`-like type.
* `DiagnosticResult` is now just `Result`.
* `.into_diagnostic()` now just transforms the error into a `Report`.
* `DiagnosticReportPrinter` has been replaced with `ReportHandler`
* `set_printer` has been replaced by `set_hook`
* `code` is now optional.
* `.into_diagnostic()` no longer takes a `code` argument.
* `#[diagnostic]` is now optional when deriving `Diagnostic`.
2021-09-04 21:22:46 -07:00
Sean Olson 0427c9f966
feat(source): Remove bound `T: Clone` from `Source` implementation for `Cow`. (#42)
This change removes the bound `T: Clone` in the implementation of
`Source` for `Cow<'_, T>`. This expands the implementation of `Source`
to include types like `Cow<'_, str>`. Importantly, `Cow` always requires
the bound `T: ToOwned` and uses `ToOwned` to implement `Clone` rather
than forwarding to `T::clone`.
2021-08-30 18:41:27 -07:00
Cormac Relf 84219f6c80
fix(printer): Show snippet message for unnamed sources (#39)
Fixes: https://github.com/zkat/miette/issues/38
2021-08-29 19:28:17 -07:00
Cormac Relf 50c7a88360
feat(Source): impl Source for str, &str (make &'static str usable for testing) (#40) 2021-08-29 19:07:07 -07:00
Felipe Seré 5a474370dd
fix(reporter): Only inc the line count if we haven't already done so with '\n' or '\r\n' (#37) 2021-08-29 12:33:45 -07:00
Cormac Relf 53f5d6d1d6
feat(derive): Add `#[diagnostic(transparent,forward)]` (#36)
Fixes: https://github.com/zkat/miette/issues/16
2021-08-29 12:33:16 -07:00
Tyler Bindon 9d6015996b
fix(printer): clamp highlight length to at least 1 (#32)
Fixes: https://github.com/zkat/miette/issues/31
2021-08-22 19:30:21 -07:00
Kat Marchán 61283e9efe
feat(snippets): Overhauled how snippets handle labels, sources, and messages, including the derive macro
BREAKING CHANGE: this will probably break a lot of your stuff. hopefully rustc helps
2021-08-22 19:06:47 -07:00
Kat Marchán 2d886c06a3
docs: dogfood url(docsrs) 2021-08-22 15:59:27 -07:00
Kat Marchán 7e76e2dea4
feat(links): added URL linking support and automatic docs.rs link generation
Fixes: https://github.com/zkat/miette/issues/17
2021-08-22 15:42:08 -07:00
Kat Marchán 3546dcec98
feat(theme): Add an initial `rgb` style with nicer colors 2021-08-22 10:56:10 -07:00
Kat Marchán eb4ea3423a
docs: add error code aliases
miette can't do this yet, but I can still do it by hand!
2021-08-22 00:22:38 -07:00
Kat Marchán 0fecc42f76
fmt: cargo fmt --all 2021-08-21 23:24:45 -07:00
Kat Marchán 949174e598
misc: more aggressive linting for quality~ 2021-08-21 23:13:25 -07:00
Kat Marchán 20bb3db3fa
docs: overhaul readme and make sure everything is documented
Fixes: https://github.com/zkat/miette/issues/15
2021-08-21 22:57:16 -07:00
Kat Marchán c1da4a0d27
feat(into_diagnostic): .into_diagnostic() is now generic across any impl fmt::Display instead of expecting a `dyn` 2021-08-21 22:55:45 -07:00
Kat Marchán 5c077d30a4
fix(protocol): oops, missed a spot after a rename 2021-08-21 22:54:59 -07:00
Kat Marchán aafa4a3de1
feat(printer): rename default printer and consistify some naming conventions with printing
BREAKING CHANGE: This is a significant API break.
2021-08-21 22:52:06 -07:00
Kat Marchán e980b72373
feat(error): diagnostic-ify MietteError 2021-08-21 22:49:00 -07:00
Kat Marchán 5369a9424e
feat(printer): added (and hooked up) an accessible report printer
Fixes: https://github.com/zkat/miette/issues/28
2021-08-21 15:32:31 -07:00
Kat Marchán b5c4118e59
misc: cargo fmt 2021-08-21 00:11:41 -07:00
Kat Marchán 5fbcd53026
feat(printer): lots of small improvements to printer 2021-08-20 23:52:15 -07:00
Kat Marchán d675334e48
feat(reporter): fancy new reporter with unicode, colors, and multiline (#23)
Fixes: https://github.com/zkat/miette/issues/3
Fixes: https://github.com/zkat/miette/issues/5
2021-08-20 20:09:23 -07:00
Kat Marchán 29c1403efd
feat(reporter): Overhauled return type/main/DiagnosticReport experience.
Fixes: https://github.com/zkat/miette/issues/13
2021-08-17 23:41:03 -07:00
Kat Marchán 26f409c525
feat(offsets): nice utility function to get an offset from a Rust callsite
Fixes: https://github.com/zkat/miette/issues/19
2021-08-17 19:18:57 -07:00
Kat Marchán 75c2312755
feat(offsets): utility function for converting from line/col to offset 2021-08-17 18:31:12 -07:00
Kat Marchán 95200366a1
feat(offsets): more utility From impls for SourceSpan 2021-08-17 18:30:38 -07:00
Kat Marchán 53074d3488
feat(protocol): add Source impls for Cow and Arc 2021-08-17 17:54:29 -07:00
Kat Marchán 49151bb095
fix(protocol): keep the owned spans 2021-08-17 17:15:05 -07:00
Kat Marchán f390520b45
feat(protocol): reference-based DiagnosticReport! 2021-08-17 15:30:52 -07:00
Kat Marchán acfeb9c5b0
feat(protocol): new SourceSpans with labels 2021-08-17 08:41:20 -07:00
Kat Marchán 36b86df9f5
feat(protocol): implement From<(usize, usize)> for SourceSpan 2021-08-16 23:46:32 -07:00
Kat Marchán 0e7702700d
feat(derive): added basic derive macro
This should be good for most basic use cases. More features will be added over time :)
2021-08-15 11:49:02 -07:00
Kat Marchán a960136802
feat(utils): various convenience utilities for creating and working with Diagnostics 2021-08-14 13:32:22 -07:00
Kat Marchán d201dde4b5
fix(reporter): fix reporter and tests... again 2021-08-10 22:47:28 -04:00
Kat Marchán 0d2e3312a4
fix(reporter): fix extra newline after header 2021-08-10 22:04:28 -04:00
Kat Marchán 02dd1f84d4
feat(protocol): Simplify protocol return values further
BREAKING CHANGE: Switched to Box instead of & for help/code return values.
2021-08-10 21:40:25 -04:00
Kat Marchán b08e5cca62
format: cargo fmt 2021-08-10 19:21:31 -04:00
Kat Marchán 9d430b6f47
fix(reporter): fix missing newline before help text 2021-08-10 19:21:31 -04:00
Kat Marchán 3584dc600c
feat(protocol): improvements to snippets API 2021-08-07 22:59:20 -04:00
Kat Marchán 80e7dabbe4
feat(protocol): help is a single Display ref now. 2021-08-07 22:57:56 -04:00
Kat Marchán 7920a2315c
feat(protocol: Severity is now optional 2021-08-07 22:54:46 -04:00
Kat Marchán 781a51f037
fix(protocol): fix the default From<:T Diagnostic> implementation to cover more cases. 2021-08-05 13:24:37 -07:00
Kat Marchán 50238d75a2
feat(protocol): Make usafe of ? and return types with Diagnostics more ergonomic 2021-08-05 12:37:11 -07:00
Kat Marchán e955321cbd
fix(protocol): protocol improvements after getting feedback 2021-08-05 09:12:41 -07:00
Kat Marchán 2fb9f93cbf
fix(api): stop re-exporting random things wtf??? 2021-08-04 20:28:19 -07:00
Kat Marchán 6b51694733
feat(protocol) overhauled entire protocol to be based on byte offsets (#1)
Includes other improvements!

BREAKING CHANGE: Yeah this is pretty much a rewrite.
2021-08-04 20:27:12 -07:00
Kat Marchán 1cb0ad3852
feat(span): make span end optional 2021-08-03 12:56:56 -07:00
Kat Marchán f8cf66cd90
refactor: move detail rendering out for clarity 2021-08-03 07:52:25 -07:00
Kat Marchán 3ad7666777
feat(miette): you nerd-snipe miette into writing a joke reporter?? jail for mother!! 2021-08-03 01:13:12 -07:00
Kat Marchán a437f44511
feat(reporter): dummy reporter implementation + tests 2021-08-03 00:52:10 -07:00
Kat Marchán c3f41b972d
fix(protocol): use references forr all return values in Diagnostic 2021-08-02 23:20:15 -07:00
Kat Marchán e2387ce2ed
feat(protocol): sketched out a basic protocol 2021-08-02 23:08:51 -07:00
Kat Marchán 457849721f
initial commit 2021-08-02 19:36:02 -07:00