Deprecated lifecycle

The eval_ and call_ families of functions provide a replacement for the base R functions prefixed with sys. (which are all about the context stack), as well as for parent.frame() (which is the only base R function for querying the call stack). The context stack includes all R-level evaluation contexts. It is linear in terms of execution history but due to lazy evaluation it is potentially nonlinear in terms of call history. The call stack history, on the other hand, is homogenous.

global_frame()

current_frame()

ctxt_frame(n = 1)

call_frame(n = 1, clean = TRUE)

ctxt_depth()

call_depth()

ctxt_stack(n = NULL, trim = 0)

call_stack(n = NULL, clean = TRUE)

Arguments

n

The number of frames to go back in the stack.

clean

Whether to post-process the call stack to clean non-standard frames. If TRUE, suboptimal call-stack entries by base::eval() will be cleaned up: the duplicate frame created by eval() is eliminated.

trim

The number of layers of intervening frames to trim off the stack. See stack_trim() and examples.

Details

ctxt_frame() and call_frame() return a frame object containing the following fields: expr and env (call expression and evaluation environment), pos and caller_pos (position of current frame in the context stack and position of the caller), and fun (function of the current frame). ctxt_stack() and call_stack() return a list of all context or call frames on the stack. Finally, ctxt_depth() and call_depth() report the current context position or the number of calling frames on the stack.

The base R functions take two sorts of arguments to indicate which frame to query: which and n. The n argument is straightforward: it's the number of frames to go down the stack, with n = 1 referring to the current context. The which argument is more complicated and changes meaning for values lower than 1. For the sake of consistency, the rlang functions all take the same kind of argument n. This argument has a single meaning (the number of frames to go down the stack) and cannot be lower than 1.

Note finally that parent.frame(1) corresponds to call_frame(2)$env, as n = 1 always refers to the current frame. This makes the _frame() and _stack() functions consistent: ctxt_frame(2) is the same as ctxt_stack()[[2]]. Also, ctxt_depth() returns one more frame than base::sys.nframe() because it counts the global frame. That is consistent with the _stack() functions which return the global frame as well. This way, call_stack(call_depth()) is the same as global_frame().

Life cycle

These functions are soft-deprecated and replaced by trace_back().

Examples

# Expressions within arguments count as contexts
identity(identity(ctxt_depth())) # returns 2
#> Warning: `ctxt_depth()` is deprecated as of rlang 0.3.0.
#> This warning is displayed once per session.
#> [1] 38

# But they are not part of the call stack because arguments are
# evaluated within the calling function (or the global environment
# if called at top level)
identity(identity(call_depth())) # returns 0
#> Warning: `call_depth()` is deprecated as of rlang 0.3.0.
#> This warning is displayed once per session.
#> [1] 14

# The context stacks includes all intervening execution frames. The
# call stack doesn't:
f <- function(x) identity(x)
f(f(ctxt_stack()))
#> [[1]]
#> <frame 39> (38)
#> expr: identity(x)
#> env:  [local 0x560eaec8d0f0]
#> 
#> [[2]]
#> <frame 38> (35)
#> expr: f(ctxt_stack())
#> env:  [local 0x560eaec8cfd8]
#> 
#> [[3]]
#> <frame 37> (36)
#> expr: identity(x)
#> env:  [local 0x560eaec8cec0]
#> 
#> [[4]]
#> <frame 36> (35)
#> expr: f(f(ctxt_stack()))
#> env:  [local 0x560eaec8cd00]
#> 
#> [[5]]
#> <frame 35> (34)
#> expr: eval(expr, envir, enclos)
#> env:  [local 0x560eb1714ac0]
#> 
#> [[6]]
#> <frame 34> (24)
#> expr: eval(expr, envir, enclos)
#> env:  [local 0x560eaec8cb08]
#> 
#> [[7]]
#> <frame 33> (24)
#> expr: withVisible(eval(expr, envir, enclos))
#> env:  [local 0x560eaec8c7f8]
#> 
#> [[8]]
#> <frame 32> (24)
#> expr: withCallingHandlers(withVisible(eval(expr, envir, enclos)), warning = wHandler,  <...>
#> env:  [local 0x560eaec8c1a0]
#> 
#> [[9]]
#> <frame 31> (30)
#> expr: doTryCatch(return(expr), name, parentenv, handler)
#> env:  [local 0x560eaec8bb80]
#> 
#> [[10]]
#> <frame 30> (29)
#> expr: tryCatchOne(expr, names, parentenv, handlers[[1L]])
#> env:  [local 0x560eaec93390]
#> 
#> [[11]]
#> <frame 29> (28)
#> expr: tryCatchList(expr, classes, parentenv, handlers)
#> env:  [local 0x560eaec92f30]
#> 
#> [[12]]
#> <frame 28> (27)
#> expr: tryCatch(expr, error = function(e) { <...>
#> env:  [local 0x560eaec92788]
#> 
#> [[13]]
#> <frame 27> (26)
#> expr: try(f, silent = TRUE)
#> env:  [local 0x560eaec92408]
#> 
#> [[14]]
#> <frame 26> (24)
#> expr: handle(ev <- withCallingHandlers(withVisible(eval(expr, envir,  <...>
#> env:  [local 0x560eaec92280]
#> 
#> [[15]]
#> <frame 25> (24)
#> expr: timing_fn(handle(ev <- withCallingHandlers(withVisible(eval(expr,  <...>
#> env:  [local 0x560eaec921a0]
#> 
#> [[16]]
#> <frame 24> (23)
#> expr: evaluate_call(expr, parsed$src[[i]], envir = envir, enclos = enclos,  <...>
#> env:  [frame 0x560eaecdea08]
#> 
#> [[17]]
#> <frame 23> (22)
#> expr: evaluate::evaluate(code, child_env(env), new_device = TRUE, output_handler = output_handler)
#> env:  [frame 0x560eb07c7f90]
#> 
#> [[18]]
#> <frame 22> (21)
#> expr: downlit::evaluate_and_highlight(code, fig_save = fig_save_topic,  <...>
#> env:  [frame 0x560eaf961bd0]
#> 
#> [[19]]
#> <frame 21> (20)
#> expr: highlight_examples(code, topic, env = env)
#> env:  [frame 0x560eaf9ba708]
#> 
#> [[20]]
#> <frame 20> (19)
#> expr: run_examples(tags$tag_examples[[1]], env = new.env(parent = globalenv()),  <...>
#> env:  [frame 0x560eb270fc70]
#> 
#> [[21]]
#> <frame 19> (17)
#> expr: data_reference_topic(topic, pkg, examples = examples, run_dont_run = run_dont_run)
#> env:  [frame 0x560eb13af9a8]
#> 
#> [[22]]
#> <frame 18> (17)
#> expr: withCallingHandlers(data_reference_topic(topic, pkg, examples = examples,  <...>
#> env:  [frame 0x560eb13af040]
#> 
#> [[23]]
#> <frame 17> (16)
#> expr: .f(.x[[i]], ...)
#> env:  [frame 0x560eb05151d0]
#> 
#> [[24]]
#> <frame 16> (15)
#> expr: purrr::map(topics, build_reference_topic, pkg = pkg, lazy = lazy,  <...>
#> env:  [frame 0x560eade2f628]
#> 
#> [[25]]
#> <frame 15> (14)
#> expr: build_reference(pkg, lazy = lazy, examples = examples, run_dont_run = run_dont_run,  <...>
#> env:  [frame 0x560eab934750]
#> 
#> [[26]]
#> <frame 14> (13)
#> expr: build_site_local(pkg = pkg, examples = examples, run_dont_run = run_dont_run,  <...>
#> env:  [frame 0x560eaacff240]
#> 
#> [[27]]
#> <frame 13> (12)
#> expr: pkgdown::build_site(...)
#> env:  [frame 0x560eaac4a318]
#> 
#> [[28]]
#> <frame 12> (0)
#> expr: (function (..., crayon_enabled, crayon_colors, pkgdown_internet)  <...>
#> env:  [frame 0x560eab586628]
#> 
#> [[29]]
#> <frame 11> (0)
#> expr: (function (what, args, quote = FALSE, envir = parent.frame())  <...>
#> env:  [frame 0x560eab580200]
#> 
#> [[30]]
#> <frame 10> (0)
#> expr: do.call(do.call, c(readRDS("/tmp/RtmpVTMEEO/callr-fun-e127c12e3e3"),  <...>
#> env:  [frame 0x560eaab35d48]
#> 
#> [[31]]
#> <frame 9> (0)
#> expr: saveRDS(do.call(do.call, c(readRDS("/tmp/RtmpVTMEEO/callr-fun-e127c12e3e3"),  <...>
#> env:  [frame 0x560eaab36138]
#> 
#> [[32]]
#> <frame 8> (0)
#> expr: withCallingHandlers({ <...>
#> env:  [frame 0x560eaab36988]
#> 
#> [[33]]
#> <frame 7> (6)
#> expr: doTryCatch(return(expr), name, parentenv, handler)
#> env:  [frame 0x560eaab331e8]
#> 
#> [[34]]
#> <frame 6> (5)
#> expr: tryCatchOne(expr, names, parentenv, handlers[[1L]])
#> env:  [frame 0x560eaab33530]
#> 
#> [[35]]
#> <frame 5> (2)
#> expr: tryCatchList(expr, names[-nh], parentenv, handlers[-nh])
#> env:  [frame 0x560eaab338e8]
#> 
#> [[36]]
#> <frame 4> (3)
#> expr: doTryCatch(return(expr), name, parentenv, handler)
#> env:  [frame 0x560eaab33e98]
#> 
#> [[37]]
#> <frame 3> (2)
#> expr: tryCatchOne(tryCatchList(expr, names[-nh], parentenv, handlers[-nh]),  <...>
#> env:  [frame 0x560eaab341e0]
#> 
#> [[38]]
#> <frame 2> (1)
#> expr: tryCatchList(expr, classes, parentenv, handlers)
#> env:  [frame 0x560eaab34528]
#> 
#> [[39]]
#> <frame 1> (0)
#> expr: tryCatch(withCallingHandlers({ <...>
#> env:  [frame 0x560eaab34c60]
#> 
#> [[40]]
#> <frame 0> [global]
#> expr: NULL
#> env:  [global]
#> 
#> attr(,"class")
#> [1] "ctxt_stack" "stack"     
f(f(call_stack()))
#> Warning: `call_stack()` is deprecated as of rlang 0.3.0.
#> This warning is displayed once per session.
#> [[1]]
#> <frame 34> (24)
#> expr: eval(expr, envir, enclos)
#> env:  [local 0x560eb1714ac0]
#> 
#> [[2]]
#> <frame 24> (23)
#> expr: evaluate_call(expr, parsed$src[[i]], envir = envir, enclos = enclos,  <...>
#> env:  [frame 0x560eae66e128]
#> 
#> [[3]]
#> <frame 23> (22)
#> expr: evaluate::evaluate(code, child_env(env), new_device = TRUE, output_handler = output_handler)
#> env:  [frame 0x560eb07c7f90]
#> 
#> [[4]]
#> <frame 22> (21)
#> expr: downlit::evaluate_and_highlight(code, fig_save = fig_save_topic,  <...>
#> env:  [frame 0x560eaf961bd0]
#> 
#> [[5]]
#> <frame 21> (20)
#> expr: highlight_examples(code, topic, env = env)
#> env:  [frame 0x560eaf9ba708]
#> 
#> [[6]]
#> <frame 20> (19)
#> expr: run_examples(tags$tag_examples[[1]], env = new.env(parent = globalenv()),  <...>
#> env:  [frame 0x560eb270fc70]
#> 
#> [[7]]
#> <frame 19> (17)
#> expr: data_reference_topic(topic, pkg, examples = examples, run_dont_run = run_dont_run)
#> env:  [frame 0x560eb13af9a8]
#> 
#> [[8]]
#> <frame 17> (16)
#> expr: .f(.x[[i]], ...)
#> env:  [frame 0x560eb05151d0]
#> 
#> [[9]]
#> <frame 16> (15)
#> expr: purrr::map(topics, build_reference_topic, pkg = pkg, lazy = lazy,  <...>
#> env:  [frame 0x560eade2f628]
#> 
#> [[10]]
#> <frame 15> (14)
#> expr: build_reference(pkg, lazy = lazy, examples = examples, run_dont_run = run_dont_run,  <...>
#> env:  [frame 0x560eab934750]
#> 
#> [[11]]
#> <frame 14> (13)
#> expr: build_site_local(pkg = pkg, examples = examples, run_dont_run = run_dont_run,  <...>
#> env:  [frame 0x560eaacff240]
#> 
#> [[12]]
#> <frame 13> (12)
#> expr: pkgdown::build_site(...)
#> env:  [frame 0x560eaac4a318]
#> 
#> [[13]]
#> <frame 12> (0)
#> expr: (function (..., crayon_enabled, crayon_colors, pkgdown_internet)  <...>
#> env:  [frame 0x560eab586628]
#> 
#> [[14]]
#> <frame 0> [global]
#> expr: NULL
#> env:  [global]
#> 
#> attr(,"class")
#> [1] "call_stack" "stack"     

