mirror of
https://github.com/typst/typst
synced 2025-05-14 04:56:26 +08:00
Deprecate some things (#4562)
This commit is contained in:
parent
96d456e267
commit
46ef8e1dfa
@ -7,7 +7,7 @@ use comemo::{Track, Tracked};
|
||||
use ecow::{eco_vec, EcoString, EcoVec};
|
||||
use smallvec::SmallVec;
|
||||
|
||||
use crate::diag::{SourceResult, Trace, Tracepoint};
|
||||
use crate::diag::{warning, SourceResult, Trace, Tracepoint};
|
||||
use crate::engine::Engine;
|
||||
use crate::foundations::{
|
||||
cast, elem, func, ty, Content, Context, Element, Func, NativeElement, Packed, Repr,
|
||||
@ -33,6 +33,8 @@ use crate::utils::LazyHash;
|
||||
/// ```
|
||||
#[func]
|
||||
pub fn style(
|
||||
/// The engine.
|
||||
engine: &mut Engine,
|
||||
/// The call site span.
|
||||
span: Span,
|
||||
/// A function to call with the styles. Its return value is displayed
|
||||
@ -43,6 +45,11 @@ pub fn style(
|
||||
/// content that depends on the style context it appears in.
|
||||
func: Func,
|
||||
) -> Content {
|
||||
engine.sink.warn(warning!(
|
||||
span, "`style` is deprecated";
|
||||
hint: "use a `context` expression instead"
|
||||
));
|
||||
|
||||
StyleElem::new(func).pack().spanned(span)
|
||||
}
|
||||
|
||||
|
@ -5,7 +5,7 @@ use comemo::{Track, Tracked, TrackedMut};
|
||||
use ecow::{eco_format, eco_vec, EcoString, EcoVec};
|
||||
use smallvec::{smallvec, SmallVec};
|
||||
|
||||
use crate::diag::{bail, At, HintedStrResult, SourceResult};
|
||||
use crate::diag::{bail, warning, At, HintedStrResult, SourceResult};
|
||||
use crate::engine::{Engine, Route, Sink, Traced};
|
||||
use crate::foundations::{
|
||||
cast, elem, func, scope, select_where, ty, Args, Array, Construct, Content, Context,
|
||||
@ -464,6 +464,11 @@ impl Counter {
|
||||
if let Ok(loc) = context.location() {
|
||||
self.display_impl(engine, loc, numbering, both, context.styles().ok())
|
||||
} else {
|
||||
engine.sink.warn(warning!(
|
||||
span, "`counter.display` without context is deprecated";
|
||||
hint: "use it in a `context` expression instead"
|
||||
));
|
||||
|
||||
Ok(CounterDisplayElem::new(self, numbering, both)
|
||||
.pack()
|
||||
.spanned(span)
|
||||
@ -508,13 +513,19 @@ impl Counter {
|
||||
context: Tracked<Context>,
|
||||
/// The callsite span.
|
||||
span: Span,
|
||||
/// _Compatibility:_ This argument only exists for compatibility with
|
||||
/// Typst 0.10 and lower and shouldn't be used anymore.
|
||||
/// _Compatibility:_ This argument is deprecated. It only exists for
|
||||
/// compatibility with Typst 0.10 and lower and shouldn't be used
|
||||
/// anymore.
|
||||
#[default]
|
||||
location: Option<Location>,
|
||||
) -> SourceResult<CounterState> {
|
||||
if location.is_none() {
|
||||
context.location().at(span)?;
|
||||
} else {
|
||||
engine.sink.warn(warning!(
|
||||
span, "calling `counter.final` with a location is deprecated";
|
||||
hint: "try removing the location argument"
|
||||
));
|
||||
}
|
||||
|
||||
let sequence = self.sequence(engine)?;
|
||||
|
@ -1,6 +1,6 @@
|
||||
use comemo::{Track, Tracked};
|
||||
|
||||
use crate::diag::{HintedStrResult, SourceResult};
|
||||
use crate::diag::{warning, HintedStrResult, SourceResult};
|
||||
use crate::engine::Engine;
|
||||
use crate::foundations::{
|
||||
cast, elem, func, Content, Context, Func, LocatableSelector, NativeElement, Packed,
|
||||
@ -29,11 +29,12 @@ use crate::syntax::Span;
|
||||
///
|
||||
/// # Compatibility
|
||||
/// In Typst 0.10 and lower, the `locate` function took a closure that made the
|
||||
/// current location in the document available (like [`here`] does now).
|
||||
/// Compatibility with the old way will remain for a while to give package
|
||||
/// authors time to upgrade. To that effect, `locate` detects whether it
|
||||
/// received a selector or a user-defined function and adjusts its semantics
|
||||
/// accordingly. This behaviour will be removed in the future.
|
||||
/// current location in the document available (like [`here`] does now). This
|
||||
/// usage pattern is deprecated. Compatibility with the old way will remain for
|
||||
/// a while to give package authors time to upgrade. To that effect, `locate`
|
||||
/// detects whether it received a selector or a user-defined function and
|
||||
/// adjusts its semantics accordingly. This behaviour will be removed in the
|
||||
/// future.
|
||||
#[func(contextual)]
|
||||
pub fn locate(
|
||||
/// The engine.
|
||||
@ -56,6 +57,11 @@ pub fn locate(
|
||||
LocateOutput::Location(selector.resolve_unique(engine.introspector, context)?)
|
||||
}
|
||||
LocateInput::Func(func) => {
|
||||
engine.sink.warn(warning!(
|
||||
span, "`locate` with callback function is deprecated";
|
||||
hint: "use a `context` expression instead"
|
||||
));
|
||||
|
||||
LocateOutput::Content(LocateElem::new(func).pack().spanned(span))
|
||||
}
|
||||
})
|
||||
|
@ -1,9 +1,10 @@
|
||||
use comemo::Tracked;
|
||||
|
||||
use crate::diag::HintedStrResult;
|
||||
use crate::diag::{warning, HintedStrResult};
|
||||
use crate::engine::Engine;
|
||||
use crate::foundations::{func, Array, Context, LocatableSelector, Value};
|
||||
use crate::introspection::Location;
|
||||
use crate::syntax::Span;
|
||||
|
||||
/// Finds elements in the document.
|
||||
///
|
||||
@ -141,6 +142,8 @@ pub fn query(
|
||||
engine: &mut Engine,
|
||||
/// The callsite context.
|
||||
context: Tracked<Context>,
|
||||
/// The span of the `query` call.
|
||||
span: Span,
|
||||
/// Can be
|
||||
/// - an element function like a `heading` or `figure`,
|
||||
/// - a `{<label>}`,
|
||||
@ -149,13 +152,18 @@ pub fn query(
|
||||
///
|
||||
/// Only [locatable]($location/#locatable) element functions are supported.
|
||||
target: LocatableSelector,
|
||||
/// _Compatibility:_ This argument only exists for compatibility with
|
||||
/// Typst 0.10 and lower and shouldn't be used anymore.
|
||||
/// _Compatibility:_ This argument is deprecated. It only exists for
|
||||
/// compatibility with Typst 0.10 and lower and shouldn't be used anymore.
|
||||
#[default]
|
||||
location: Option<Location>,
|
||||
) -> HintedStrResult<Array> {
|
||||
if location.is_none() {
|
||||
context.introspect()?;
|
||||
} else {
|
||||
engine.sink.warn(warning!(
|
||||
span, "calling `query` with a location is deprecated";
|
||||
hint: "try removing the location argument"
|
||||
));
|
||||
}
|
||||
|
||||
let vec = engine.introspector.query(&target.0);
|
||||
|
@ -1,7 +1,7 @@
|
||||
use comemo::{Track, Tracked, TrackedMut};
|
||||
use ecow::{eco_format, eco_vec, EcoString, EcoVec};
|
||||
|
||||
use crate::diag::{bail, At, SourceResult};
|
||||
use crate::diag::{bail, warning, At, SourceResult};
|
||||
use crate::engine::{Engine, Route, Sink, Traced};
|
||||
use crate::foundations::{
|
||||
cast, elem, func, scope, select_where, ty, Args, Construct, Content, Context, Func,
|
||||
@ -325,13 +325,19 @@ impl State {
|
||||
context: Tracked<Context>,
|
||||
/// The callsite span.
|
||||
span: Span,
|
||||
/// _Compatibility:_ This argument only exists for compatibility with
|
||||
/// Typst 0.10 and lower and shouldn't be used anymore.
|
||||
/// _Compatibility:_ This argument is deprecated. It only exists for
|
||||
/// compatibility with Typst 0.10 and lower and shouldn't be used
|
||||
/// anymore.
|
||||
#[default]
|
||||
location: Option<Location>,
|
||||
) -> SourceResult<Value> {
|
||||
if location.is_none() {
|
||||
context.location().at(span)?;
|
||||
} else {
|
||||
engine.sink.warn(warning!(
|
||||
span, "calling `state.final` with a location is deprecated";
|
||||
hint: "try removing the location argument"
|
||||
));
|
||||
}
|
||||
|
||||
let sequence = self.sequence(engine)?;
|
||||
@ -365,6 +371,8 @@ impl State {
|
||||
#[func]
|
||||
pub fn display(
|
||||
self,
|
||||
/// The engine.
|
||||
engine: &mut Engine,
|
||||
/// The span of the `display` call.
|
||||
span: Span,
|
||||
/// A function which receives the value of the state and can return
|
||||
@ -373,6 +381,11 @@ impl State {
|
||||
#[default]
|
||||
func: Option<Func>,
|
||||
) -> Content {
|
||||
engine.sink.warn(warning!(
|
||||
span, "`state.display` is deprecated";
|
||||
hint: "use `state.get` in a `context` expression instead"
|
||||
));
|
||||
|
||||
StateDisplayElem::new(self, func).pack().spanned(span)
|
||||
}
|
||||
}
|
||||
|
@ -1,6 +1,6 @@
|
||||
use comemo::Tracked;
|
||||
|
||||
use crate::diag::{At, SourceResult};
|
||||
use crate::diag::{warning, At, SourceResult};
|
||||
use crate::engine::Engine;
|
||||
use crate::foundations::{
|
||||
dict, func, Content, Context, Dict, Resolve, Smart, StyleChain, Styles,
|
||||
@ -76,13 +76,19 @@ pub fn measure(
|
||||
height: Smart<Length>,
|
||||
/// The content whose size to measure.
|
||||
content: Content,
|
||||
/// _Compatibility:_ This argument only exists for compatibility with
|
||||
/// Typst 0.10 and lower and shouldn't be used anymore.
|
||||
/// _Compatibility:_ This argument is deprecated. It only exists for
|
||||
/// compatibility with Typst 0.10 and lower and shouldn't be used anymore.
|
||||
#[default]
|
||||
styles: Option<Styles>,
|
||||
) -> SourceResult<Dict> {
|
||||
let styles = match &styles {
|
||||
Some(styles) => StyleChain::new(styles),
|
||||
Some(styles) => {
|
||||
engine.sink.warn(warning!(
|
||||
span, "calling `measure` with a styles argument is deprecated";
|
||||
hint: "try removing the styles argument"
|
||||
));
|
||||
StyleChain::new(styles)
|
||||
}
|
||||
None => context.styles().at(span)?,
|
||||
};
|
||||
|
||||
|
@ -43,10 +43,16 @@
|
||||
#s.update(x =>
|
||||
eval(expr.replace("x", str(x)))
|
||||
)
|
||||
// Warning: 17-28 `state.display` is deprecated
|
||||
// Hint: 17-28 use `state.get` in a `context` expression instead
|
||||
New value is #s.display().
|
||||
]
|
||||
|
||||
// Warning: 1:2-6:3 `locate` with callback function is deprecated
|
||||
// Hint: 1:2-6:3 use a `context` expression instead
|
||||
#locate(loc => {
|
||||
// Warning: 14-32 calling `query` with a location is deprecated
|
||||
// Hint: 14-32 try removing the location argument
|
||||
let elem = query(<here>, loc).first()
|
||||
test(s.at(elem.location()), 13)
|
||||
})
|
||||
@ -58,8 +64,15 @@
|
||||
#compute("x - 5")
|
||||
|
||||
--- context-compatibility-styling ---
|
||||
// Warning: 2-53 `style` is deprecated
|
||||
// Hint: 2-53 use a `context` expression instead
|
||||
// Warning: 18-39 calling `measure` with a styles argument is deprecated
|
||||
// Hint: 18-39 try removing the styles argument
|
||||
#style(styles => measure([it], styles).width < 20pt)
|
||||
|
||||
--- context-compatibility-counter-display ---
|
||||
#counter(heading).update(10)
|
||||
|
||||
// Warning: 2-44 `counter.display` without context is deprecated
|
||||
// Hint: 2-44 use it in a `context` expression instead
|
||||
#counter(heading).display(n => test(n, 10))
|
||||
|
@ -79,7 +79,7 @@ At Beta, it was #context {
|
||||
|
||||
--- issue-2480-counter-reset ---
|
||||
#let q = counter("question")
|
||||
#let step-show = q.step() + q.display("1")
|
||||
#let step-show = q.step() + context q.display("1")
|
||||
#let g = grid(step-show, step-show, gutter: 2pt)
|
||||
|
||||
#g
|
||||
|
@ -282,17 +282,17 @@
|
||||
rows: (auto, 2em, auto, auto),
|
||||
table.header(
|
||||
[eeec],
|
||||
table.cell(rowspan: 2, count.step() + count.display()),
|
||||
table.cell(rowspan: 2, count.step() + context count.display()),
|
||||
),
|
||||
[d],
|
||||
block(width: 5em, fill: yellow, lorem(7)),
|
||||
[d],
|
||||
table.footer(
|
||||
[eeec],
|
||||
table.cell(rowspan: 2, count.step() + count.display()),
|
||||
table.cell(rowspan: 2, count.step() + context count.display()),
|
||||
)
|
||||
)
|
||||
#count.display()
|
||||
#context count.display()
|
||||
|
||||
--- grid-nested-with-footers ---
|
||||
// Nested table with footer should repeat both footers
|
||||
|
@ -265,13 +265,13 @@
|
||||
rows: (auto, 2em, auto, auto),
|
||||
table.header(
|
||||
[eeec],
|
||||
table.cell(rowspan: 2, count.step() + count.display()),
|
||||
table.cell(rowspan: 2, count.step() + context count.display()),
|
||||
),
|
||||
[d],
|
||||
block(width: 5em, fill: yellow, lorem(15)),
|
||||
[d]
|
||||
)
|
||||
#count.display()
|
||||
#context count.display()
|
||||
|
||||
--- grid-header-expand ---
|
||||
// Ensure header expands to fit cell placed in it after its declaration
|
||||
|
@ -163,7 +163,7 @@
|
||||
#let count = counter("count")
|
||||
#show grid.cell: it => {
|
||||
count.step()
|
||||
count.display()
|
||||
context count.display()
|
||||
}
|
||||
|
||||
#grid(
|
||||
|
@ -34,7 +34,7 @@ Totally #h() ignored
|
||||
h(1em)
|
||||
counter(heading).update(4)
|
||||
[Hello ]
|
||||
counter(heading).display()
|
||||
context counter(heading).display()
|
||||
}
|
||||
|
||||
--- trim-weak-space-line-beginning ---
|
||||
|
@ -12,8 +12,13 @@ fi
|
||||
--- fold-vec-order-meta ---
|
||||
#let c = counter("mycounter")
|
||||
#c.update(1)
|
||||
|
||||
// Warning: 1:2-7:3 `locate` with callback function is deprecated
|
||||
// Hint: 1:2-7:3 use a `context` expression instead
|
||||
#locate(loc => [
|
||||
#c.update(2)
|
||||
#c.at(loc) \
|
||||
// Warning: 12-36 `locate` with callback function is deprecated
|
||||
// Hint: 12-36 use a `context` expression instead
|
||||
Second: #locate(loc => c.at(loc))
|
||||
])
|
||||
|
Loading…
x
Reference in New Issue
Block a user