---
title: "Printing a tibble: Tracking control flow"
output: html_vignette
vignette: >
  %\VignetteIndexEntry{Printing a tibble: Tracking control flow}
  %\VignetteEngine{knitr::rmarkdown}
  %\VignetteEncoding{UTF-8}
---

```{r, include = FALSE}
knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>"
)
```

What happens when a tibble is printed?
This vignette shows the actual control flow, powered by the [debugme package](https://github.com/r-lib/debugme#readme).
See `vignette("printing")` for a detailed description of the control and data flows.

To activate debugging, we need to set an environment variable before loading the pillar package.
As a result, debug strings in pillar's code are replaced with calls to a logging function.

By default, debugme also shows timestamps.
This is disabled to keep the output stable.

```{r eval = FALSE}
Sys.setenv(DEBUGME = "!!!!pillar")
Sys.setenv(DEBUGME_SHOW_TIMESTAMP = "no")

library(pillar)

tbl <- tibble::tibble(a = 1:3, b = tibble::tibble(c = 4:6, d = 7:9), e = 10:12)
print(tbl, width = 23)
```

```{r echo = FALSE}
writeLines(readLines("debugme.txt"))
```