g <- function(cmd) cmd()
f(g(ctxt_stack))
#> [[1]]
#> <frame 38> (35)
#> expr: g(ctxt_stack)
#> env:  [local 0x560eadfb8d30]
#> 
#> [[2]]
#> <frame 37> (36)
#> expr: identity(x)
#> env:  [local 0x560eadfb8c18]
#> 
#> [[3]]
#> <frame 36> (35)
#> expr: f(g(ctxt_stack))
#> env:  [local 0x560eadfb8b00]
#> 
#> [[4]]
#> <frame 35> (34)
#> expr: eval(expr, envir, enclos)
#> env:  [local 0x560eb1714ac0]
#> 
#> [[5]]
#> <frame 34> (24)
#> expr: eval(expr, envir, enclos)
#> env:  [local 0x560eadfb87f0]
#> 
#> [[6]]
#> <frame 33> (24)
#> expr: withVisible(eval(expr, envir, enclos))
#> env:  [local 0x560eadfb8550]
#> 
#> [[7]]
#> <frame 32> (24)
#> expr: withCallingHandlers(withVisible(eval(expr, envir, enclos)), warning = wHandler,  <...>
#> env:  [local 0x560eadfb7d38]
#> 
#> [[8]]
#> <frame 31> (30)
#> expr: doTryCatch(return(expr), name, parentenv, handler)
#> env:  [local 0x560eadfb6fe0]
#> 
#> [[9]]
#> <frame 30> (29)
#> expr: tryCatchOne(expr, names, parentenv, handlers[[1L]])
#> env:  [local 0x560eadfba710]
#> 
#> [[10]]
#> <frame 29> (28)
#> expr: tryCatchList(expr, classes, parentenv, handlers)
#> env:  [local 0x560eadfba208]
#> 
#> [[11]]
#> <frame 28> (27)
#> expr: tryCatch(expr, error = function(e) { <...>
#> env:  [local 0x560eadfb9910]
#> 
#> [[12]]
#> <frame 27> (26)
#> expr: try(f, silent = TRUE)
#> env:  [local 0x560eadfb9600]
#> 
#> [[13]]
#> <frame 26> (24)
#> expr: handle(ev <- withCallingHandlers(withVisible(eval(expr, envir,  <...>
#> env:  [local 0x560eadfb9478]
#> 
#> [[14]]
#> <frame 25> (24)
#> expr: timing_fn(handle(ev <- withCallingHandlers(withVisible(eval(expr,  <...>
#> env:  [local 0x560eadfb9398]
#> 
#> [[15]]
#> <frame 24> (23)
#> expr: evaluate_call(expr, parsed$src[[i]], envir = envir, enclos = enclos,  <...>
#> env:  [frame 0x560eadfdbb60]
#> 
#> [[16]]
#> <frame 23> (22)
#> expr: evaluate::evaluate(code, child_env(env), new_device = TRUE, output_handler = output_handler)
#> env:  [frame 0x560eb07c7f90]
#> 
#> [[17]]
#> <frame 22> (21)
#> expr: downlit::evaluate_and_highlight(code, fig_save = fig_save_topic,  <...>
#> env:  [frame 0x560eaf961bd0]
#> 
#> [[18]]
#> <frame 21> (20)
#> expr: highlight_examples(code, topic, env = env)
#> env:  [frame 0x560eaf9ba708]
#> 
#> [[19]]
#> <frame 20> (19)
#> expr: run_examples(tags$tag_examples[[1]], env = new.env(parent = globalenv()),  <...>
#> env:  [frame 0x560eb270fc70]
#> 
#> [[20]]
#> <frame 19> (17)
#> expr: data_reference_topic(topic, pkg, examples = examples, run_dont_run = run_dont_run)
#> env:  [frame 0x560eb13af9a8]
#> 
#> [[21]]
#> <frame 18> (17)
#> expr: withCallingHandlers(data_reference_topic(topic, pkg, examples = examples,  <...>
#> env:  [frame 0x560eb13af040]
#> 
#> [[22]]
#> <frame 17> (16)
#> expr: .f(.x[[i]], ...)
#> env:  [frame 0x560eb05151d0]
#> 
#> [[23]]
#> <frame 16> (15)
#> expr: purrr::map(topics, build_reference_topic, pkg = pkg, lazy = lazy,  <...>
#> env:  [frame 0x560eade2f628]
#> 
#> [[24]]
#> <frame 15> (14)
#> expr: build_reference(pkg, lazy = lazy, examples = examples, run_dont_run = run_dont_run,  <...>
#> env:  [frame 0x560eab934750]
#> 
#> [[25]]
#> <frame 14> (13)
#> expr: build_site_local(pkg = pkg, examples = examples, run_dont_run = run_dont_run,  <...>
#> env:  [frame 0x560eaacff240]
#> 
#> [[26]]
#> <frame 13> (12)
#> expr: pkgdown::build_site(...)
#> env:  [frame 0x560eaac4a318]
#> 
#> [[27]]
#> <frame 12> (0)
#> expr: (function (..., crayon_enabled, crayon_colors, pkgdown_internet)  <...>
#> env:  [frame 0x560eab586628]
#> 
#> [[28]]
#> <frame 11> (0)
#> expr: (function (what, args, quote = FALSE, envir = parent.frame())  <...>
#> env:  [frame 0x560eab580200]
#> 
#> [[29]]
#> <frame 10> (0)
#> expr: do.call(do.call, c(readRDS("/tmp/RtmpVTMEEO/callr-fun-e127c12e3e3"),  <...>
#> env:  [frame 0x560eaab35d48]
#> 
#> [[30]]
#> <frame 9> (0)
#> expr: saveRDS(do.call(do.call, c(readRDS("/tmp/RtmpVTMEEO/callr-fun-e127c12e3e3"),  <...>
#> env:  [frame 0x560eaab36138]
#> 
#> [[31]]
#> <frame 8> (0)
#> expr: withCallingHandlers({ <...>
#> env:  [frame 0x560eaab36988]
#> 
#> [[32]]
#> <frame 7> (6)
#> expr: doTryCatch(return(expr), name, parentenv, handler)
#> env:  [frame 0x560eaab331e8]
#> 
#> [[33]]
#> <frame 6> (5)
#> expr: tryCatchOne(expr, names, parentenv, handlers[[1L]])
#> env:  [frame 0x560eaab33530]
#> 
#> [[34]]
#> <frame 5> (2)
#> expr: tryCatchList(expr, names[-nh], parentenv, handlers[-nh])
#> env:  [frame 0x560eaab338e8]
#> 
#> [[35]]
#> <frame 4> (3)
#> expr: doTryCatch(return(expr), name, parentenv, handler)
#> env:  [frame 0x560eaab33e98]
#> 
#> [[36]]
#> <frame 3> (2)
#> expr: tryCatchOne(tryCatchList(expr, names[-nh], parentenv, handlers[-nh]),  <...>
#> env:  [frame 0x560eaab341e0]
#> 
#> [[37]]
#> <frame 2> (1)
#> expr: tryCatchList(expr, classes, parentenv, handlers)
#> env:  [frame 0x560eaab34528]
#> 
#> [[38]]
#> <frame 1> (0)
#> expr: tryCatch(withCallingHandlers({ <...>
#> env:  [frame 0x560eaab34c60]
#> 
#> [[39]]
#> <frame 0> [global]
#> expr: NULL
#> env:  [global]
#> 
#> attr(,"class")
#> [1] "ctxt_stack" "stack"     
f(g(call_stack))
#> [[1]]
#> <frame 38> (34)
#> expr: g(call_stack)
#> env:  [local 0x560ead687590]
#> 
#> [[2]]
#> <frame 34> (24)
#> expr: eval(expr, envir, enclos)
#> env:  [local 0x560eb1714ac0]
#> 
#> [[3]]
#> <frame 24> (23)
#> expr: evaluate_call(expr, parsed$src[[i]], envir = envir, enclos = enclos,  <...>
#> env:  [frame 0x560ead6f6ed0]
#> 
#> [[4]]
#> <frame 23> (22)
#> expr: evaluate::evaluate(code, child_env(env), new_device = TRUE, output_handler = output_handler)
#> env:  [frame 0x560eb07c7f90]
#> 
#> [[5]]
#> <frame 22> (21)
#> expr: downlit::evaluate_and_highlight(code, fig_save = fig_save_topic,  <...>
#> env:  [frame 0x560eaf961bd0]
#> 
#> [[6]]
#> <frame 21> (20)
#> expr: highlight_examples(code, topic, env = env)
#> env:  [frame 0x560eaf9ba708]
#> 
#> [[7]]
#> <frame 20> (19)
#> expr: run_examples(tags$tag_examples[[1]], env = new.env(parent = globalenv()),  <...>
#> env:  [frame 0x560eb270fc70]
#> 
#> [[8]]
#> <frame 19> (17)
#> expr: data_reference_topic(topic, pkg, examples = examples, run_dont_run = run_dont_run)
#> env:  [frame 0x560eb13af9a8]
#> 
#> [[9]]
#> <frame 17> (16)
#> expr: .f(.x[[i]], ...)
#> env:  [frame 0x560eb05151d0]
#> 
#> [[10]]
#> <frame 16> (15)
#> expr: purrr::map(topics, build_reference_topic, pkg = pkg, lazy = lazy,  <...>
#> env:  [frame 0x560eade2f628]
#> 
#> [[11]]
#> <frame 15> (14)
#> expr: build_reference(pkg, lazy = lazy, examples = examples, run_dont_run = run_dont_run,  <...>
#> env:  [frame 0x560eab934750]
#> 
#> [[12]]
#> <frame 14> (13)
#> expr: build_site_local(pkg = pkg, examples = examples, run_dont_run = run_dont_run,  <...>
#> env:  [frame 0x560eaacff240]
#> 
#> [[13]]
#> <frame 13> (12)
#> expr: pkgdown::build_site(...)
#> env:  [frame 0x560eaac4a318]
#> 
#> [[14]]
#> <frame 12> (0)
#> expr: (function (..., crayon_enabled, crayon_colors, pkgdown_internet)  <...>
#> env:  [frame 0x560eab586628]
#> 
#> [[15]]
#> <frame 0> [global]
#> expr: NULL
#> env:  [global]
#> 
#> attr(,"class")
#> [1] "call_stack" "stack"     

