zesterer / ariadne

A fancy diagnostics & error reporting crate
https://crates.io/crates/ariadne
MIT License
1.79k stars 78 forks source link

feature request: control context lines around labels #127

Open OmarTawfik opened 3 months ago

OmarTawfik commented 3 months ago

Thanks for the really useful crate!

We wanted to suggest a tiny addition to the API, to control/increase the number of context lines around a label. It would make the hint much more readable, and doesn't force the user to click/navigate to the file to figure out the context around it.

For example, this is a typical label shown on line 5:

   ╭─[input.sol:5:5]
   │
 5 │     return r;
   │            ┬  
   │            ╰── some hint text.
───╯

But if user sets Label::with_context_lines(2) (defaults to zero), it will show 2 more lines in both directions around line 5 (above and below):

   ╭─[input.sol:5:5]
   │
 3 │     // fetch result from server:
 4 │     int r = fetchResult();
 5 │     return r;
   │            ┬  
   │            ╰── some hint text.
 6 │   }
 7 │ }
───╯

Or as an improvement, it can also support specific directions, with Label::with_context_lines_above(2) and Label::with_context_lines_below(2) .

Thanks!

fogzot commented 2 months ago

This would make some diagnostic messages (especially ones where white space is not important and the user can do as they please) a more informative and easier to understand.

zesterer commented 2 months ago

Configurable context is something I plan to add to ariadne's rewrite (you can see the ariadne2 branch for current progress, if you're curious).

OmarTawfik commented 2 months ago

Thanks @zesterer! Is there a timeline for shipping v2? Otherwise, I wonder how much work is it to add to v1? any tips?