summaryrefslogtreecommitdiff
path: root/library/src/layout/par.rs
diff options
context:
space:
mode:
authorLaurenz <laurmaedje@gmail.com>2023-06-12 15:40:43 +0200
committerLaurenz <laurmaedje@gmail.com>2023-06-12 15:42:01 +0200
commit378ebe5f5601f11c3f428c17bed492012feb251e (patch)
tree4530bf009844faca40ca4fd6d0b9251fd51ef587 /library/src/layout/par.rs
parent19bf1f58944a42f17903869c162a33aba22b80b0 (diff)
Delayed errors
Fixes #785. Thanks to @Dherse for the idea!
Diffstat (limited to 'library/src/layout/par.rs')
-rw-r--r--library/src/layout/par.rs19
1 files changed, 14 insertions, 5 deletions
diff --git a/library/src/layout/par.rs b/library/src/layout/par.rs
index fa53f031..2d0944ce 100644
--- a/library/src/layout/par.rs
+++ b/library/src/layout/par.rs
@@ -5,6 +5,7 @@ use icu_provider_blob::BlobDataProvider;
use icu_segmenter::{LineBreakIteratorUtf8, LineSegmenter};
use once_cell::sync::Lazy;
use typst::eval::Tracer;
+use typst::model::DelayedErrors;
use unicode_bidi::{BidiInfo, Level as BidiLevel};
use unicode_script::{Script, UnicodeScript};
@@ -148,16 +149,23 @@ impl ParElem {
fn cached(
par: &ParElem,
world: Tracked<dyn World + '_>,
- tracer: TrackedMut<Tracer>,
- locator: Tracked<Locator>,
introspector: Tracked<Introspector>,
+ locator: Tracked<Locator>,
+ delayed: TrackedMut<DelayedErrors>,
+ tracer: TrackedMut<Tracer>,
styles: StyleChain,
consecutive: bool,
region: Size,
expand: bool,
) -> SourceResult<Fragment> {
let mut locator = Locator::chained(locator);
- let mut vt = Vt { world, tracer, locator: &mut locator, introspector };
+ let mut vt = Vt {
+ world,
+ introspector,
+ locator: &mut locator,
+ delayed,
+ tracer,
+ };
let children = par.children();
// Collect all text into one string for BiDi analysis.
@@ -178,9 +186,10 @@ impl ParElem {
let fragment = cached(
self,
vt.world,
- TrackedMut::reborrow_mut(&mut vt.tracer),
- vt.locator.track(),
vt.introspector,
+ vt.locator.track(),
+ TrackedMut::reborrow_mut(&mut vt.delayed),
+ TrackedMut::reborrow_mut(&mut vt.tracer),
styles,
consecutive,
region,