# The rlang _stack() functions return a list of frame
# objects. Use purrr::transpose() or index a field with
# purrr::map()'s to extract a particular field from a stack:

# stack <- f(f(call_stack()))
# purrr::map(stack, "env")
# purrr::transpose(stack)$expr

# current_frame() is an alias for ctxt_frame(1)
fn <- function() list(current = current_frame(), first = ctxt_frame(1))
fn()
#> Warning: `current_frame()` is deprecated as of rlang 0.3.0.
#> This warning is displayed once per session.
#> $current
#> <frame 36> (35)
#> expr: fn()
#> env:  [local 0x560eacd5a4a8]
#> 
#> $first
#> <frame 36> (35)
#> expr: fn()
#> env:  [local 0x560eacd5a4a8]
#> 

# While current_frame() is the top of the stack, global_frame() is
# the bottom:
fn <- function() {
  n <- ctxt_depth()
  ctxt_frame(n)
}
identical(fn(), global_frame())
#> [1] TRUE


# ctxt_stack() returns a stack with all intervening frames. You can
# trim layers of intervening frames with the trim argument:
identity(identity(ctxt_stack()))
#> [[1]]
#> <frame 37> (35)
#> expr: identity(ctxt_stack())
#> env:  [local 0x560eacb7d9d0]
#> 
#> [[2]]
#> <frame 36> (35)
#> expr: identity(identity(ctxt_stack()))
#> env:  [local 0x560eacb7d8b8]
#> 
#> [[3]]
#> <frame 35> (34)
#> expr: eval(expr, envir, enclos)
#> env:  [local 0x560eb1714ac0]
#> 
#> [[4]]
#> <frame 34> (24)
#> expr: eval(expr, envir, enclos)
#> env:  [local 0x560eacb7d6f8]
#> 
#> [[5]]
#> <frame 33> (24)
#> expr: withVisible(eval(expr, envir, enclos))
#> env:  [local 0x560eacb7d4c8]
#> 
#> [[6]]
#> <frame 32> (24)
#> expr: withCallingHandlers(withVisible(eval(expr, envir, enclos)), warning = wHandler,  <...>
#> env:  [local 0x560eacb7cf18]
#> 
#> [[7]]
#> <frame 31> (30)
#> expr: doTryCatch(return(expr), name, parentenv, handler)
#> env:  [local 0x560eacb7c9a0]
#> 
#> [[8]]
#> <frame 30> (29)
#> expr: tryCatchOne(expr, names, parentenv, handlers[[1L]])
#> env:  [local 0x560eacb7c5b0]
#> 
#> [[9]]
#> <frame 29> (28)
#> expr: tryCatchList(expr, classes, parentenv, handlers)
#> env:  [local 0x560eacb7c1f8]
#> 
#> [[10]]
#> <frame 28> (27)
#> expr: tryCatch(expr, error = function(e) { <...>
#> env:  [local 0x560eacb7f7d8]
#> 
#> [[11]]
#> <frame 27> (26)
#> expr: try(f, silent = TRUE)
#> env:  [local 0x560eacb7f500]
#> 
#> [[12]]
#> <frame 26> (24)
#> expr: handle(ev <- withCallingHandlers(withVisible(eval(expr, envir,  <...>
#> env:  [local 0x560eacb7f308]
#> 
#> [[13]]
#> <frame 25> (24)
#> expr: timing_fn(handle(ev <- withCallingHandlers(withVisible(eval(expr,  <...>
#> env:  [local 0x560eacb7f228]
#> 
#> [[14]]
#> <frame 24> (23)
#> expr: evaluate_call(expr, parsed$src[[i]], envir = envir, enclos = enclos,  <...>
#> env:  [frame 0x560eacb985b0]
#> 
#> [[15]]
#> <frame 23> (22)
#> expr: evaluate::evaluate(code, child_env(env), new_device = TRUE, output_handler = output_handler)
#> env:  [frame 0x560eb07c7f90]
#> 
#> [[16]]
#> <frame 22> (21)
#> expr: downlit::evaluate_and_highlight(code, fig_save = fig_save_topic,  <...>
#> env:  [frame 0x560eaf961bd0]
#> 
#> [[17]]
#> <frame 21> (20)
#> expr: highlight_examples(code, topic, env = env)
#> env:  [frame 0x560eaf9ba708]
#> 
#> [[18]]
#> <frame 20> (19)
#> expr: run_examples(tags$tag_examples[[1]], env = new.env(parent = globalenv()),  <...>
#> env:  [frame 0x560eb270fc70]
#> 
#> [[19]]
#> <frame 19> (17)
#> expr: data_reference_topic(topic, pkg, examples = examples, run_dont_run = run_dont_run)
#> env:  [frame 0x560eb13af9a8]
#> 
#> [[20]]
#> <frame 18> (17)
#> expr: withCallingHandlers(data_reference_topic(topic, pkg, examples = examples,  <...>
#> env:  [frame 0x560eb13af040]
#> 
#> [[21]]
#> <frame 17> (16)
#> expr: .f(.x[[i]], ...)
#> env:  [frame 0x560eb05151d0]
#> 
#> [[22]]
#> <frame 16> (15)
#> expr: purrr::map(topics, build_reference_topic, pkg = pkg, lazy = lazy,  <...>
#> env:  [frame 0x560eade2f628]
#> 
#> [[23]]
#> <frame 15> (14)
#> expr: build_reference(pkg, lazy = lazy, examples = examples, run_dont_run = run_dont_run,  <...>
#> env:  [frame 0x560eab934750]
#> 
#> [[24]]
#> <frame 14> (13)
#> expr: build_site_local(pkg = pkg, examples = examples, run_dont_run = run_dont_run,  <...>
#> env:  [frame 0x560eaacff240]
#> 
#> [[25]]
#> <frame 13> (12)
#> expr: pkgdown::build_site(...)
#> env:  [frame 0x560eaac4a318]
#> 
#> [[26]]
#> <frame 12> (0)
#> expr: (function (..., crayon_enabled, crayon_colors, pkgdown_internet)  <...>
#> env:  [frame 0x560eab586628]
#> 
#> [[27]]
#> <frame 11> (0)
#> expr: (function (what, args, quote = FALSE, envir = parent.frame())  <...>
#> env:  [frame 0x560eab580200]
#> 
#> [[28]]
#> <frame 10> (0)
#> expr: do.call(do.call, c(readRDS("/tmp/RtmpVTMEEO/callr-fun-e127c12e3e3"),  <...>
#> env:  [frame 0x560eaab35d48]
#> 
#> [[29]]
#> <frame 9> (0)
#> expr: saveRDS(do.call(do.call, c(readRDS("/tmp/RtmpVTMEEO/callr-fun-e127c12e3e3"),  <...>
#> env:  [frame 0x560eaab36138]
#> 
#> [[30]]
#> <frame 8> (0)
#> expr: withCallingHandlers({ <...>
#> env:  [frame 0x560eaab36988]
#> 
#> [[31]]
#> <frame 7> (6)
#> expr: doTryCatch(return(expr), name, parentenv, handler)
#> env:  [frame 0x560eaab331e8]
#> 
#> [[32]]
#> <frame 6> (5)
#> expr: tryCatchOne(expr, names, parentenv, handlers[[1L]])
#> env:  [frame 0x560eaab33530]
#> 
#> [[33]]
#> <frame 5> (2)
#> expr: tryCatchList(expr, names[-nh], parentenv, handlers[-nh])
#> env:  [frame 0x560eaab338e8]
#> 
#> [[34]]
#> <frame 4> (3)
#> expr: doTryCatch(return(expr), name, parentenv, handler)
#> env:  [frame 0x560eaab33e98]
#> 
#> [[35]]
#> <frame 3> (2)
#> expr: tryCatchOne(tryCatchList(expr, names[-nh], parentenv, handlers[-nh]),  <...>
#> env:  [frame 0x560eaab341e0]
#> 
#> [[36]]
#> <frame 2> (1)
#> expr: tryCatchList(expr, classes, parentenv, handlers)
#> env:  [frame 0x560eaab34528]
#> 
#> [[37]]
#> <frame 1> (0)
#> expr: tryCatch(withCallingHandlers({ <...>
#> env:  [frame 0x560eaab34c60]
#> 
#> [[38]]
#> <frame 0> [global]
#> expr: NULL
#> env:  [global]
#> 
#> attr(,"class")
#> [1] "ctxt_stack" "stack"     
identity(identity(ctxt_stack(trim = 1)))
#> [[1]]
#> <frame 35> (34)
#> expr: eval(expr, envir, enclos)
#> env:  [local 0x560eb1714ac0]
#> 
#> [[2]]
#> <frame 34> (24)
#> expr: eval(expr, envir, enclos)
#> env:  [local 0x560eabc1bd58]
#> 
#> [[3]]
#> <frame 33> (24)
#> expr: withVisible(eval(expr, envir, enclos))
#> env:  [local 0x560eabc1bb28]
#> 
#> [[4]]
#> <frame 32> (24)
#> expr: withCallingHandlers(withVisible(eval(expr, envir, enclos)), warning = wHandler,  <...>
#> env:  [local 0x560eabc1b498]
#> 
#> [[5]]
#> <frame 31> (30)
#> expr: doTryCatch(return(expr), name, parentenv, handler)
#> env:  [local 0x560eabc1aeb0]
#> 
#> [[6]]
#> <frame 30> (29)
#> expr: tryCatchOne(expr, names, parentenv, handlers[[1L]])
#> env:  [local 0x560eabc1a9e0]
#> 
#> [[7]]
#> <frame 29> (28)
#> expr: tryCatchList(expr, classes, parentenv, handlers)
#> env:  [local 0x560eabc1a660]
#> 
#> [[8]]
#> <frame 28> (27)
#> expr: tryCatch(expr, error = function(e) { <...>
#> env:  [local 0x560eabc1fd40]
#> 
#> [[9]]
#> <frame 27> (26)
#> expr: try(f, silent = TRUE)
#> env:  [local 0x560eabc1fb10]
#> 
#> [[10]]
#> <frame 26> (24)
#> expr: handle(ev <- withCallingHandlers(withVisible(eval(expr, envir,  <...>
#> env:  [local 0x560eabc1f988]
#> 
#> [[11]]
#> <frame 25> (24)
#> expr: timing_fn(handle(ev <- withCallingHandlers(withVisible(eval(expr,  <...>
#> env:  [local 0x560eabc1f8a8]
#> 
#> [[12]]
#> <frame 24> (23)
#> expr: evaluate_call(expr, parsed$src[[i]], envir = envir, enclos = enclos,  <...>
#> env:  [frame 0x560eabca1b68]
#> 
#> [[13]]
#> <frame 23> (22)
#> expr: evaluate::evaluate(code, child_env(env), new_device = TRUE, output_handler = output_handler)
#> env:  [frame 0x560eb07c7f90]
#> 
#> [[14]]
#> <frame 22> (21)
#> expr: downlit::evaluate_and_highlight(code, fig_save = fig_save_topic,  <...>
#> env:  [frame 0x560eaf961bd0]
#> 
#> [[15]]
#> <frame 21> (20)
#> expr: highlight_examples(code, topic, env = env)
#> env:  [frame 0x560eaf9ba708]
#> 
#> [[16]]
#> <frame 20> (19)
#> expr: run_examples(tags$tag_examples[[1]], env = new.env(parent = globalenv()),  <...>
#> env:  [frame 0x560eb270fc70]
#> 
#> [[17]]
#> <frame 19> (17)
#> expr: data_reference_topic(topic, pkg, examples = examples, run_dont_run = run_dont_run)
#> env:  [frame 0x560eb13af9a8]
#> 
#> [[18]]
#> <frame 18> (17)
#> expr: withCallingHandlers(data_reference_topic(topic, pkg, examples = examples,  <...>
#> env:  [frame 0x560eb13af040]
#> 
#> [[19]]
#> <frame 17> (16)
#> expr: .f(.x[[i]], ...)
#> env:  [frame 0x560eb05151d0]
#> 
#> [[20]]
#> <frame 16> (15)
#> expr: purrr::map(topics, build_reference_topic, pkg = pkg, lazy = lazy,  <...>
#> env:  [frame 0x560eade2f628]
#> 
#> [[21]]
#> <frame 15> (14)
#> expr: build_reference(pkg, lazy = lazy, examples = examples, run_dont_run = run_dont_run,  <...>
#> env:  [frame 0x560eab934750]
#> 
#> [[22]]
#> <frame 14> (13)
#> expr: build_site_local(pkg = pkg, examples = examples, run_dont_run = run_dont_run,  <...>
#> env:  [frame 0x560eaacff240]
#> 
#> [[23]]
#> <frame 13> (12)
#> expr: pkgdown::build_site(...)
#> env:  [frame 0x560eaac4a318]
#> 
#> [[24]]
#> <frame 12> (0)
#> expr: (function (..., crayon_enabled, crayon_colors, pkgdown_internet)  <...>
#> env:  [frame 0x560eab586628]
#> 
#> [[25]]
#> <frame 11> (0)
#> expr: (function (what, args, quote = FALSE, envir = parent.frame())  <...>
#> env:  [frame 0x560eab580200]
#> 
#> [[26]]
#> <frame 10> (0)
#> expr: do.call(do.call, c(readRDS("/tmp/RtmpVTMEEO/callr-fun-e127c12e3e3"),  <...>
#> env:  [frame 0x560eaab35d48]
#> 
#> [[27]]
#> <frame 9> (0)
#> expr: saveRDS(do.call(do.call, c(readRDS("/tmp/RtmpVTMEEO/callr-fun-e127c12e3e3"),  <...>
#> env:  [frame 0x560eaab36138]
#> 
#> [[28]]
#> <frame 8> (0)
#> expr: withCallingHandlers({ <...>
#> env:  [frame 0x560eaab36988]
#> 
#> [[29]]
#> <frame 7> (6)
#> expr: doTryCatch(return(expr), name, parentenv, handler)
#> env:  [frame 0x560eaab331e8]
#> 
#> [[30]]
#> <frame 6> (5)
#> expr: tryCatchOne(expr, names, parentenv, handlers[[1L]])
#> env:  [frame 0x560eaab33530]
#> 
#> [[31]]
#> <frame 5> (2)
#> expr: tryCatchList(expr, names[-nh], parentenv, handlers[-nh])
#> env:  [frame 0x560eaab338e8]
#> 
#> [[32]]
#> <frame 4> (3)
#> expr: doTryCatch(return(expr), name, parentenv, handler)
#> env:  [frame 0x560eaab33e98]
#> 
#> [[33]]
#> <frame 3> (2)
#> expr: tryCatchOne(tryCatchList(expr, names[-nh], parentenv, handlers[-nh]),  <...>
#> env:  [frame 0x560eaab341e0]
#> 
#> [[34]]
#> <frame 2> (1)
#> expr: tryCatchList(expr, classes, parentenv, handlers)
#> env:  [frame 0x560eaab34528]
#> 
#> [[35]]
#> <frame 1> (0)
#> expr: tryCatch(withCallingHandlers({ <...>
#> env:  [frame 0x560eaab34c60]
#> 
#> [[36]]
#> <frame 0> [global]
#> expr: NULL
#> env:  [global]
#> 
#> attr(,"class")
#> [1] "ctxt_stack" "stack"     

