mirror of
https://github.com/typst/typst
synced 2025-06-28 16:22:53 +08:00
Add some more spans
This commit is contained in:
parent
f8f2ba6a5f
commit
008b59839f
@ -391,7 +391,9 @@ fn wrap_args_in_math(
|
||||
}
|
||||
Ok(Value::Content(
|
||||
callee.display().spanned(callee_span)
|
||||
+ LrElem::new(TextElem::packed('(') + body + TextElem::packed(')')).pack(),
|
||||
+ LrElem::new(TextElem::packed('(') + body + TextElem::packed(')'))
|
||||
.pack()
|
||||
.spanned(args.span),
|
||||
))
|
||||
}
|
||||
|
||||
|
@ -359,7 +359,7 @@ impl Eval for ast::Contextual<'_> {
|
||||
};
|
||||
|
||||
let func = Func::from(closure).spanned(body.span());
|
||||
Ok(ContextElem::new(func).pack())
|
||||
Ok(ContextElem::new(func).pack().spanned(body.span()))
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -148,7 +148,8 @@ pub fn eval_string(
|
||||
EvalMode::Math => Value::Content(
|
||||
EquationElem::new(root.cast::<ast::Math>().unwrap().eval(&mut vm)?)
|
||||
.with_block(false)
|
||||
.pack(),
|
||||
.pack()
|
||||
.spanned(span),
|
||||
),
|
||||
};
|
||||
|
||||
|
@ -187,7 +187,7 @@ impl Args {
|
||||
self.items.retain(|item| {
|
||||
if item.name.is_some() {
|
||||
return true;
|
||||
};
|
||||
}
|
||||
let span = item.value.span;
|
||||
let spanned = Spanned::new(std::mem::take(&mut item.value.v), span);
|
||||
match T::from_value(spanned).at(span) {
|
||||
|
@ -481,17 +481,20 @@ impl Content {
|
||||
impl Content {
|
||||
/// Strongly emphasize this content.
|
||||
pub fn strong(self) -> Self {
|
||||
StrongElem::new(self).pack()
|
||||
let span = self.span();
|
||||
StrongElem::new(self).pack().spanned(span)
|
||||
}
|
||||
|
||||
/// Emphasize this content.
|
||||
pub fn emph(self) -> Self {
|
||||
EmphElem::new(self).pack()
|
||||
let span = self.span();
|
||||
EmphElem::new(self).pack().spanned(span)
|
||||
}
|
||||
|
||||
/// Underline this content.
|
||||
pub fn underlined(self) -> Self {
|
||||
UnderlineElem::new(self).pack()
|
||||
let span = self.span();
|
||||
UnderlineElem::new(self).pack().spanned(span)
|
||||
}
|
||||
|
||||
/// Link the content somewhere.
|
||||
@ -506,17 +509,24 @@ impl Content {
|
||||
|
||||
/// Pad this content at the sides.
|
||||
pub fn padded(self, padding: Sides<Rel<Length>>) -> Self {
|
||||
let span = self.span();
|
||||
PadElem::new(self)
|
||||
.with_left(padding.left)
|
||||
.with_top(padding.top)
|
||||
.with_right(padding.right)
|
||||
.with_bottom(padding.bottom)
|
||||
.pack()
|
||||
.spanned(span)
|
||||
}
|
||||
|
||||
/// Transform this content's contents without affecting layout.
|
||||
pub fn moved(self, delta: Axes<Rel<Length>>) -> Self {
|
||||
MoveElem::new(self).with_dx(delta.x).with_dy(delta.y).pack()
|
||||
let span = self.span();
|
||||
MoveElem::new(self)
|
||||
.with_dx(delta.x)
|
||||
.with_dy(delta.y)
|
||||
.pack()
|
||||
.spanned(span)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -443,7 +443,7 @@ pub trait NativeFunc {
|
||||
Func::from(Self::data())
|
||||
}
|
||||
|
||||
/// Get the function data for the native Rust type.
|
||||
/// Get the function data for the native Rust function.
|
||||
fn data() -> &'static NativeFuncData;
|
||||
}
|
||||
|
||||
@ -462,6 +462,7 @@ pub struct NativeFuncData {
|
||||
pub keywords: &'static [&'static str],
|
||||
/// Whether this function makes use of context.
|
||||
pub contextual: bool,
|
||||
/// Definitions in the scope of the function.
|
||||
pub scope: LazyLock<Scope>,
|
||||
/// A list of parameter information for each parameter.
|
||||
pub params: LazyLock<Vec<ParamInfo>>,
|
||||
|
@ -199,6 +199,7 @@ pub trait NativeType {
|
||||
pub struct NativeTypeData {
|
||||
/// The type's normal name (e.g. `str`), as exposed to Typst.
|
||||
pub name: &'static str,
|
||||
/// The type's long name (e.g. `string`), for error messages.
|
||||
pub long_name: &'static str,
|
||||
/// The function's title case name (e.g. `String`).
|
||||
pub title: &'static str,
|
||||
@ -208,6 +209,7 @@ pub struct NativeTypeData {
|
||||
pub keywords: &'static [&'static str],
|
||||
/// The constructor for this type.
|
||||
pub constructor: LazyLock<Option<&'static NativeFuncData>>,
|
||||
/// Definitions in the scope of the type.
|
||||
pub scope: LazyLock<Scope>,
|
||||
}
|
||||
|
||||
|
@ -248,7 +248,7 @@ impl Show for Packed<OutlineElem> {
|
||||
)?;
|
||||
|
||||
// Add the overridable outline entry, followed by a line break.
|
||||
seq.push(entry.pack());
|
||||
seq.push(entry.pack().spanned(self.span()));
|
||||
seq.push(LinebreakElem::shared().clone());
|
||||
|
||||
ancestors.push(elem);
|
||||
@ -332,15 +332,18 @@ impl OutlineIndent {
|
||||
}
|
||||
|
||||
if !ancestors.is_empty() {
|
||||
seq.push(HideElem::new(hidden).pack());
|
||||
seq.push(SpaceElem::shared().clone());
|
||||
seq.push(HideElem::new(hidden).pack().spanned(span));
|
||||
seq.push(SpaceElem::shared().clone().spanned(span));
|
||||
}
|
||||
}
|
||||
|
||||
// Length => indent with some fixed spacing per level
|
||||
Some(Smart::Custom(OutlineIndent::Rel(length))) => {
|
||||
seq.push(
|
||||
HElem::new(Spacing::Rel(*length)).pack().repeat(ancestors.len()),
|
||||
HElem::new(Spacing::Rel(*length))
|
||||
.pack()
|
||||
.spanned(span)
|
||||
.repeat(ancestors.len()),
|
||||
);
|
||||
}
|
||||
|
||||
@ -535,7 +538,7 @@ impl Show for Packed<OutlineEntry> {
|
||||
);
|
||||
seq.push(SpaceElem::shared().clone());
|
||||
} else {
|
||||
seq.push(HElem::new(Fr::one().into()).pack());
|
||||
seq.push(HElem::new(Fr::one().into()).pack().spanned(self.span()));
|
||||
}
|
||||
|
||||
// Add the page number.
|
||||
|
@ -127,7 +127,7 @@ impl Show for Packed<TermsElem> {
|
||||
|
||||
let pad = hanging_indent + indent;
|
||||
let unpad = (!hanging_indent.is_zero())
|
||||
.then(|| HElem::new((-hanging_indent).into()).pack());
|
||||
.then(|| HElem::new((-hanging_indent).into()).pack().spanned(self.span()));
|
||||
|
||||
let mut children = vec![];
|
||||
for child in self.children().iter() {
|
||||
@ -149,12 +149,16 @@ impl Show for Packed<TermsElem> {
|
||||
let mut realized = StackElem::new(children)
|
||||
.with_spacing(Some(gutter.into()))
|
||||
.pack()
|
||||
.spanned(self.span())
|
||||
.padded(padding);
|
||||
|
||||
if self.tight(styles) {
|
||||
let leading = ParElem::leading_in(styles);
|
||||
let spacing =
|
||||
VElem::new(leading.into()).with_weak(true).with_attach(true).pack();
|
||||
let spacing = VElem::new(leading.into())
|
||||
.with_weak(true)
|
||||
.with_attach(true)
|
||||
.pack()
|
||||
.spanned(self.span());
|
||||
realized = spacing + realized;
|
||||
}
|
||||
|
||||
|
@ -273,7 +273,7 @@ fn create_output_body(input: &CastInput) -> TokenStream {
|
||||
if input.dynamic {
|
||||
quote! { #foundations::CastInfo::Type(#foundations::Type::of::<Self>()) }
|
||||
} else {
|
||||
quote! { Self::input() }
|
||||
quote! { <Self as #foundations::Reflect>::input() }
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user