# ctxt_stack() is called within fn() with intervening frames:
fn <- function(trim) identity(identity(ctxt_stack(trim = trim)))
fn(0)
#> [[1]]
#> <frame 38> (36)
#> expr: identity(ctxt_stack(trim = trim))
#> env:  [local 0x560eb1cc4e60]
#> 
#> [[2]]
#> <frame 37> (36)
#> expr: identity(identity(ctxt_stack(trim = trim)))
#> env:  [local 0x560eb1cc4d48]
#> 
#> [[3]]
#> <frame 36> (35)
#> expr: fn(0)
#> env:  [local 0x560eb1cc4c30]
#> 
#> [[4]]
#> <frame 35> (34)
#> expr: eval(expr, envir, enclos)
#> env:  [local 0x560eb1714ac0]
#> 
#> [[5]]
#> <frame 34> (24)
#> expr: eval(expr, envir, enclos)
#> env:  [local 0x560eb1cc4a70]
#> 
#> [[6]]
#> <frame 33> (24)
#> expr: withVisible(eval(expr, envir, enclos))
#> env:  [local 0x560eb1cc4840]
#> 
#> [[7]]
#> <frame 32> (24)
#> expr: withCallingHandlers(withVisible(eval(expr, envir, enclos)), warning = wHandler,  <...>
#> env:  [local 0x560eb1cc4290]
#> 
#> [[8]]
#> <frame 31> (30)
#> expr: doTryCatch(return(expr), name, parentenv, handler)
#> env:  [local 0x560eb1cc7aa0]
#> 
#> [[9]]
#> <frame 30> (29)
#> expr: tryCatchOne(expr, names, parentenv, handlers[[1L]])
#> env:  [local 0x560eb1cc7720]
#> 
#> [[10]]
#> <frame 29> (28)
#> expr: tryCatchList(expr, classes, parentenv, handlers)
#> env:  [local 0x560eb1cc73d8]
#> 
#> [[11]]
#> <frame 28> (27)
#> expr: tryCatch(expr, error = function(e) { <...>
#> env:  [local 0x560eb1cc6d10]
#> 
#> [[12]]
#> <frame 27> (26)
#> expr: try(f, silent = TRUE)
#> env:  [local 0x560eb1cc6a70]
#> 
#> [[13]]
#> <frame 26> (24)
#> expr: handle(ev <- withCallingHandlers(withVisible(eval(expr, envir,  <...>
#> env:  [local 0x560eb1cc68b0]
#> 
#> [[14]]
#> <frame 25> (24)
#> expr: timing_fn(handle(ev <- withCallingHandlers(withVisible(eval(expr,  <...>
#> env:  [local 0x560eb1cc67d0]
#> 
#> [[15]]
#> <frame 24> (23)
#> expr: evaluate_call(expr, parsed$src[[i]], envir = envir, enclos = enclos,  <...>
#> env:  [frame 0x560eb1cdb138]
#> 
#> [[16]]
#> <frame 23> (22)
#> expr: evaluate::evaluate(code, child_env(env), new_device = TRUE, output_handler = output_handler)
#> env:  [frame 0x560eb07c7f90]
#> 
#> [[17]]
#> <frame 22> (21)
#> expr: downlit::evaluate_and_highlight(code, fig_save = fig_save_topic,  <...>
#> env:  [frame 0x560eaf961bd0]
#> 
#> [[18]]
#> <frame 21> (20)
#> expr: highlight_examples(code, topic, env = env)
#> env:  [frame 0x560eaf9ba708]
#> 
#> [[19]]
#> <frame 20> (19)
#> expr: run_examples(tags$tag_examples[[1]], env = new.env(parent = globalenv()),  <...>
#> env:  [frame 0x560eb270fc70]
#> 
#> [[20]]
#> <frame 19> (17)
#> expr: data_reference_topic(topic, pkg, examples = examples, run_dont_run = run_dont_run)
#> env:  [frame 0x560eb13af9a8]
#> 
#> [[21]]
#> <frame 18> (17)
#> expr: withCallingHandlers(data_reference_topic(topic, pkg, examples = examples,  <...>
#> env:  [frame 0x560eb13af040]
#> 
#> [[22]]
#> <frame 17> (16)
#> expr: .f(.x[[i]], ...)
#> env:  [frame 0x560eb05151d0]
#> 
#> [[23]]
#> <frame 16> (15)
#> expr: purrr::map(topics, build_reference_topic, pkg = pkg, lazy = lazy,  <...>
#> env:  [frame 0x560eade2f628]
#> 
#> [[24]]
#> <frame 15> (14)
#> expr: build_reference(pkg, lazy = lazy, examples = examples, run_dont_run = run_dont_run,  <...>
#> env:  [frame 0x560eab934750]
#> 
#> [[25]]
#> <frame 14> (13)
#> expr: build_site_local(pkg = pkg, examples = examples, run_dont_run = run_dont_run,  <...>
#> env:  [frame 0x560eaacff240]
#> 
#> [[26]]
#> <frame 13> (12)
#> expr: pkgdown::build_site(...)
#> env:  [frame 0x560eaac4a318]
#> 
#> [[27]]
#> <frame 12> (0)
#> expr: (function (..., crayon_enabled, crayon_colors, pkgdown_internet)  <...>
#> env:  [frame 0x560eab586628]
#> 
#> [[28]]
#> <frame 11> (0)
#> expr: (function (what, args, quote = FALSE, envir = parent.frame())  <...>
#> env:  [frame 0x560eab580200]
#> 
#> [[29]]
#> <frame 10> (0)
#> expr: do.call(do.call, c(readRDS("/tmp/RtmpVTMEEO/callr-fun-e127c12e3e3"),  <...>
#> env:  [frame 0x560eaab35d48]
#> 
#> [[30]]
#> <frame 9> (0)
#> expr: saveRDS(do.call(do.call, c(readRDS("/tmp/RtmpVTMEEO/callr-fun-e127c12e3e3"),  <...>
#> env:  [frame 0x560eaab36138]
#> 
#> [[31]]
#> <frame 8> (0)
#> expr: withCallingHandlers({ <...>
#> env:  [frame 0x560eaab36988]
#> 
#> [[32]]
#> <frame 7> (6)
#> expr: doTryCatch(return(expr), name, parentenv, handler)
#> env:  [frame 0x560eaab331e8]
#> 
#> [[33]]
#> <frame 6> (5)
#> expr: tryCatchOne(expr, names, parentenv, handlers[[1L]])
#> env:  [frame 0x560eaab33530]
#> 
#> [[34]]
#> <frame 5> (2)
#> expr: tryCatchList(expr, names[-nh], parentenv, handlers[-nh])
#> env:  [frame 0x560eaab338e8]
#> 
#> [[35]]
#> <frame 4> (3)
#> expr: doTryCatch(return(expr), name, parentenv, handler)
#> env:  [frame 0x560eaab33e98]
#> 
#> [[36]]
#> <frame 3> (2)
#> expr: tryCatchOne(tryCatchList(expr, names[-nh], parentenv, handlers[-nh]),  <...>
#> env:  [frame 0x560eaab341e0]
#> 
#> [[37]]
#> <frame 2> (1)
#> expr: tryCatchList(expr, classes, parentenv, handlers)
#> env:  [frame 0x560eaab34528]
#> 
#> [[38]]
#> <frame 1> (0)
#> expr: tryCatch(withCallingHandlers({ <...>
#> env:  [frame 0x560eaab34c60]
#> 
#> [[39]]
#> <frame 0> [global]
#> expr: NULL
#> env:  [global]
#> 
#> attr(,"class")
#> [1] "ctxt_stack" "stack"     

# We can trim the first layer of those:
fn(1)
#> [[1]]
#> <frame 36> (35)
#> expr: fn(1)
#> env:  [local 0x560eb06da200]
#> 
#> [[2]]
#> <frame 35> (34)
#> expr: eval(expr, envir, enclos)
#> env:  [local 0x560eb1714ac0]
#> 
#> [[3]]
#> <frame 34> (24)
#> expr: eval(expr, envir, enclos)
#> env:  [local 0x560eb06da040]
#> 
#> [[4]]
#> <frame 33> (24)
#> expr: withVisible(eval(expr, envir, enclos))
#> env:  [local 0x560eb06d9e10]
#> 
#> [[5]]
#> <frame 32> (24)
#> expr: withCallingHandlers(withVisible(eval(expr, envir, enclos)), warning = wHandler,  <...>
#> env:  [local 0x560eb06d9860]
#> 
#> [[6]]
#> <frame 31> (30)
#> expr: doTryCatch(return(expr), name, parentenv, handler)
#> env:  [local 0x560eb06d92e8]
#> 
#> [[7]]
#> <frame 30> (29)
#> expr: tryCatchOne(expr, names, parentenv, handlers[[1L]])
#> env:  [local 0x560eb06d8fa0]
#> 
#> [[8]]
#> <frame 29> (28)
#> expr: tryCatchList(expr, classes, parentenv, handlers)
#> env:  [local 0x560eb06d8c58]
#> 
#> [[9]]
#> <frame 28> (27)
#> expr: tryCatch(expr, error = function(e) { <...>
#> env:  [local 0x560eb06d8590]
#> 
#> [[10]]
#> <frame 27> (26)
#> expr: try(f, silent = TRUE)
#> env:  [local 0x560eb06dc190]
#> 
#> [[11]]
#> <frame 26> (24)
#> expr: handle(ev <- withCallingHandlers(withVisible(eval(expr, envir,  <...>
#> env:  [local 0x560eb06dc008]
#> 
#> [[12]]
#> <frame 25> (24)
#> expr: timing_fn(handle(ev <- withCallingHandlers(withVisible(eval(expr,  <...>
#> env:  [local 0x560eb06dbf28]
#> 
#> [[13]]
#> <frame 24> (23)
#> expr: evaluate_call(expr, parsed$src[[i]], envir = envir, enclos = enclos,  <...>
#> env:  [frame 0x560eb109f190]
#> 
#> [[14]]
#> <frame 23> (22)
#> expr: evaluate::evaluate(code, child_env(env), new_device = TRUE, output_handler = output_handler)
#> env:  [frame 0x560eb07c7f90]
#> 
#> [[15]]
#> <frame 22> (21)
#> expr: downlit::evaluate_and_highlight(code, fig_save = fig_save_topic,  <...>
#> env:  [frame 0x560eaf961bd0]
#> 
#> [[16]]
#> <frame 21> (20)
#> expr: highlight_examples(code, topic, env = env)
#> env:  [frame 0x560eaf9ba708]
#> 
#> [[17]]
#> <frame 20> (19)
#> expr: run_examples(tags$tag_examples[[1]], env = new.env(parent = globalenv()),  <...>
#> env:  [frame 0x560eb270fc70]
#> 
#> [[18]]
#> <frame 19> (17)
#> expr: data_reference_topic(topic, pkg, examples = examples, run_dont_run = run_dont_run)
#> env:  [frame 0x560eb13af9a8]
#> 
#> [[19]]
#> <frame 18> (17)
#> expr: withCallingHandlers(data_reference_topic(topic, pkg, examples = examples,  <...>
#> env:  [frame 0x560eb13af040]
#> 
#> [[20]]
#> <frame 17> (16)
#> expr: .f(.x[[i]], ...)
#> env:  [frame 0x560eb05151d0]
#> 
#> [[21]]
#> <frame 16> (15)
#> expr: purrr::map(topics, build_reference_topic, pkg = pkg, lazy = lazy,  <...>
#> env:  [frame 0x560eade2f628]
#> 
#> [[22]]
#> <frame 15> (14)
#> expr: build_reference(pkg, lazy = lazy, examples = examples, run_dont_run = run_dont_run,  <...>
#> env:  [frame 0x560eab934750]
#> 
#> [[23]]
#> <frame 14> (13)
#> expr: build_site_local(pkg = pkg, examples = examples, run_dont_run = run_dont_run,  <...>
#> env:  [frame 0x560eaacff240]
#> 
#> [[24]]
#> <frame 13> (12)
#> expr: pkgdown::build_site(...)
#> env:  [frame 0x560eaac4a318]
#> 
#> [[25]]
#> <frame 12> (0)
#> expr: (function (..., crayon_enabled, crayon_colors, pkgdown_internet)  <...>
#> env:  [frame 0x560eab586628]
#> 
#> [[26]]
#> <frame 11> (0)
#> expr: (function (what, args, quote = FALSE, envir = parent.frame())  <...>
#> env:  [frame 0x560eab580200]
#> 
#> [[27]]
#> <frame 10> (0)
#> expr: do.call(do.call, c(readRDS("/tmp/RtmpVTMEEO/callr-fun-e127c12e3e3"),  <...>
#> env:  [frame 0x560eaab35d48]
#> 
#> [[28]]
#> <frame 9> (0)
#> expr: saveRDS(do.call(do.call, c(readRDS("/tmp/RtmpVTMEEO/callr-fun-e127c12e3e3"),  <...>
#> env:  [frame 0x560eaab36138]
#> 
#> [[29]]
#> <frame 8> (0)
#> expr: withCallingHandlers({ <...>
#> env:  [frame 0x560eaab36988]
#> 
#> [[30]]
#> <frame 7> (6)
#> expr: doTryCatch(return(expr), name, parentenv, handler)
#> env:  [frame 0x560eaab331e8]
#> 
#> [[31]]
#> <frame 6> (5)
#> expr: tryCatchOne(expr, names, parentenv, handlers[[1L]])
#> env:  [frame 0x560eaab33530]
#> 
#> [[32]]
#> <frame 5> (2)
#> expr: tryCatchList(expr, names[-nh], parentenv, handlers[-nh])
#> env:  [frame 0x560eaab338e8]
#> 
#> [[33]]
#> <frame 4> (3)
#> expr: doTryCatch(return(expr), name, parentenv, handler)
#> env:  [frame 0x560eaab33e98]
#> 
#> [[34]]
#> <frame 3> (2)
#> expr: tryCatchOne(tryCatchList(expr, names[-nh], parentenv, handlers[-nh]),  <...>
#> env:  [frame 0x560eaab341e0]
#> 
#> [[35]]
#> <frame 2> (1)
#> expr: tryCatchList(expr, classes, parentenv, handlers)
#> env:  [frame 0x560eaab34528]
#> 
#> [[36]]
#> <frame 1> (0)
#> expr: tryCatch(withCallingHandlers({ <...>
#> env:  [frame 0x560eaab34c60]
#> 
#> [[37]]
#> <frame 0> [global]
#> expr: NULL
#> env:  [global]
#> 
#> attr(,"class")
#> [1] "ctxt_stack" "stack"     

# The outside intervening frames (at the fn() call site) are still
# returned, but can be trimmed as well:
identity(identity(fn(1)))
#> [[1]]
#> <frame 38> (35)
#> expr: fn(1)
#> env:  [local 0x560eb237f5e0]
#> 
#> [[2]]
#> <frame 37> (35)
#> expr: identity(fn(1))
#> env:  [local 0x560eb237f4c8]
#> 
#> [[3]]
#> <frame 36> (35)
#> expr: identity(identity(fn(1)))
#> env:  [local 0x560eb237f3b0]
#> 
#> [[4]]
#> <frame 35> (34)
#> expr: eval(expr, envir, enclos)
#> env:  [local 0x560eb1714ac0]
#> 
#> [[5]]
#> <frame 34> (24)
#> expr: eval(expr, envir, enclos)
#> env:  [local 0x560eb237f1f0]
#> 
#> [[6]]
#> <frame 33> (24)
#> expr: withVisible(eval(expr, envir, enclos))
#> env:  [local 0x560eb237efc0]
#> 
#> [[7]]
#> <frame 32> (24)
#> expr: withCallingHandlers(withVisible(eval(expr, envir, enclos)), warning = wHandler,  <...>
#> env:  [local 0x560eb237ea10]
#> 
#> [[8]]
#> <frame 31> (30)
#> expr: doTryCatch(return(expr), name, parentenv, handler)
#> env:  [local 0x560eb237e498]
#> 
#> [[9]]
#> <frame 30> (29)
#> expr: tryCatchOne(expr, names, parentenv, handlers[[1L]])
#> env:  [local 0x560eb2381f80]
#> 
#> [[10]]
#> <frame 29> (28)
#> expr: tryCatchList(expr, classes, parentenv, handlers)
#> env:  [local 0x560eb2381c38]
#> 
#> [[11]]
#> <frame 28> (27)
#> expr: tryCatch(expr, error = function(e) { <...>
#> env:  [local 0x560eb2381570]
#> 
#> [[12]]
#> <frame 27> (26)
#> expr: try(f, silent = TRUE)
#> env:  [local 0x560eb2381340]
#> 
#> [[13]]
#> <frame 26> (24)
#> expr: handle(ev <- withCallingHandlers(withVisible(eval(expr, envir,  <...>
#> env:  [local 0x560eb23811b8]
#> 
#> [[14]]
#> <frame 25> (24)
#> expr: timing_fn(handle(ev <- withCallingHandlers(withVisible(eval(expr,  <...>
#> env:  [local 0x560eb23810d8]
#> 
#> [[15]]
#> <frame 24> (23)
#> expr: evaluate_call(expr, parsed$src[[i]], envir = envir, enclos = enclos,  <...>
#> env:  [frame 0x560eb10e2560]
#> 
#> [[16]]
#> <frame 23> (22)
#> expr: evaluate::evaluate(code, child_env(env), new_device = TRUE, output_handler = output_handler)
#> env:  [frame 0x560eb07c7f90]
#> 
#> [[17]]
#> <frame 22> (21)
#> expr: downlit::evaluate_and_highlight(code, fig_save = fig_save_topic,  <...>
#> env:  [frame 0x560eaf961bd0]
#> 
#> [[18]]
#> <frame 21> (20)
#> expr: highlight_examples(code, topic, env = env)
#> env:  [frame 0x560eaf9ba708]
#> 
#> [[19]]
#> <frame 20> (19)
#> expr: run_examples(tags$tag_examples[[1]], env = new.env(parent = globalenv()),  <...>
#> env:  [frame 0x560eb270fc70]
#> 
#> [[20]]
#> <frame 19> (17)
#> expr: data_reference_topic(topic, pkg, examples = examples, run_dont_run = run_dont_run)
#> env:  [frame 0x560eb13af9a8]
#> 
#> [[21]]
#> <frame 18> (17)
#> expr: withCallingHandlers(data_reference_topic(topic, pkg, examples = examples,  <...>
#> env:  [frame 0x560eb13af040]
#> 
#> [[22]]
#> <frame 17> (16)
#> expr: .f(.x[[i]], ...)
#> env:  [frame 0x560eb05151d0]
#> 
#> [[23]]
#> <frame 16> (15)
#> expr: purrr::map(topics, build_reference_topic, pkg = pkg, lazy = lazy,  <...>
#> env:  [frame 0x560eade2f628]
#> 
#> [[24]]
#> <frame 15> (14)
#> expr: build_reference(pkg, lazy = lazy, examples = examples, run_dont_run = run_dont_run,  <...>
#> env:  [frame 0x560eab934750]
#> 
#> [[25]]
#> <frame 14> (13)
#> expr: build_site_local(pkg = pkg, examples = examples, run_dont_run = run_dont_run,  <...>
#> env:  [frame 0x560eaacff240]
#> 
#> [[26]]
#> <frame 13> (12)
#> expr: pkgdown::build_site(...)
#> env:  [frame 0x560eaac4a318]
#> 
#> [[27]]
#> <frame 12> (0)
#> expr: (function (..., crayon_enabled, crayon_colors, pkgdown_internet)  <...>
#> env:  [frame 0x560eab586628]
#> 
#> [[28]]
#> <frame 11> (0)
#> expr: (function (what, args, quote = FALSE, envir = parent.frame())  <...>
#> env:  [frame 0x560eab580200]
#> 
#> [[29]]
#> <frame 10> (0)
#> expr: do.call(do.call, c(readRDS("/tmp/RtmpVTMEEO/callr-fun-e127c12e3e3"),  <...>
#> env:  [frame 0x560eaab35d48]
#> 
#> [[30]]
#> <frame 9> (0)
#> expr: saveRDS(do.call(do.call, c(readRDS("/tmp/RtmpVTMEEO/callr-fun-e127c12e3e3"),  <...>
#> env:  [frame 0x560eaab36138]
#> 
#> [[31]]
#> <frame 8> (0)
#> expr: withCallingHandlers({ <...>
#> env:  [frame 0x560eaab36988]
#> 
#> [[32]]
#> <frame 7> (6)
#> expr: doTryCatch(return(expr), name, parentenv, handler)
#> env:  [frame 0x560eaab331e8]
#> 
#> [[33]]
#> <frame 6> (5)
#> expr: tryCatchOne(expr, names, parentenv, handlers[[1L]])
#> env:  [frame 0x560eaab33530]
#> 
#> [[34]]
#> <frame 5> (2)
#> expr: tryCatchList(expr, names[-nh], parentenv, handlers[-nh])
#> env:  [frame 0x560eaab338e8]
#> 
#> [[35]]
#> <frame 4> (3)
#> expr: doTryCatch(return(expr), name, parentenv, handler)
#> env:  [frame 0x560eaab33e98]
#> 
#> [[36]]
#> <frame 3> (2)
#> expr: tryCatchOne(tryCatchList(expr, names[-nh], parentenv, handlers[-nh]),  <...>
#> env:  [frame 0x560eaab341e0]
#> 
#> [[37]]
#> <frame 2> (1)
#> expr: tryCatchList(expr, classes, parentenv, handlers)
#> env:  [frame 0x560eaab34528]
#> 
#> [[38]]
#> <frame 1> (0)
#> expr: tryCatch(withCallingHandlers({ <...>
#> env:  [frame 0x560eaab34c60]
#> 
#> [[39]]
#> <frame 0> [global]
#> expr: NULL
#> env:  [global]
#> 
#> attr(,"class")
#> [1] "ctxt_stack" "stack"     
identity(identity(fn(2)))
#> [[1]]
#> <frame 35> (34)
#> expr: eval(expr, envir, enclos)
#> env:  [local 0x560eb1714ac0]
#> 
#> [[2]]
#> <frame 34> (24)
#> expr: eval(expr, envir, enclos)
#> env:  [local 0x560eb065e9a0]
#> 
#> [[3]]
#> <frame 33> (24)
#> expr: withVisible(eval(expr, envir, enclos))
#> env:  [local 0x560eb065e770]
#> 
#> [[4]]
#> <frame 32> (24)
#> expr: withCallingHandlers(withVisible(eval(expr, envir, enclos)), warning = wHandler,  <...>
#> env:  [local 0x560eb0661ff0]
#> 
#> [[5]]
#> <frame 31> (30)
#> expr: doTryCatch(return(expr), name, parentenv, handler)
#> env:  [local 0x560eb0661a40]
#> 
#> [[6]]
#> <frame 30> (29)
#> expr: tryCatchOne(expr, names, parentenv, handlers[[1L]])
#> env:  [local 0x560eb06616f8]
#> 
#> [[7]]
#> <frame 29> (28)
#> expr: tryCatchList(expr, classes, parentenv, handlers)
#> env:  [local 0x560eb06613b0]
#> 
#> [[8]]
#> <frame 28> (27)
#> expr: tryCatch(expr, error = function(e) { <...>
#> env:  [local 0x560eb0660ce8]
#> 
#> [[9]]
#> <frame 27> (26)
#> expr: try(f, silent = TRUE)
#> env:  [local 0x560eb0660ab8]
#> 
#> [[10]]
#> <frame 26> (24)
#> expr: handle(ev <- withCallingHandlers(withVisible(eval(expr, envir,  <...>
#> env:  [local 0x560eb0660930]
#> 
#> [[11]]
#> <frame 25> (24)
#> expr: timing_fn(handle(ev <- withCallingHandlers(withVisible(eval(expr,  <...>
#> env:  [local 0x560eb0660850]
#> 
#> [[12]]
#> <frame 24> (23)
#> expr: evaluate_call(expr, parsed$src[[i]], envir = envir, enclos = enclos,  <...>
#> env:  [frame 0x560eb2561498]
#> 
#> [[13]]
#> <frame 23> (22)
#> expr: evaluate::evaluate(code, child_env(env), new_device = TRUE, output_handler = output_handler)
#> env:  [frame 0x560eb07c7f90]
#> 
#> [[14]]
#> <frame 22> (21)
#> expr: downlit::evaluate_and_highlight(code, fig_save = fig_save_topic,  <...>
#> env:  [frame 0x560eaf961bd0]
#> 
#> [[15]]
#> <frame 21> (20)
#> expr: highlight_examples(code, topic, env = env)
#> env:  [frame 0x560eaf9ba708]
#> 
#> [[16]]
#> <frame 20> (19)
#> expr: run_examples(tags$tag_examples[[1]], env = new.env(parent = globalenv()),  <...>
#> env:  [frame 0x560eb270fc70]
#> 
#> [[17]]
#> <frame 19> (17)
#> expr: data_reference_topic(topic, pkg, examples = examples, run_dont_run = run_dont_run)
#> env:  [frame 0x560eb13af9a8]
#> 
#> [[18]]
#> <frame 18> (17)
#> expr: withCallingHandlers(data_reference_topic(topic, pkg, examples = examples,  <...>
#> env:  [frame 0x560eb13af040]
#> 
#> [[19]]
#> <frame 17> (16)
#> expr: .f(.x[[i]], ...)
#> env:  [frame 0x560eb05151d0]
#> 
#> [[20]]
#> <frame 16> (15)
#> expr: purrr::map(topics, build_reference_topic, pkg = pkg, lazy = lazy,  <...>
#> env:  [frame 0x560eade2f628]
#> 
#> [[21]]
#> <frame 15> (14)
#> expr: build_reference(pkg, lazy = lazy, examples = examples, run_dont_run = run_dont_run,  <...>
#> env:  [frame 0x560eab934750]
#> 
#> [[22]]
#> <frame 14> (13)
#> expr: build_site_local(pkg = pkg, examples = examples, run_dont_run = run_dont_run,  <...>
#> env:  [frame 0x560eaacff240]
#> 
#> [[23]]
#> <frame 13> (12)
#> expr: pkgdown::build_site(...)
#> env:  [frame 0x560eaac4a318]
#> 
#> [[24]]
#> <frame 12> (0)
#> expr: (function (..., crayon_enabled, crayon_colors, pkgdown_internet)  <...>
#> env:  [frame 0x560eab586628]
#> 
#> [[25]]
#> <frame 11> (0)
#> expr: (function (what, args, quote = FALSE, envir = parent.frame())  <...>
#> env:  [frame 0x560eab580200]
#> 
#> [[26]]
#> <frame 10> (0)
#> expr: do.call(do.call, c(readRDS("/tmp/RtmpVTMEEO/callr-fun-e127c12e3e3"),  <...>
#> env:  [frame 0x560eaab35d48]
#> 
#> [[27]]
#> <frame 9> (0)
#> expr: saveRDS(do.call(do.call, c(readRDS("/tmp/RtmpVTMEEO/callr-fun-e127c12e3e3"),  <...>
#> env:  [frame 0x560eaab36138]
#> 
#> [[28]]
#> <frame 8> (0)
#> expr: withCallingHandlers({ <...>
#> env:  [frame 0x560eaab36988]
#> 
#> [[29]]
#> <frame 7> (6)
#> expr: doTryCatch(return(expr), name, parentenv, handler)
#> env:  [frame 0x560eaab331e8]
#> 
#> [[30]]
#> <frame 6> (5)
#> expr: tryCatchOne(expr, names, parentenv, handlers[[1L]])
#> env:  [frame 0x560eaab33530]
#> 
#> [[31]]
#> <frame 5> (2)
#> expr: tryCatchList(expr, names[-nh], parentenv, handlers[-nh])
#> env:  [frame 0x560eaab338e8]
#> 
#> [[32]]
#> <frame 4> (3)
#> expr: doTryCatch(return(expr), name, parentenv, handler)
#> env:  [frame 0x560eaab33e98]
#> 
#> [[33]]
#> <frame 3> (2)
#> expr: tryCatchOne(tryCatchList(expr, names[-nh], parentenv, handlers[-nh]),  <...>
#> env:  [frame 0x560eaab341e0]
#> 
#> [[34]]
#> <frame 2> (1)
#> expr: tryCatchList(expr, classes, parentenv, handlers)
#> env:  [frame 0x560eaab34528]
#> 
#> [[35]]
#> <frame 1> (0)
#> expr: tryCatch(withCallingHandlers({ <...>
#> env:  [frame 0x560eaab34c60]
#> 
#> [[36]]
#> <frame 0> [global]
#> expr: NULL
#> env:  [global]
#> 
#> attr(,"class")
#> [1] "ctxt_stack" "stack"     

g <- function(trim) identity(identity(fn(trim)))
g(2)
#> [[1]]
#> <frame 36> (35)
#> expr: g(2)
#> env:  [local 0x560eb0f59738]
#> 
#> [[2]]
#> <frame 35> (34)
#> expr: eval(expr, envir, enclos)
#> env:  [local 0x560eb1714ac0]
#> 
#> [[3]]
#> <frame 34> (24)
#> expr: eval(expr, envir, enclos)
#> env:  [local 0x560eb0f59578]
#> 
#> [[4]]
#> <frame 33> (24)
#> expr: withVisible(eval(expr, envir, enclos))
#> env:  [local 0x560eb0f59348]
#> 
#> [[5]]
#> <frame 32> (24)
#> expr: withCallingHandlers(withVisible(eval(expr, envir, enclos)), warning = wHandler,  <...>
#> env:  [local 0x560eb0f5cbc8]
#> 
#> [[6]]
#> <frame 31> (30)
#> expr: doTryCatch(return(expr), name, parentenv, handler)
#> env:  [local 0x560eb0f5c650]
#> 
#> [[7]]
#> <frame 30> (29)
#> expr: tryCatchOne(expr, names, parentenv, handlers[[1L]])
#> env:  [local 0x560eb0f5c308]
#> 
#> [[8]]
#> <frame 29> (28)
#> expr: tryCatchList(expr, classes, parentenv, handlers)
#> env:  [local 0x560eb0f5bfc0]
#> 
#> [[9]]
#> <frame 28> (27)
#> expr: tryCatch(expr, error = function(e) { <...>
#> env:  [local 0x560eb0f5b888]
#> 
#> [[10]]
#> <frame 27> (26)
#> expr: try(f, silent = TRUE)
#> env:  [local 0x560eb0f5b658]
#> 
#> [[11]]
#> <frame 26> (24)
#> expr: handle(ev <- withCallingHandlers(withVisible(eval(expr, envir,  <...>
#> env:  [local 0x560eb0f5b4d0]
#> 
#> [[12]]
#> <frame 25> (24)
#> expr: timing_fn(handle(ev <- withCallingHandlers(withVisible(eval(expr,  <...>
#> env:  [local 0x560eb0f5b3f0]
#> 
#> [[13]]
#> <frame 24> (23)
#> expr: evaluate_call(expr, parsed$src[[i]], envir = envir, enclos = enclos,  <...>
#> env:  [frame 0x560eaff3b318]
#> 
#> [[14]]
#> <frame 23> (22)
#> expr: evaluate::evaluate(code, child_env(env), new_device = TRUE, output_handler = output_handler)
#> env:  [frame 0x560eb07c7f90]
#> 
#> [[15]]
#> <frame 22> (21)
#> expr: downlit::evaluate_and_highlight(code, fig_save = fig_save_topic,  <...>
#> env:  [frame 0x560eaf961bd0]
#> 
#> [[16]]
#> <frame 21> (20)
#> expr: highlight_examples(code, topic, env = env)
#> env:  [frame 0x560eaf9ba708]
#> 
#> [[17]]
#> <frame 20> (19)
#> expr: run_examples(tags$tag_examples[[1]], env = new.env(parent = globalenv()),  <...>
#> env:  [frame 0x560eb270fc70]
#> 
#> [[18]]
#> <frame 19> (17)
#> expr: data_reference_topic(topic, pkg, examples = examples, run_dont_run = run_dont_run)
#> env:  [frame 0x560eb13af9a8]
#> 
#> [[19]]
#> <frame 18> (17)
#> expr: withCallingHandlers(data_reference_topic(topic, pkg, examples = examples,  <...>
#> env:  [frame 0x560eb13af040]
#> 
#> [[20]]
#> <frame 17> (16)
#> expr: .f(.x[[i]], ...)
#> env:  [frame 0x560eb05151d0]
#> 
#> [[21]]
#> <frame 16> (15)
#> expr: purrr::map(topics, build_reference_topic, pkg = pkg, lazy = lazy,  <...>
#> env:  [frame 0x560eade2f628]
#> 
#> [[22]]
#> <frame 15> (14)
#> expr: build_reference(pkg, lazy = lazy, examples = examples, run_dont_run = run_dont_run,  <...>
#> env:  [frame 0x560eab934750]
#> 
#> [[23]]
#> <frame 14> (13)
#> expr: build_site_local(pkg = pkg, examples = examples, run_dont_run = run_dont_run,  <...>
#> env:  [frame 0x560eaacff240]
#> 
#> [[24]]
#> <frame 13> (12)
#> expr: pkgdown::build_site(...)
#> env:  [frame 0x560eaac4a318]
#> 
#> [[25]]
#> <frame 12> (0)
#> expr: (function (..., crayon_enabled, crayon_colors, pkgdown_internet)  <...>
#> env:  [frame 0x560eab586628]
#> 
#> [[26]]
#> <frame 11> (0)
#> expr: (function (what, args, quote = FALSE, envir = parent.frame())  <...>
#> env:  [frame 0x560eab580200]
#> 
#> [[27]]
#> <frame 10> (0)
#> expr: do.call(do.call, c(readRDS("/tmp/RtmpVTMEEO/callr-fun-e127c12e3e3"),  <...>
#> env:  [frame 0x560eaab35d48]
#> 
#> [[28]]
#> <frame 9> (0)
#> expr: saveRDS(do.call(do.call, c(readRDS("/tmp/RtmpVTMEEO/callr-fun-e127c12e3e3"),  <...>
#> env:  [frame 0x560eaab36138]
#> 
#> [[29]]
#> <frame 8> (0)
#> expr: withCallingHandlers({ <...>
#> env:  [frame 0x560eaab36988]
#> 
#> [[30]]
#> <frame 7> (6)
#> expr: doTryCatch(return(expr), name, parentenv, handler)
#> env:  [frame 0x560eaab331e8]
#> 
#> [[31]]
#> <frame 6> (5)
#> expr: tryCatchOne(expr, names, parentenv, handlers[[1L]])
#> env:  [frame 0x560eaab33530]
#> 
#> [[32]]
#> <frame 5> (2)
#> expr: tryCatchList(expr, names[-nh], parentenv, handlers[-nh])
#> env:  [frame 0x560eaab338e8]
#> 
#> [[33]]
#> <frame 4> (3)
#> expr: doTryCatch(return(expr), name, parentenv, handler)
#> env:  [frame 0x560eaab33e98]
#> 
#> [[34]]
#> <frame 3> (2)
#> expr: tryCatchOne(tryCatchList(expr, names[-nh], parentenv, handlers[-nh]),  <...>
#> env:  [frame 0x560eaab341e0]
#> 
#> [[35]]
#> <frame 2> (1)
#> expr: tryCatchList(expr, classes, parentenv, handlers)
#> env:  [frame 0x560eaab34528]
#> 
#> [[36]]
#> <frame 1> (0)
#> expr: tryCatch(withCallingHandlers({ <...>
#> env:  [frame 0x560eaab34c60]
#> 
#> [[37]]
#> <frame 0> [global]
#> expr: NULL
#> env:  [global]
#> 
#> attr(,"class")
#> [1] "ctxt_stack" "stack"     
g(3)
#> [[1]]
#> <frame 35> (34)
#> expr: eval(expr, envir, enclos)
#> env:  [local 0x560eb1714ac0]
#> 
#> [[2]]
#> <frame 34> (24)
#> expr: eval(expr, envir, enclos)
#> env:  [local 0x560eb139eab8]
#> 
#> [[3]]
#> <frame 33> (24)
#> expr: withVisible(eval(expr, envir, enclos))
#> env:  [local 0x560eb139e888]
#> 
#> [[4]]
#> <frame 32> (24)
#> expr: withCallingHandlers(withVisible(eval(expr, envir, enclos)), warning = wHandler,  <...>
#> env:  [local 0x560eb139e2d8]
#> 
#> [[5]]
#> <frame 31> (30)
#> expr: doTryCatch(return(expr), name, parentenv, handler)
#> env:  [local 0x560eb139dd60]
#> 
#> [[6]]
#> <frame 30> (29)
#> expr: tryCatchOne(expr, names, parentenv, handlers[[1L]])
#> env:  [local 0x560eb13a3768]
#> 
#> [[7]]
#> <frame 29> (28)
#> expr: tryCatchList(expr, classes, parentenv, handlers)
#> env:  [local 0x560eb13a33e8]
#> 
#> [[8]]
#> <frame 28> (27)
#> expr: tryCatch(expr, error = function(e) { <...>
#> env:  [local 0x560eb13a2d20]
#> 
#> [[9]]
#> <frame 27> (26)
#> expr: try(f, silent = TRUE)
#> env:  [local 0x560eb13a2af0]
#> 
#> [[10]]
#> <frame 26> (24)
#> expr: handle(ev <- withCallingHandlers(withVisible(eval(expr, envir,  <...>
#> env:  [local 0x560eb13a2968]
#> 
#> [[11]]
#> <frame 25> (24)
#> expr: timing_fn(handle(ev <- withCallingHandlers(withVisible(eval(expr,  <...>
#> env:  [local 0x560eb13a2888]
#> 
#> [[12]]
#> <frame 24> (23)
#> expr: evaluate_call(expr, parsed$src[[i]], envir = envir, enclos = enclos,  <...>
#> env:  [frame 0x560eb1937608]
#> 
#> [[13]]
#> <frame 23> (22)
#> expr: evaluate::evaluate(code, child_env(env), new_device = TRUE, output_handler = output_handler)
#> env:  [frame 0x560eb07c7f90]
#> 
#> [[14]]
#> <frame 22> (21)
#> expr: downlit::evaluate_and_highlight(code, fig_save = fig_save_topic,  <...>
#> env:  [frame 0x560eaf961bd0]
#> 
#> [[15]]
#> <frame 21> (20)
#> expr: highlight_examples(code, topic, env = env)
#> env:  [frame 0x560eaf9ba708]
#> 
#> [[16]]
#> <frame 20> (19)
#> expr: run_examples(tags$tag_examples[[1]], env = new.env(parent = globalenv()),  <...>
#> env:  [frame 0x560eb270fc70]
#> 
#> [[17]]
#> <frame 19> (17)
#> expr: data_reference_topic(topic, pkg, examples = examples, run_dont_run = run_dont_run)
#> env:  [frame 0x560eb13af9a8]
#> 
#> [[18]]
#> <frame 18> (17)
#> expr: withCallingHandlers(data_reference_topic(topic, pkg, examples = examples,  <...>
#> env:  [frame 0x560eb13af040]
#> 
#> [[19]]
#> <frame 17> (16)
#> expr: .f(.x[[i]], ...)
#> env:  [frame 0x560eb05151d0]
#> 
#> [[20]]
#> <frame 16> (15)
#> expr: purrr::map(topics, build_reference_topic, pkg = pkg, lazy = lazy,  <...>
#> env:  [frame 0x560eade2f628]
#> 
#> [[21]]
#> <frame 15> (14)
#> expr: build_reference(pkg, lazy = lazy, examples = examples, run_dont_run = run_dont_run,  <...>
#> env:  [frame 0x560eab934750]
#> 
#> [[22]]
#> <frame 14> (13)
#> expr: build_site_local(pkg = pkg, examples = examples, run_dont_run = run_dont_run,  <...>
#> env:  [frame 0x560eaacff240]
#> 
#> [[23]]
#> <frame 13> (12)
#> expr: pkgdown::build_site(...)
#> env:  [frame 0x560eaac4a318]
#> 
#> [[24]]
#> <frame 12> (0)
#> expr: (function (..., crayon_enabled, crayon_colors, pkgdown_internet)  <...>
#> env:  [frame 0x560eab586628]
#> 
#> [[25]]
#> <frame 11> (0)
#> expr: (function (what, args, quote = FALSE, envir = parent.frame())  <...>
#> env:  [frame 0x560eab580200]
#> 
#> [[26]]
#> <frame 10> (0)
#> expr: do.call(do.call, c(readRDS("/tmp/RtmpVTMEEO/callr-fun-e127c12e3e3"),  <...>
#> env:  [frame 0x560eaab35d48]
#> 
#> [[27]]
#> <frame 9> (0)
#> expr: saveRDS(do.call(do.call, c(readRDS("/tmp/RtmpVTMEEO/callr-fun-e127c12e3e3"),  <...>
#> env:  [frame 0x560eaab36138]
#> 
#> [[28]]
#> <frame 8> (0)
#> expr: withCallingHandlers({ <...>
#> env:  [frame 0x560eaab36988]
#> 
#> [[29]]
#> <frame 7> (6)
#> expr: doTryCatch(return(expr), name, parentenv, handler)
#> env:  [frame 0x560eaab331e8]
#> 
#> [[30]]
#> <frame 6> (5)
#> expr: tryCatchOne(expr, names, parentenv, handlers[[1L]])
#> env:  [frame 0x560eaab33530]
#> 
#> [[31]]
#> <frame 5> (2)
#> expr: tryCatchList(expr, names[-nh], parentenv, handlers[-nh])
#> env:  [frame 0x560eaab338e8]
#> 
#> [[32]]
#> <frame 4> (3)
#> expr: doTryCatch(return(expr), name, parentenv, handler)
#> env:  [frame 0x560eaab33e98]
#> 
#> [[33]]
#> <frame 3> (2)
#> expr: tryCatchOne(tryCatchList(expr, names[-nh], parentenv, handlers[-nh]),  <...>
#> env:  [frame 0x560eaab341e0]
#> 
#> [[34]]
#> <frame 2> (1)
#> expr: tryCatchList(expr, classes, parentenv, handlers)
#> env:  [frame 0x560eaab34528]
#> 
#> [[35]]
#> <frame 1> (0)
#> expr: tryCatch(withCallingHandlers({ <...>
#> env:  [frame 0x560eaab34c60]
#> 
#> [[36]]
#> <frame 0> [global]
#> expr: NULL
#> env:  [global]
#> 
#> attr(,"class")
#> [1] "ctxt_stack" "stack"