diff --git a/DESCRIPTION b/DESCRIPTION index 683253864..312e9582d 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -19,7 +19,7 @@ Description: A suite of tools to build attractive command line interfaces License: MIT + file LICENSE URL: https://cli.r-lib.org, https://github.com/r-lib/cli BugReports: https://github.com/r-lib/cli/issues -Depends: +Depends: R (>= 3.4) Imports: utils @@ -60,4 +60,4 @@ Config/Needs/website: Config/testthat/edition: 3 Config/usethis/last-upkeep: 2025-04-25 Encoding: UTF-8 -RoxygenNote: 7.3.2.9000 +Config/roxygen2/version: 8.0.0 diff --git a/NEWS.md b/NEWS.md index 2a00fd245..6b74e10ed 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,5 +1,14 @@ # cli (development version) +* Multiple concurrent progress bar and status bars are now rendered + on separate lines on ANSI-capable terminals. Non-ANSI dynamic terminals + continue to show only the current bar (@simonpcouch, #819). + Set the new `cli.progress_multiline` option to `FALSE` to keep the + single-line behavior on ANSI terminals. + +* New `R_CLI_ANSI` environment variable that is equivalent to the + `cli.ansi` option (the option takes precedence). See `is_ansi_tty()`. + # cli 3.6.6 * New `{.num}` and `{.bytes}` inline styles to format numbers diff --git a/R/cliapp.R b/R/cliapp.R index e75b4fe17..633c51349 100644 --- a/R/cliapp.R +++ b/R/cliapp.R @@ -154,6 +154,9 @@ cliapp <- function( styles = NULL, delayed_item = NULL, status_bar = list(), + status_bar_lines = 0L, + status_bar_current = NULL, + status_bar_prev_content = "", margin = 0, output = NULL, diff --git a/R/internals.R b/R/internals.R index d13dd7098..4dd8fa27c 100644 --- a/R/internals.R +++ b/R/internals.R @@ -88,11 +88,11 @@ clii__cat_ln <- function(app, lines, indent, padding) { signal <- !identical(app$signal, FALSE) if (signal && length(app$status_bar)) { - clii__clear_status_bar(app) + clii__clear_all_status_bars(app) } app$cat(paste0(paste0(lines, "\n"), collapse = "")) if (signal && length(app$status_bar)) { - app$cat(paste0(app$status_bar[[1]]$content, "\r")) + clii__restore_status_bars(app) } } @@ -101,7 +101,7 @@ clii__vspace <- function(app, n) { sp <- strrep("\n", n - app$margin) signal <- !identical(app$signal, FALSE) if (signal && length(app$status_bar)) { - clii__clear_status_bar(app) + clii__clear_all_status_bars(app) } clii__message( sp, @@ -111,7 +111,7 @@ clii__vspace <- function(app, n) { ) app$margin <- n if (signal && length(app$status_bar)) { - app$cat(paste0(app$status_bar[[1]]$content, "\r")) + clii__restore_status_bars(app) } } } diff --git a/R/status-bar.R b/R/status-bar.R index 00164ca70..8007ef451 100644 --- a/R/status-bar.R +++ b/R/status-bar.R @@ -316,6 +316,20 @@ cli_process_failed <- function( # ----------------------------------------------------------------------- +is_progress_multiline <- function() { + opt <- getOption("cli.progress_multiline", TRUE) + if (isTRUE(opt)) { + return(TRUE) + } + if (isFALSE(opt)) { + return(FALSE) + } + throw(cli_error( + "Invalid value for cli.progress_multiline option.", + "i" = "It must be `TRUE` or `FALSE`, but it is {.type {opt}}." + )) +} + clii_status <- function( app, id, @@ -333,6 +347,7 @@ clii_status <- function( keep = keep, auto_result = auto_result ) + app$status_bar_current <- id if (isTRUE(getOption("cli.hide_cursor", TRUE)) && !isTRUE(globalenv)) { ansi_hide_cursor(app$output) } @@ -340,9 +355,9 @@ clii_status <- function( } clii_status_clear <- function(app, id, result, msg_done, msg_failed) { - ## If NA then the most recent one + ## If NA then the current one if (is.na(id)) { - id <- names(app$status_bar)[1] + id <- app$status_bar_current } ## If no active status bar, then ignore @@ -362,6 +377,10 @@ clii_status_clear <- function(app, id, result, msg_done, msg_failed) { } } + ## For done/failed, update content via clii_status_update (renders). + ## Save and restore status_bar_current so that clearing a non-current bar + ## doesn't shift which bar subsequent id-less operations target. + saved_current <- app$status_bar_current if (result == "done") { msg <- msg_done %||% app$status_bar[[id]]$msg_done clii_status_update(app, id, msg, NULL, NULL) @@ -371,47 +390,65 @@ clii_status_clear <- function(app, id, result, msg_done, msg_failed) { clii_status_update(app, id, msg, NULL, NULL) app$status_bar[[id]]$keep <- TRUE } + app$status_bar_current <- saved_current - if (names(app$status_bar)[1] == id) { - ## This is the active one + output <- get_real_output(app$output) + is_ansi <- is_ansi_tty(output) + is_multi <- is_ansi && is_progress_multiline() + is_displayed <- if (is_multi) TRUE else identical(app$status_bar_current, id) + + ## Clear/emit based on terminal type + if (is_multi && length(app$status_bar) > 1L) { + ## Multi-bar ANSI: clear all, emit kept content, re-render remaining + clii__clear_all_status_bars(app) if (app$status_bar[[id]]$keep) { - ## Keep? Just emit it - app$cat("\n") - } else { - ## Not keep? Remove it - clii__clear_status_bar(app) - } - if (isTRUE(getOption("cli.hide_cursor", TRUE))) { - ansi_show_cursor(app$output) + app$cat(paste0(app$status_bar[[id]]$content, "\n")) } - } else { + } else if (is_displayed) { if (app$status_bar[[id]]$keep) { - ## Keep? - clii__clear_status_bar(app) - app$cat(paste0(app$status_bar[[id]]$content, "\n")) - app$cat(paste0(app$status_bar[[1]]$content, "\r")) + app$cat("\n") } else { - ## Not keep? Nothing to output + clii__clear_all_status_bars(app) } + } else if (app$status_bar[[id]]$keep) { + clii__clear_all_status_bars(app) + app$cat(paste0(app$status_bar[[id]]$content, "\n")) } - ## Remove + ## Remove the bar app$status_bar[[id]] <- NULL - ## Switch to the previous one - if (length(app$status_bar)) { - app$cat(paste0(app$status_bar[[1]]$content, "\r")) + ## Update current pointer + if (identical(app$status_bar_current, id)) { + nms <- names(app$status_bar) + app$status_bar_current <- if (length(nms)) nms[length(nms)] else NULL + } + + ## Cursor visibility and restore remaining bars + if (length(app$status_bar) == 0L) { + app$status_bar_lines <- 0L + app$status_bar_prev_content <- "" + if (isTRUE(getOption("cli.hide_cursor", TRUE))) { + ansi_show_cursor(app$output) + } + } else if (is_ansi) { + clii__render_all_status_bars(app) + } else { + if (is_displayed && isTRUE(getOption("cli.hide_cursor", TRUE))) { + ansi_show_cursor(app$output) + } + clii__restore_status_bars(app) } } clii_status_update <- function(app, id, msg, msg_done, msg_failed) { - ## If NA then the most recent one + ## If NA then the current one if (is.na(id)) { - id <- names(app$status_bar)[1] + id <- app$status_bar_current } ## If no active status bar, then ignore - if (is.na(id)) { + if (is.null(id) || is.na(id)) { return(invisible()) } @@ -428,9 +465,6 @@ clii_status_update <- function(app, id, msg, msg_done, msg_failed) { return(invisible()) } - ## Do we need to clear the current content? - current <- paste0("", app$status_bar[[1]]$content) - ## Format the line content <- "" fmsg <- app$inline(msg) @@ -440,22 +474,22 @@ clii_status_update <- function(app, id, msg, msg_done, msg_failed) { content <- "" } - ## Update status bar, put it in front + ## Update content in place (stable order) app$status_bar[[id]]$content <- content - app$status_bar <- c( - app$status_bar[id], - app$status_bar[setdiff(names(app$status_bar), id)] - ) + app$status_bar_current <- id - ## New content, if it is an ANSI terminal we'll overwrite and clear - ## until the end of the line. Otherwise we add some space characters - ## to the content to make sure we clear up residual content. + ## Render output <- get_real_output(app$output) if (is_ansi_tty(output)) { - app$cat(paste0("\r", content, ANSI_EL, "\r")) + clii__render_all_status_bars(app) } else if (is_dynamic_tty(output)) { - nsp <- max(ansi_nchar(current) - ansi_nchar(content), 0) - app$cat(paste0("\r", content, strrep(" ", nsp), "\r")) + ## Non-ANSI dynamic TTY: show only the current bar + current_content <- app$status_bar[[id]]$content + prev <- app$status_bar_prev_content %||% "" + nsp <- max(ansi_nchar(prev) - ansi_nchar(current_content), 0) + app$cat(paste0("\r", current_content, strrep(" ", nsp), "\r")) + app$status_bar_prev_content <- current_content + app$status_bar_lines <- 1L } else { app$cat(paste0(content, "\n")) } @@ -466,13 +500,118 @@ clii_status_update <- function(app, id, msg, msg_done, msg_failed) { invisible() } -clii__clear_status_bar <- function(app) { +clii__clear_all_status_bars <- function(app) { + n <- app$status_bar_lines + if (n == 0L) { + return(invisible()) + } + output <- get_real_output(app$output) if (is_ansi_tty(output)) { - app$cat(paste0("\r", ANSI_EL)) + out <- "" + if (n > 1L) { + out <- ansi_cuu(n - 1L) + } + for (i in seq_len(n)) { + if (i < n) { + out <- paste0(out, "\r", ANSI_EL, "\n") + } else { + out <- paste0(out, "\r", ANSI_EL) + } + } + if (n > 1L) { + out <- paste0(out, ansi_cuu(n - 1L)) + } + app$cat(out) } else if (is_dynamic_tty(output)) { - text <- app$status_bar[[1]]$content + ## status_bar_prev_content tracks the painted width in the non-ANSI + ## dynamic branch (the ANSI path uses status_bar[[i]]$content directly). + ## Reset it unconditionally below in case the terminal mode flipped + ## between paint and clear. + text <- app$status_bar_prev_content %||% "" len <- ansi_nchar(text, type = "width") app$cat(paste0("\r", strrep(" ", len + rstudio_r_fix), "\r")) } + app$status_bar_lines <- 0L + app$status_bar_prev_content <- "" +} + +clii__render_all_status_bars <- function(app) { + full_n <- length(app$status_bar) + if (full_n == 0L) { + return(invisible()) + } + + output <- get_real_output(app$output) + if (!is_ansi_tty(output)) { + return(invisible()) + } + + ## When multiline is disabled, render only the current bar as a single line. + is_multi <- is_progress_multiline() + n <- if (is_multi) full_n else 1L + + prev <- app$status_bar_lines + out <- "" + + ## Move up to the top of previously painted area + if (prev > 1L) { + out <- ansi_cuu(prev - 1L) + } + + if (is_multi) { + ## Render each bar + for (i in seq_len(n)) { + content <- app$status_bar[[i]]$content + if (i < n) { + out <- paste0(out, "\r", content, ANSI_EL, "\n") + } else { + out <- paste0(out, "\r", content, ANSI_EL, "\r") + } + } + } else { + cid <- app$status_bar_current %||% names(app$status_bar)[full_n] + content <- app$status_bar[[cid]]$content + out <- paste0(out, "\r", content, ANSI_EL, "\r") + } + + ## If we previously had more lines, clear the leftover lines below + if (prev > n) { + for (i in seq_len(prev - n)) { + out <- paste0(out, "\n\r", ANSI_EL) + } + out <- paste0(out, ansi_cuu(prev - n), "\r") + } + + app$cat(out) + app$status_bar_lines <- n +} + +clii__restore_status_bars <- function(app) { + if (length(app$status_bar) == 0L) { + return(invisible()) + } + + output <- get_real_output(app$output) + if (is_ansi_tty(output)) { + if (is_progress_multiline() && length(app$status_bar) > 1L) { + clii__render_all_status_bars(app) + } else { + cid <- app$status_bar_current %||% + names(app$status_bar)[length(app$status_bar)] + content <- app$status_bar[[cid]]$content + app$cat(paste0(content, "\r")) + app$status_bar_lines <- 1L + } + } else if (is_dynamic_tty(output)) { + cid <- app$status_bar_current + if (!is.null(cid) && cid %in% names(app$status_bar)) { + content <- app$status_bar[[cid]]$content + } else { + content <- app$status_bar[[length(app$status_bar)]]$content + } + app$cat(paste0(content, "\r")) + app$status_bar_prev_content <- content + app$status_bar_lines <- 1L + } } diff --git a/R/tty.R b/R/tty.R index c9ad97cbf..b9b3c77bd 100644 --- a/R/tty.R +++ b/R/tty.R @@ -156,17 +156,27 @@ ANSI_ESC <- "\u001B[" ANSI_HIDE_CURSOR <- paste0(ANSI_ESC, "?25l") ANSI_SHOW_CURSOR <- paste0(ANSI_ESC, "?25h") ANSI_EL <- paste0(ANSI_ESC, "K") +ansi_cuu <- function(n) paste0(ANSI_ESC, n, "A") #' Detect if a stream support ANSI escape characters #' -#' We check that all of the following hold: -#' * The stream is a terminal. -#' * The platform is Unix. -#' * R is not running inside R.app (the macOS GUI). -#' * R is not running inside RStudio. -#' * R is not running inside Emacs. -#' * The terminal is not "dumb". -#' * `stream` is either the standard output or the standard error stream. +#' The detection mechanism is as follows: +#' 1. If the `cli.ansi` option is set to `TRUE`, `TRUE` is returned. +#' 1. If the `cli.ansi` option is set to `FALSE`, `FALSE` is returned. +#' 1. If the `R_CLI_ANSI` environment variable is set to `true` (case +#' insensitive), then `TRUE` is returned. +#' 1. If `R_CLI_ANSI` is not empty and set to `false` (case insensitive), +#' `FALSE` is returned. +#' 1. If R is running in the Positron console, then `TRUE` is returned, +#' with 'positron' added as a name. Positron does not currently support +#' hide/show cursor, scrolling regions, inserting and deleting lines +#' and the alternate screen buffer. +#' 1. Otherwise we autodetect, by checking that all of the following hold: +#' * The stream is a terminal, see [base::isatty()]. +#' * R is not running inside R.app (the macOS GUI). +#' * R is not running inside Emacs. +#' * The terminal is not "dumb". +#' * `stream` is either the standard output or the standard error stream. #' #' @inheritParams is_dynamic_tty #' @return `TRUE` or `FALSE`. @@ -180,20 +190,43 @@ is_ansi_tty <- function(stream = "auto") { stream <- get_real_output(stream) # Option takes precedence - opt <- getOption("cli.ansi") - if (isTRUE(opt)) { - return(TRUE) - } else if (identical(opt, FALSE)) { - return(FALSE) + if (!is.null(opt <- getOption("cli.ansi"))) { + if (isTRUE(opt)) { + return(TRUE) + } else if (identical(opt, FALSE)) { + return(FALSE) + } else { + throw(cli_error( + "Invalid value for option 'cli.ansi'", + "i" = "Expected TRUE or FALSE, got {.type {opt}}." + )) + } + } + + # Env var next + if ((x <- tolower(Sys.getenv("R_CLI_ANSI", ""))) != "") { + if (x %in% true_values) { + return(TRUE) + } else if (x %in% false_values) { + return(FALSE) + } else { + throw(cli_error( + "Invalid value for environment variable 'R_CLI_ANSI'", + "i" = "Expected one of {.val true} or {.val false}, got {x}." + )) + } + } + + if (.Platform$GUI == "Positron") { + return(c(positron = TRUE)) } - # RStudio is handled separately + # This does not currently happen, ever, but just in case if (rstudio$detect()[["ansi_tty"]] && is_stdx(stream)) { return(TRUE) } isatty(stream) && - .Platform$OS.type == "unix" && !is_rapp() && !is_emacs() && Sys.getenv("TERM", "") != "dumb" && diff --git a/R/utils.R b/R/utils.R index c83ff4614..7e2cf22a0 100644 --- a/R/utils.R +++ b/R/utils.R @@ -25,3 +25,6 @@ isFALSE <- function(x) { get_ppid <- function() { .Call(clic_getppid) } + +true_values <- c("true", "on", "yes", "y", "t", "1") +false_values <- c("false", "off", "no", "n", "f", "0") diff --git a/man/ansi-styles.Rd b/man/ansi-styles.Rd index 52dbc31fb..3d39ba889 100644 --- a/man/ansi-styles.Rd +++ b/man/ansi-styles.Rd @@ -265,9 +265,9 @@ style_italic(col_red(paste( ))) } \seealso{ -Other ANSI styling: -\code{\link{combine_ansi_styles}()}, -\code{\link{make_ansi_style}()}, -\code{\link{num_ansi_colors}()} +Other ANSI styling: +\code{\link[=combine_ansi_styles]{combine_ansi_styles()}}, +\code{\link[=make_ansi_style]{make_ansi_style()}}, +\code{\link[=num_ansi_colors]{num_ansi_colors()}} } \concept{ANSI styling} diff --git a/man/ansi_align.Rd b/man/ansi_align.Rd index 17a716875..33c79e5bd 100644 --- a/man/ansi_align.Rd +++ b/man/ansi_align.Rd @@ -81,15 +81,15 @@ boxx(astr) }} } \seealso{ -Other ANSI string operations: -\code{\link{ansi_columns}()}, -\code{\link{ansi_nchar}()}, -\code{\link{ansi_strsplit}()}, -\code{\link{ansi_strtrim}()}, -\code{\link{ansi_strwrap}()}, -\code{\link{ansi_substr}()}, -\code{\link{ansi_substring}()}, -\code{\link{ansi_toupper}()}, -\code{\link{ansi_trimws}()} +Other ANSI string operations: +\code{\link[=ansi_columns]{ansi_columns()}}, +\code{\link[=ansi_nchar]{ansi_nchar()}}, +\code{\link[=ansi_strsplit]{ansi_strsplit()}}, +\code{\link[=ansi_strtrim]{ansi_strtrim()}}, +\code{\link[=ansi_strwrap]{ansi_strwrap()}}, +\code{\link[=ansi_substr]{ansi_substr()}}, +\code{\link[=ansi_substring]{ansi_substring()}}, +\code{\link[=ansi_toupper]{ansi_toupper()}}, +\code{\link[=ansi_trimws]{ansi_trimws()}} } \concept{ANSI string operations} diff --git a/man/ansi_columns.Rd b/man/ansi_columns.Rd index dd9b1235c..a3dadbb25 100644 --- a/man/ansi_columns.Rd +++ b/man/ansi_columns.Rd @@ -66,15 +66,15 @@ boxx(fmt, padding = c(0,1,0,1), header = col_cyan("Columns")) }} } \seealso{ -Other ANSI string operations: -\code{\link{ansi_align}()}, -\code{\link{ansi_nchar}()}, -\code{\link{ansi_strsplit}()}, -\code{\link{ansi_strtrim}()}, -\code{\link{ansi_strwrap}()}, -\code{\link{ansi_substr}()}, -\code{\link{ansi_substring}()}, -\code{\link{ansi_toupper}()}, -\code{\link{ansi_trimws}()} +Other ANSI string operations: +\code{\link[=ansi_align]{ansi_align()}}, +\code{\link[=ansi_nchar]{ansi_nchar()}}, +\code{\link[=ansi_strsplit]{ansi_strsplit()}}, +\code{\link[=ansi_strtrim]{ansi_strtrim()}}, +\code{\link[=ansi_strwrap]{ansi_strwrap()}}, +\code{\link[=ansi_substr]{ansi_substr()}}, +\code{\link[=ansi_substring]{ansi_substring()}}, +\code{\link[=ansi_toupper]{ansi_toupper()}}, +\code{\link[=ansi_trimws]{ansi_trimws()}} } \concept{ANSI string operations} diff --git a/man/ansi_grep.Rd b/man/ansi_grep.Rd index 78d7227bb..63d381edd 100644 --- a/man/ansi_grep.Rd +++ b/man/ansi_grep.Rd @@ -3,7 +3,7 @@ \name{ansi_grep} \alias{ansi_grep} \alias{ansi_grepl} -\title{Like \code{\link[base:grep]{base::grep()}} and \code{\link[base:grep]{base::grepl()}}, but for ANSI strings} +\title{Like \code{\link[base:grep]{base::grep()}} and \code{\link[base:grepl]{base::grepl()}}, but for ANSI strings} \usage{ ansi_grep(pattern, x, ignore.case = FALSE, perl = FALSE, value = FALSE, ...) @@ -19,10 +19,10 @@ using \code{\link[=as.character]{as.character()}}.} \item{ignore.case, perl, value}{Passed to \code{\link[base:grep]{base::grep()}}.} -\item{...}{Extra arguments are passed to \code{\link[base:grep]{base::grep()}} or \code{\link[base:grep]{base::grepl()}}.} +\item{...}{Extra arguments are passed to \code{\link[base:grep]{base::grep()}} or \code{\link[base:grepl]{base::grepl()}}.} } \value{ -The same as \code{\link[base:grep]{base::grep()}} and \code{\link[base:grep]{base::grepl()}}, respectively. +The same as \code{\link[base:grep]{base::grep()}} and \code{\link[base:grepl]{base::grepl()}}, respectively. } \description{ First ANSI sequences will be stripped with \code{\link[=ansi_strip]{ansi_strip()}}, both @@ -31,7 +31,7 @@ First ANSI sequences will be stripped with \code{\link[=ansi_strip]{ansi_strip() Note that these functions work on code points (or bytes if \code{useBytes = TRUE}), and not graphemes. -Unlike \code{\link[base:grep]{base::grep()}} and \code{\link[base:grep]{base::grepl()}} these functions do not special +Unlike \code{\link[base:grep]{base::grep()}} and \code{\link[base:grepl]{base::grepl()}} these functions do not special case factors. Both \code{pattern} and \code{x} are converted to UTF-8. diff --git a/man/ansi_has_any.Rd b/man/ansi_has_any.Rd index 8313bbfaf..d9b395fae 100644 --- a/man/ansi_has_any.Rd +++ b/man/ansi_has_any.Rd @@ -29,10 +29,10 @@ ansi_has_any("foobar") ansi_has_any(col_red("foobar")) } \seealso{ -Other low level ANSI functions: -\code{\link{ansi_hide_cursor}()}, -\code{\link{ansi_regex}()}, -\code{\link{ansi_string}()}, -\code{\link{ansi_strip}()} +Other low level ANSI functions: +\code{\link[=ansi_hide_cursor]{ansi_hide_cursor()}}, +\code{\link[=ansi_regex]{ansi_regex()}}, +\code{\link[=ansi_string]{ansi_string()}}, +\code{\link[=ansi_strip]{ansi_strip()}} } \concept{low level ANSI functions} diff --git a/man/ansi_hide_cursor.Rd b/man/ansi_hide_cursor.Rd index 0e22a0bb2..294be76b4 100644 --- a/man/ansi_hide_cursor.Rd +++ b/man/ansi_hide_cursor.Rd @@ -33,15 +33,15 @@ does nothing. evaluating an expression. } \seealso{ -Other terminal capabilities: -\code{\link{is_ansi_tty}()}, -\code{\link{is_dynamic_tty}()} +Other terminal capabilities: +\code{\link[=is_ansi_tty]{is_ansi_tty()}}, +\code{\link[=is_dynamic_tty]{is_dynamic_tty()}} -Other low level ANSI functions: -\code{\link{ansi_has_any}()}, -\code{\link{ansi_regex}()}, -\code{\link{ansi_string}()}, -\code{\link{ansi_strip}()} +Other low level ANSI functions: +\code{\link[=ansi_has_any]{ansi_has_any()}}, +\code{\link[=ansi_regex]{ansi_regex()}}, +\code{\link[=ansi_string]{ansi_string()}}, +\code{\link[=ansi_strip]{ansi_strip()}} } \concept{low level ANSI functions} \concept{terminal capabilities} diff --git a/man/ansi_html.Rd b/man/ansi_html.Rd index 7bde74249..dd163a7e4 100644 --- a/man/ansi_html.Rd +++ b/man/ansi_html.Rd @@ -40,7 +40,7 @@ if (interactive()) htmltools::html_print(page) \dontshow{\}) # examplesIf} } \seealso{ -Other ANSI to HTML conversion: -\code{\link{ansi_html_style}()} +Other ANSI to HTML conversion: +\code{\link[=ansi_html_style]{ansi_html_style()}} } \concept{ANSI to HTML conversion} diff --git a/man/ansi_html_style.Rd b/man/ansi_html_style.Rd index c18e78d0d..687097c50 100644 --- a/man/ansi_html_style.Rd +++ b/man/ansi_html_style.Rd @@ -38,7 +38,7 @@ ansi_html_style(colors = FALSE) ansi_html_style(colors = 8, palette = "iterm-snazzy") } \seealso{ -Other ANSI to HTML conversion: -\code{\link{ansi_html}()} +Other ANSI to HTML conversion: +\code{\link[=ansi_html]{ansi_html()}} } \concept{ANSI to HTML conversion} diff --git a/man/ansi_nchar.Rd b/man/ansi_nchar.Rd index 23a32d868..4a5dcedca 100644 --- a/man/ansi_nchar.Rd +++ b/man/ansi_nchar.Rd @@ -34,15 +34,15 @@ ansi_nchar(str) nchar(ansi_strip(str)) } \seealso{ -Other ANSI string operations: -\code{\link{ansi_align}()}, -\code{\link{ansi_columns}()}, -\code{\link{ansi_strsplit}()}, -\code{\link{ansi_strtrim}()}, -\code{\link{ansi_strwrap}()}, -\code{\link{ansi_substr}()}, -\code{\link{ansi_substring}()}, -\code{\link{ansi_toupper}()}, -\code{\link{ansi_trimws}()} +Other ANSI string operations: +\code{\link[=ansi_align]{ansi_align()}}, +\code{\link[=ansi_columns]{ansi_columns()}}, +\code{\link[=ansi_strsplit]{ansi_strsplit()}}, +\code{\link[=ansi_strtrim]{ansi_strtrim()}}, +\code{\link[=ansi_strwrap]{ansi_strwrap()}}, +\code{\link[=ansi_substr]{ansi_substr()}}, +\code{\link[=ansi_substring]{ansi_substring()}}, +\code{\link[=ansi_toupper]{ansi_toupper()}}, +\code{\link[=ansi_trimws]{ansi_trimws()}} } \concept{ANSI string operations} diff --git a/man/ansi_nzchar.Rd b/man/ansi_nzchar.Rd index ad11b31ba..2f1e63f7b 100644 --- a/man/ansi_nzchar.Rd +++ b/man/ansi_nzchar.Rd @@ -2,18 +2,18 @@ % Please edit documentation in R/ansiex.R \name{ansi_nzchar} \alias{ansi_nzchar} -\title{Like \code{\link[base:nchar]{base::nzchar()}}, but for ANSI strings} +\title{Like \code{\link[base:nzchar]{base::nzchar()}}, but for ANSI strings} \usage{ ansi_nzchar(x, ...) } \arguments{ \item{x}{Character vector. Other objects are coerced using -\code{\link[base:character]{base::as.character()}}.} +\code{\link[base:as.character]{base::as.character()}}.} -\item{...}{Passed to \code{\link[base:nchar]{base::nzchar()}}.} +\item{...}{Passed to \code{\link[base:nzchar]{base::nzchar()}}.} } \description{ -Like \code{\link[base:nchar]{base::nzchar()}}, but for ANSI strings +Like \code{\link[base:nzchar]{base::nzchar()}}, but for ANSI strings } \examples{ ansi_nzchar("") diff --git a/man/ansi_palettes.Rd b/man/ansi_palettes.Rd index c1e8dccaf..ae8c9ee57 100644 --- a/man/ansi_palettes.Rd +++ b/man/ansi_palettes.Rd @@ -71,4 +71,3 @@ is one palette. ansi_palettes ansi_palette_show("dichro", colors = truecolor) } -\keyword{datasets} diff --git a/man/ansi_regex.Rd b/man/ansi_regex.Rd index e0c9f888e..f124865d4 100644 --- a/man/ansi_regex.Rd +++ b/man/ansi_regex.Rd @@ -15,10 +15,10 @@ Don't forget to use \code{perl = TRUE} when using this with \code{\link[=grepl]{ friends. } \seealso{ -Other low level ANSI functions: -\code{\link{ansi_has_any}()}, -\code{\link{ansi_hide_cursor}()}, -\code{\link{ansi_string}()}, -\code{\link{ansi_strip}()} +Other low level ANSI functions: +\code{\link[=ansi_has_any]{ansi_has_any()}}, +\code{\link[=ansi_hide_cursor]{ansi_hide_cursor()}}, +\code{\link[=ansi_string]{ansi_string()}}, +\code{\link[=ansi_strip]{ansi_strip()}} } \concept{low level ANSI functions} diff --git a/man/ansi_string.Rd b/man/ansi_string.Rd index dc259dd5e..015084a23 100644 --- a/man/ansi_string.Rd +++ b/man/ansi_string.Rd @@ -20,10 +20,10 @@ This function sets the class of its argument, activating ANSI-string-specific methods such as for printing. } \seealso{ -Other low level ANSI functions: -\code{\link{ansi_has_any}()}, -\code{\link{ansi_hide_cursor}()}, -\code{\link{ansi_regex}()}, -\code{\link{ansi_strip}()} +Other low level ANSI functions: +\code{\link[=ansi_has_any]{ansi_has_any()}}, +\code{\link[=ansi_hide_cursor]{ansi_hide_cursor()}}, +\code{\link[=ansi_regex]{ansi_regex()}}, +\code{\link[=ansi_strip]{ansi_strip()}} } \concept{low level ANSI functions} diff --git a/man/ansi_strip.Rd b/man/ansi_strip.Rd index db56aae3c..15f7f5a0e 100644 --- a/man/ansi_strip.Rd +++ b/man/ansi_strip.Rd @@ -27,10 +27,10 @@ from the result. ansi_strip(col_red("foobar")) == "foobar" } \seealso{ -Other low level ANSI functions: -\code{\link{ansi_has_any}()}, -\code{\link{ansi_hide_cursor}()}, -\code{\link{ansi_regex}()}, -\code{\link{ansi_string}()} +Other low level ANSI functions: +\code{\link[=ansi_has_any]{ansi_has_any()}}, +\code{\link[=ansi_hide_cursor]{ansi_hide_cursor()}}, +\code{\link[=ansi_regex]{ansi_regex()}}, +\code{\link[=ansi_string]{ansi_string()}} } \concept{low level ANSI functions} diff --git a/man/ansi_strsplit.Rd b/man/ansi_strsplit.Rd index 125466a9c..94bd3af62 100644 --- a/man/ansi_strsplit.Rd +++ b/man/ansi_strsplit.Rd @@ -45,15 +45,15 @@ cat(ansi_strsplit(str, "")[[1]], "\n", sep = " ") strsplit(ansi_strip(str), "") } \seealso{ -Other ANSI string operations: -\code{\link{ansi_align}()}, -\code{\link{ansi_columns}()}, -\code{\link{ansi_nchar}()}, -\code{\link{ansi_strtrim}()}, -\code{\link{ansi_strwrap}()}, -\code{\link{ansi_substr}()}, -\code{\link{ansi_substring}()}, -\code{\link{ansi_toupper}()}, -\code{\link{ansi_trimws}()} +Other ANSI string operations: +\code{\link[=ansi_align]{ansi_align()}}, +\code{\link[=ansi_columns]{ansi_columns()}}, +\code{\link[=ansi_nchar]{ansi_nchar()}}, +\code{\link[=ansi_strtrim]{ansi_strtrim()}}, +\code{\link[=ansi_strwrap]{ansi_strwrap()}}, +\code{\link[=ansi_substr]{ansi_substr()}}, +\code{\link[=ansi_substring]{ansi_substring()}}, +\code{\link[=ansi_toupper]{ansi_toupper()}}, +\code{\link[=ansi_trimws]{ansi_trimws()}} } \concept{ANSI string operations} diff --git a/man/ansi_strtrim.Rd b/man/ansi_strtrim.Rd index c530c1f0b..d3080356b 100644 --- a/man/ansi_strtrim.Rd +++ b/man/ansi_strtrim.Rd @@ -28,15 +28,15 @@ text <- cli::col_red(cli:::lorem_ipsum()) ansi_strtrim(c(text, "foobar"), 40) } \seealso{ -Other ANSI string operations: -\code{\link{ansi_align}()}, -\code{\link{ansi_columns}()}, -\code{\link{ansi_nchar}()}, -\code{\link{ansi_strsplit}()}, -\code{\link{ansi_strwrap}()}, -\code{\link{ansi_substr}()}, -\code{\link{ansi_substring}()}, -\code{\link{ansi_toupper}()}, -\code{\link{ansi_trimws}()} +Other ANSI string operations: +\code{\link[=ansi_align]{ansi_align()}}, +\code{\link[=ansi_columns]{ansi_columns()}}, +\code{\link[=ansi_nchar]{ansi_nchar()}}, +\code{\link[=ansi_strsplit]{ansi_strsplit()}}, +\code{\link[=ansi_strwrap]{ansi_strwrap()}}, +\code{\link[=ansi_substr]{ansi_substr()}}, +\code{\link[=ansi_substring]{ansi_substring()}}, +\code{\link[=ansi_toupper]{ansi_toupper()}}, +\code{\link[=ansi_trimws]{ansi_trimws()}} } \concept{ANSI string operations} diff --git a/man/ansi_strwrap.Rd b/man/ansi_strwrap.Rd index 41d597d4b..0de82b69e 100644 --- a/man/ansi_strwrap.Rd +++ b/man/ansi_strwrap.Rd @@ -44,15 +44,15 @@ wrp <- ansi_strwrap(text, width = 40) cat(wrp, sep = "\n") } \seealso{ -Other ANSI string operations: -\code{\link{ansi_align}()}, -\code{\link{ansi_columns}()}, -\code{\link{ansi_nchar}()}, -\code{\link{ansi_strsplit}()}, -\code{\link{ansi_strtrim}()}, -\code{\link{ansi_substr}()}, -\code{\link{ansi_substring}()}, -\code{\link{ansi_toupper}()}, -\code{\link{ansi_trimws}()} +Other ANSI string operations: +\code{\link[=ansi_align]{ansi_align()}}, +\code{\link[=ansi_columns]{ansi_columns()}}, +\code{\link[=ansi_nchar]{ansi_nchar()}}, +\code{\link[=ansi_strsplit]{ansi_strsplit()}}, +\code{\link[=ansi_strtrim]{ansi_strtrim()}}, +\code{\link[=ansi_substr]{ansi_substr()}}, +\code{\link[=ansi_substring]{ansi_substring()}}, +\code{\link[=ansi_toupper]{ansi_toupper()}}, +\code{\link[=ansi_trimws]{ansi_trimws()}} } \concept{ANSI string operations} diff --git a/man/ansi_substr.Rd b/man/ansi_substr.Rd index ac52cf6f0..f2ec9e26d 100644 --- a/man/ansi_substr.Rd +++ b/man/ansi_substr.Rd @@ -53,15 +53,15 @@ cat(ansi_substr(c(str, str2), c(3,5), c(7, 18)), sep = "\n") substr(ansi_strip(c(str, str2)), c(3,5), c(7, 18)) } \seealso{ -Other ANSI string operations: -\code{\link{ansi_align}()}, -\code{\link{ansi_columns}()}, -\code{\link{ansi_nchar}()}, -\code{\link{ansi_strsplit}()}, -\code{\link{ansi_strtrim}()}, -\code{\link{ansi_strwrap}()}, -\code{\link{ansi_substring}()}, -\code{\link{ansi_toupper}()}, -\code{\link{ansi_trimws}()} +Other ANSI string operations: +\code{\link[=ansi_align]{ansi_align()}}, +\code{\link[=ansi_columns]{ansi_columns()}}, +\code{\link[=ansi_nchar]{ansi_nchar()}}, +\code{\link[=ansi_strsplit]{ansi_strsplit()}}, +\code{\link[=ansi_strtrim]{ansi_strtrim()}}, +\code{\link[=ansi_strwrap]{ansi_strwrap()}}, +\code{\link[=ansi_substring]{ansi_substring()}}, +\code{\link[=ansi_toupper]{ansi_toupper()}}, +\code{\link[=ansi_trimws]{ansi_trimws()}} } \concept{ANSI string operations} diff --git a/man/ansi_substring.Rd b/man/ansi_substring.Rd index ff1fe467b..a37fd891e 100644 --- a/man/ansi_substring.Rd +++ b/man/ansi_substring.Rd @@ -22,7 +22,7 @@ Character vector of the same length as \code{x}, containing the requested substrings. ANSI styles are retained. } \description{ -This is the color-aware counterpart of \code{\link[base:substr]{base::substring()}}. +This is the color-aware counterpart of \code{\link[base:substring]{base::substring()}}. It works exactly like the original, but keeps the colors in the substrings. The ANSI escape sequences are ignored when calculating the positions within the string. @@ -54,15 +54,15 @@ cat(ansi_substring(str2, c(3,5), c(7, 18)), sep = "\n") substring(ansi_strip(str2), c(3,5), c(7, 18)) } \seealso{ -Other ANSI string operations: -\code{\link{ansi_align}()}, -\code{\link{ansi_columns}()}, -\code{\link{ansi_nchar}()}, -\code{\link{ansi_strsplit}()}, -\code{\link{ansi_strtrim}()}, -\code{\link{ansi_strwrap}()}, -\code{\link{ansi_substr}()}, -\code{\link{ansi_toupper}()}, -\code{\link{ansi_trimws}()} +Other ANSI string operations: +\code{\link[=ansi_align]{ansi_align()}}, +\code{\link[=ansi_columns]{ansi_columns()}}, +\code{\link[=ansi_nchar]{ansi_nchar()}}, +\code{\link[=ansi_strsplit]{ansi_strsplit()}}, +\code{\link[=ansi_strtrim]{ansi_strtrim()}}, +\code{\link[=ansi_strwrap]{ansi_strwrap()}}, +\code{\link[=ansi_substr]{ansi_substr()}}, +\code{\link[=ansi_toupper]{ansi_toupper()}}, +\code{\link[=ansi_trimws]{ansi_trimws()}} } \concept{ANSI string operations} diff --git a/man/ansi_toupper.Rd b/man/ansi_toupper.Rd index 66bdf3017..a0ae42ee9 100644 --- a/man/ansi_toupper.Rd +++ b/man/ansi_toupper.Rd @@ -40,37 +40,15 @@ x <- paste0(col_green("MiXeD"), col_red(" cAsE 123")) ansi_chartr("iXs", "why", x) } \seealso{ -Other ANSI string operations: -\code{\link{ansi_align}()}, -\code{\link{ansi_columns}()}, -\code{\link{ansi_nchar}()}, -\code{\link{ansi_strsplit}()}, -\code{\link{ansi_strtrim}()}, -\code{\link{ansi_strwrap}()}, -\code{\link{ansi_substr}()}, -\code{\link{ansi_substring}()}, -\code{\link{ansi_trimws}()} - -Other ANSI string operations: -\code{\link{ansi_align}()}, -\code{\link{ansi_columns}()}, -\code{\link{ansi_nchar}()}, -\code{\link{ansi_strsplit}()}, -\code{\link{ansi_strtrim}()}, -\code{\link{ansi_strwrap}()}, -\code{\link{ansi_substr}()}, -\code{\link{ansi_substring}()}, -\code{\link{ansi_trimws}()} - -Other ANSI string operations: -\code{\link{ansi_align}()}, -\code{\link{ansi_columns}()}, -\code{\link{ansi_nchar}()}, -\code{\link{ansi_strsplit}()}, -\code{\link{ansi_strtrim}()}, -\code{\link{ansi_strwrap}()}, -\code{\link{ansi_substr}()}, -\code{\link{ansi_substring}()}, -\code{\link{ansi_trimws}()} +Other ANSI string operations: +\code{\link[=ansi_align]{ansi_align()}}, +\code{\link[=ansi_columns]{ansi_columns()}}, +\code{\link[=ansi_nchar]{ansi_nchar()}}, +\code{\link[=ansi_strsplit]{ansi_strsplit()}}, +\code{\link[=ansi_strtrim]{ansi_strtrim()}}, +\code{\link[=ansi_strwrap]{ansi_strwrap()}}, +\code{\link[=ansi_substr]{ansi_substr()}}, +\code{\link[=ansi_substring]{ansi_substring()}}, +\code{\link[=ansi_trimws]{ansi_trimws()}} } \concept{ANSI string operations} diff --git a/man/ansi_trimws.Rd b/man/ansi_trimws.Rd index 2da8d219c..727823a14 100644 --- a/man/ansi_trimws.Rd +++ b/man/ansi_trimws.Rd @@ -25,15 +25,15 @@ trimws(col_red(" I am red ")) ansi_trimws(col_red(" I am red ")) } \seealso{ -Other ANSI string operations: -\code{\link{ansi_align}()}, -\code{\link{ansi_columns}()}, -\code{\link{ansi_nchar}()}, -\code{\link{ansi_strsplit}()}, -\code{\link{ansi_strtrim}()}, -\code{\link{ansi_strwrap}()}, -\code{\link{ansi_substr}()}, -\code{\link{ansi_substring}()}, -\code{\link{ansi_toupper}()} +Other ANSI string operations: +\code{\link[=ansi_align]{ansi_align()}}, +\code{\link[=ansi_columns]{ansi_columns()}}, +\code{\link[=ansi_nchar]{ansi_nchar()}}, +\code{\link[=ansi_strsplit]{ansi_strsplit()}}, +\code{\link[=ansi_strtrim]{ansi_strtrim()}}, +\code{\link[=ansi_strwrap]{ansi_strwrap()}}, +\code{\link[=ansi_substr]{ansi_substr()}}, +\code{\link[=ansi_substring]{ansi_substring()}}, +\code{\link[=ansi_toupper]{ansi_toupper()}} } \concept{ANSI string operations} diff --git a/man/cli-package.Rd b/man/cli-package.Rd index 058ea2c5f..a0f4d14e0 100644 --- a/man/cli-package.Rd +++ b/man/cli-package.Rd @@ -19,6 +19,11 @@ Useful links: \author{ \strong{Maintainer}: Gábor Csárdi \email{gabor@posit.co} +Authors: +\itemize{ + \item Gábor Csárdi \email{gabor@posit.co} +} + Other contributors: \itemize{ \item Hadley Wickham [contributor] diff --git a/man/cli_abort.Rd b/man/cli_abort.Rd index dba8ac57b..d4b5e6656 100644 --- a/man/cli_abort.Rd +++ b/man/cli_abort.Rd @@ -22,8 +22,8 @@ cli_inform(message, ..., .envir = parent.frame()) \arguments{ \item{message}{It is formatted via a call to \code{\link[=cli_bullets]{cli_bullets()}}.} -\item{...}{Passed to \code{\link[rlang:abort]{rlang::abort()}}, \code{\link[rlang:abort]{rlang::warn()}} or -\code{\link[rlang:abort]{rlang::inform()}}.} +\item{...}{Passed to \code{\link[rlang:abort]{rlang::abort()}}, \code{\link[rlang:warn]{rlang::warn()}} or +\code{\link[rlang:inform]{rlang::inform()}}.} \item{call}{The execution environment of a currently running function, e.g. \code{call = caller_env()}. The corresponding function @@ -86,27 +86,27 @@ cli_abort(c( \seealso{ These functions support \link[=inline-markup]{inline markup}. -Other functions supporting inline markup: -\code{\link{cli_alert}()}, -\code{\link{cli_blockquote}()}, -\code{\link{cli_bullets}()}, -\code{\link{cli_bullets_raw}()}, -\code{\link{cli_dl}()}, -\code{\link{cli_h1}()}, -\code{\link{cli_li}()}, -\code{\link{cli_ol}()}, -\code{\link{cli_process_start}()}, -\code{\link{cli_progress_along}()}, -\code{\link{cli_progress_bar}()}, -\code{\link{cli_progress_message}()}, -\code{\link{cli_progress_output}()}, -\code{\link{cli_progress_step}()}, -\code{\link{cli_rule}}, -\code{\link{cli_status}()}, -\code{\link{cli_status_update}()}, -\code{\link{cli_text}()}, -\code{\link{cli_ul}()}, -\code{\link{format_error}()}, -\code{\link{format_inline}()} +Other functions supporting inline markup: +\code{\link[=cli_alert]{cli_alert()}}, +\code{\link[=cli_blockquote]{cli_blockquote()}}, +\code{\link[=cli_bullets]{cli_bullets()}}, +\code{\link[=cli_bullets_raw]{cli_bullets_raw()}}, +\code{\link[=cli_dl]{cli_dl()}}, +\code{\link[=cli_h1]{cli_h1()}}, +\code{\link[=cli_li]{cli_li()}}, +\code{\link[=cli_ol]{cli_ol()}}, +\code{\link[=cli_process_start]{cli_process_start()}}, +\code{\link[=cli_progress_along]{cli_progress_along()}}, +\code{\link[=cli_progress_bar]{cli_progress_bar()}}, +\code{\link[=cli_progress_message]{cli_progress_message()}}, +\code{\link[=cli_progress_output]{cli_progress_output()}}, +\code{\link[=cli_progress_step]{cli_progress_step()}}, +\code{\link[=cli_rule]{cli_rule()}}, +\code{\link[=cli_status]{cli_status()}}, +\code{\link[=cli_status_update]{cli_status_update()}}, +\code{\link[=cli_text]{cli_text()}}, +\code{\link[=cli_ul]{cli_ul()}}, +\code{\link[=format_error]{format_error()}}, +\code{\link[=format_inline]{format_inline()}} } \concept{functions supporting inline markup} diff --git a/man/cli_alert.Rd b/man/cli_alert.Rd index 736cd20fa..f1fb84be3 100644 --- a/man/cli_alert.Rd +++ b/man/cli_alert.Rd @@ -126,27 +126,27 @@ cli_alert_info("Data columns: \{.val \{names(mtcars)\}\}.", wrap = TRUE) \seealso{ These functions supports \link[=inline-markup]{inline markup}. -Other functions supporting inline markup: -\code{\link{cli_abort}()}, -\code{\link{cli_blockquote}()}, -\code{\link{cli_bullets}()}, -\code{\link{cli_bullets_raw}()}, -\code{\link{cli_dl}()}, -\code{\link{cli_h1}()}, -\code{\link{cli_li}()}, -\code{\link{cli_ol}()}, -\code{\link{cli_process_start}()}, -\code{\link{cli_progress_along}()}, -\code{\link{cli_progress_bar}()}, -\code{\link{cli_progress_message}()}, -\code{\link{cli_progress_output}()}, -\code{\link{cli_progress_step}()}, -\code{\link{cli_rule}}, -\code{\link{cli_status}()}, -\code{\link{cli_status_update}()}, -\code{\link{cli_text}()}, -\code{\link{cli_ul}()}, -\code{\link{format_error}()}, -\code{\link{format_inline}()} +Other functions supporting inline markup: +\code{\link[=cli_abort]{cli_abort()}}, +\code{\link[=cli_blockquote]{cli_blockquote()}}, +\code{\link[=cli_bullets]{cli_bullets()}}, +\code{\link[=cli_bullets_raw]{cli_bullets_raw()}}, +\code{\link[=cli_dl]{cli_dl()}}, +\code{\link[=cli_h1]{cli_h1()}}, +\code{\link[=cli_li]{cli_li()}}, +\code{\link[=cli_ol]{cli_ol()}}, +\code{\link[=cli_process_start]{cli_process_start()}}, +\code{\link[=cli_progress_along]{cli_progress_along()}}, +\code{\link[=cli_progress_bar]{cli_progress_bar()}}, +\code{\link[=cli_progress_message]{cli_progress_message()}}, +\code{\link[=cli_progress_output]{cli_progress_output()}}, +\code{\link[=cli_progress_step]{cli_progress_step()}}, +\code{\link[=cli_rule]{cli_rule()}}, +\code{\link[=cli_status]{cli_status()}}, +\code{\link[=cli_status_update]{cli_status_update()}}, +\code{\link[=cli_text]{cli_text()}}, +\code{\link[=cli_ul]{cli_ul()}}, +\code{\link[=format_error]{format_error()}}, +\code{\link[=format_inline]{format_inline()}} } \concept{functions supporting inline markup} diff --git a/man/cli_blockquote.Rd b/man/cli_blockquote.Rd index a5b520ac4..59d8797b4 100644 --- a/man/cli_blockquote.Rd +++ b/man/cli_blockquote.Rd @@ -52,27 +52,27 @@ cli_blockquote(evil, citation = "Donald Ervin Knuth") \seealso{ This function supports \link[=inline-markup]{inline markup}. -Other functions supporting inline markup: -\code{\link{cli_abort}()}, -\code{\link{cli_alert}()}, -\code{\link{cli_bullets}()}, -\code{\link{cli_bullets_raw}()}, -\code{\link{cli_dl}()}, -\code{\link{cli_h1}()}, -\code{\link{cli_li}()}, -\code{\link{cli_ol}()}, -\code{\link{cli_process_start}()}, -\code{\link{cli_progress_along}()}, -\code{\link{cli_progress_bar}()}, -\code{\link{cli_progress_message}()}, -\code{\link{cli_progress_output}()}, -\code{\link{cli_progress_step}()}, -\code{\link{cli_rule}}, -\code{\link{cli_status}()}, -\code{\link{cli_status_update}()}, -\code{\link{cli_text}()}, -\code{\link{cli_ul}()}, -\code{\link{format_error}()}, -\code{\link{format_inline}()} +Other functions supporting inline markup: +\code{\link[=cli_abort]{cli_abort()}}, +\code{\link[=cli_alert]{cli_alert()}}, +\code{\link[=cli_bullets]{cli_bullets()}}, +\code{\link[=cli_bullets_raw]{cli_bullets_raw()}}, +\code{\link[=cli_dl]{cli_dl()}}, +\code{\link[=cli_h1]{cli_h1()}}, +\code{\link[=cli_li]{cli_li()}}, +\code{\link[=cli_ol]{cli_ol()}}, +\code{\link[=cli_process_start]{cli_process_start()}}, +\code{\link[=cli_progress_along]{cli_progress_along()}}, +\code{\link[=cli_progress_bar]{cli_progress_bar()}}, +\code{\link[=cli_progress_message]{cli_progress_message()}}, +\code{\link[=cli_progress_output]{cli_progress_output()}}, +\code{\link[=cli_progress_step]{cli_progress_step()}}, +\code{\link[=cli_rule]{cli_rule()}}, +\code{\link[=cli_status]{cli_status()}}, +\code{\link[=cli_status_update]{cli_status_update()}}, +\code{\link[=cli_text]{cli_text()}}, +\code{\link[=cli_ul]{cli_ul()}}, +\code{\link[=format_error]{format_error()}}, +\code{\link[=format_inline]{format_inline()}} } \concept{functions supporting inline markup} diff --git a/man/cli_bullets.Rd b/man/cli_bullets.Rd index 5027f9a18..cfbc230b2 100644 --- a/man/cli_bullets.Rd +++ b/man/cli_bullets.Rd @@ -70,27 +70,27 @@ corresponding \verb{bullet-} classes. \seealso{ This function supports \link[=inline-markup]{inline markup}. -Other functions supporting inline markup: -\code{\link{cli_abort}()}, -\code{\link{cli_alert}()}, -\code{\link{cli_blockquote}()}, -\code{\link{cli_bullets_raw}()}, -\code{\link{cli_dl}()}, -\code{\link{cli_h1}()}, -\code{\link{cli_li}()}, -\code{\link{cli_ol}()}, -\code{\link{cli_process_start}()}, -\code{\link{cli_progress_along}()}, -\code{\link{cli_progress_bar}()}, -\code{\link{cli_progress_message}()}, -\code{\link{cli_progress_output}()}, -\code{\link{cli_progress_step}()}, -\code{\link{cli_rule}}, -\code{\link{cli_status}()}, -\code{\link{cli_status_update}()}, -\code{\link{cli_text}()}, -\code{\link{cli_ul}()}, -\code{\link{format_error}()}, -\code{\link{format_inline}()} +Other functions supporting inline markup: +\code{\link[=cli_abort]{cli_abort()}}, +\code{\link[=cli_alert]{cli_alert()}}, +\code{\link[=cli_blockquote]{cli_blockquote()}}, +\code{\link[=cli_bullets_raw]{cli_bullets_raw()}}, +\code{\link[=cli_dl]{cli_dl()}}, +\code{\link[=cli_h1]{cli_h1()}}, +\code{\link[=cli_li]{cli_li()}}, +\code{\link[=cli_ol]{cli_ol()}}, +\code{\link[=cli_process_start]{cli_process_start()}}, +\code{\link[=cli_progress_along]{cli_progress_along()}}, +\code{\link[=cli_progress_bar]{cli_progress_bar()}}, +\code{\link[=cli_progress_message]{cli_progress_message()}}, +\code{\link[=cli_progress_output]{cli_progress_output()}}, +\code{\link[=cli_progress_step]{cli_progress_step()}}, +\code{\link[=cli_rule]{cli_rule()}}, +\code{\link[=cli_status]{cli_status()}}, +\code{\link[=cli_status_update]{cli_status_update()}}, +\code{\link[=cli_text]{cli_text()}}, +\code{\link[=cli_ul]{cli_ul()}}, +\code{\link[=format_error]{format_error()}}, +\code{\link[=format_inline]{format_inline()}} } \concept{functions supporting inline markup} diff --git a/man/cli_bullets_raw.Rd b/man/cli_bullets_raw.Rd index d850fef1e..6a68cc9d2 100644 --- a/man/cli_bullets_raw.Rd +++ b/man/cli_bullets_raw.Rd @@ -29,27 +29,27 @@ These functions support \link[=inline-markup]{inline markup}. See \code{\link[=cli_bullets]{cli_bullets()}} for examples. -Other functions supporting inline markup: -\code{\link{cli_abort}()}, -\code{\link{cli_alert}()}, -\code{\link{cli_blockquote}()}, -\code{\link{cli_bullets}()}, -\code{\link{cli_dl}()}, -\code{\link{cli_h1}()}, -\code{\link{cli_li}()}, -\code{\link{cli_ol}()}, -\code{\link{cli_process_start}()}, -\code{\link{cli_progress_along}()}, -\code{\link{cli_progress_bar}()}, -\code{\link{cli_progress_message}()}, -\code{\link{cli_progress_output}()}, -\code{\link{cli_progress_step}()}, -\code{\link{cli_rule}}, -\code{\link{cli_status}()}, -\code{\link{cli_status_update}()}, -\code{\link{cli_text}()}, -\code{\link{cli_ul}()}, -\code{\link{format_error}()}, -\code{\link{format_inline}()} +Other functions supporting inline markup: +\code{\link[=cli_abort]{cli_abort()}}, +\code{\link[=cli_alert]{cli_alert()}}, +\code{\link[=cli_blockquote]{cli_blockquote()}}, +\code{\link[=cli_bullets]{cli_bullets()}}, +\code{\link[=cli_dl]{cli_dl()}}, +\code{\link[=cli_h1]{cli_h1()}}, +\code{\link[=cli_li]{cli_li()}}, +\code{\link[=cli_ol]{cli_ol()}}, +\code{\link[=cli_process_start]{cli_process_start()}}, +\code{\link[=cli_progress_along]{cli_progress_along()}}, +\code{\link[=cli_progress_bar]{cli_progress_bar()}}, +\code{\link[=cli_progress_message]{cli_progress_message()}}, +\code{\link[=cli_progress_output]{cli_progress_output()}}, +\code{\link[=cli_progress_step]{cli_progress_step()}}, +\code{\link[=cli_rule]{cli_rule()}}, +\code{\link[=cli_status]{cli_status()}}, +\code{\link[=cli_status_update]{cli_status_update()}}, +\code{\link[=cli_text]{cli_text()}}, +\code{\link[=cli_ul]{cli_ul()}}, +\code{\link[=format_error]{format_error()}}, +\code{\link[=format_inline]{format_inline()}} } \concept{functions supporting inline markup} diff --git a/man/cli_dl.Rd b/man/cli_dl.Rd index 2c39d51b1..a3247276d 100644 --- a/man/cli_dl.Rd +++ b/man/cli_dl.Rd @@ -80,27 +80,27 @@ fun() \seealso{ This function supports \link[=inline-markup]{inline markup}. -Other functions supporting inline markup: -\code{\link{cli_abort}()}, -\code{\link{cli_alert}()}, -\code{\link{cli_blockquote}()}, -\code{\link{cli_bullets}()}, -\code{\link{cli_bullets_raw}()}, -\code{\link{cli_h1}()}, -\code{\link{cli_li}()}, -\code{\link{cli_ol}()}, -\code{\link{cli_process_start}()}, -\code{\link{cli_progress_along}()}, -\code{\link{cli_progress_bar}()}, -\code{\link{cli_progress_message}()}, -\code{\link{cli_progress_output}()}, -\code{\link{cli_progress_step}()}, -\code{\link{cli_rule}}, -\code{\link{cli_status}()}, -\code{\link{cli_status_update}()}, -\code{\link{cli_text}()}, -\code{\link{cli_ul}()}, -\code{\link{format_error}()}, -\code{\link{format_inline}()} +Other functions supporting inline markup: +\code{\link[=cli_abort]{cli_abort()}}, +\code{\link[=cli_alert]{cli_alert()}}, +\code{\link[=cli_blockquote]{cli_blockquote()}}, +\code{\link[=cli_bullets]{cli_bullets()}}, +\code{\link[=cli_bullets_raw]{cli_bullets_raw()}}, +\code{\link[=cli_h1]{cli_h1()}}, +\code{\link[=cli_li]{cli_li()}}, +\code{\link[=cli_ol]{cli_ol()}}, +\code{\link[=cli_process_start]{cli_process_start()}}, +\code{\link[=cli_progress_along]{cli_progress_along()}}, +\code{\link[=cli_progress_bar]{cli_progress_bar()}}, +\code{\link[=cli_progress_message]{cli_progress_message()}}, +\code{\link[=cli_progress_output]{cli_progress_output()}}, +\code{\link[=cli_progress_step]{cli_progress_step()}}, +\code{\link[=cli_rule]{cli_rule()}}, +\code{\link[=cli_status]{cli_status()}}, +\code{\link[=cli_status_update]{cli_status_update()}}, +\code{\link[=cli_text]{cli_text()}}, +\code{\link[=cli_ul]{cli_ul()}}, +\code{\link[=format_error]{format_error()}}, +\code{\link[=format_inline]{format_inline()}} } \concept{functions supporting inline markup} diff --git a/man/cli_h1.Rd b/man/cli_h1.Rd index e55bb61fd..2c11b9856 100644 --- a/man/cli_h1.Rd +++ b/man/cli_h1.Rd @@ -45,27 +45,27 @@ cli_h3("Header \{.emph 3\}") \seealso{ These functions supports \link[=inline-markup]{inline markup}. -Other functions supporting inline markup: -\code{\link{cli_abort}()}, -\code{\link{cli_alert}()}, -\code{\link{cli_blockquote}()}, -\code{\link{cli_bullets}()}, -\code{\link{cli_bullets_raw}()}, -\code{\link{cli_dl}()}, -\code{\link{cli_li}()}, -\code{\link{cli_ol}()}, -\code{\link{cli_process_start}()}, -\code{\link{cli_progress_along}()}, -\code{\link{cli_progress_bar}()}, -\code{\link{cli_progress_message}()}, -\code{\link{cli_progress_output}()}, -\code{\link{cli_progress_step}()}, -\code{\link{cli_rule}}, -\code{\link{cli_status}()}, -\code{\link{cli_status_update}()}, -\code{\link{cli_text}()}, -\code{\link{cli_ul}()}, -\code{\link{format_error}()}, -\code{\link{format_inline}()} +Other functions supporting inline markup: +\code{\link[=cli_abort]{cli_abort()}}, +\code{\link[=cli_alert]{cli_alert()}}, +\code{\link[=cli_blockquote]{cli_blockquote()}}, +\code{\link[=cli_bullets]{cli_bullets()}}, +\code{\link[=cli_bullets_raw]{cli_bullets_raw()}}, +\code{\link[=cli_dl]{cli_dl()}}, +\code{\link[=cli_li]{cli_li()}}, +\code{\link[=cli_ol]{cli_ol()}}, +\code{\link[=cli_process_start]{cli_process_start()}}, +\code{\link[=cli_progress_along]{cli_progress_along()}}, +\code{\link[=cli_progress_bar]{cli_progress_bar()}}, +\code{\link[=cli_progress_message]{cli_progress_message()}}, +\code{\link[=cli_progress_output]{cli_progress_output()}}, +\code{\link[=cli_progress_step]{cli_progress_step()}}, +\code{\link[=cli_rule]{cli_rule()}}, +\code{\link[=cli_status]{cli_status()}}, +\code{\link[=cli_status_update]{cli_status_update()}}, +\code{\link[=cli_text]{cli_text()}}, +\code{\link[=cli_ul]{cli_ul()}}, +\code{\link[=format_error]{format_error()}}, +\code{\link[=format_inline]{format_inline()}} } \concept{functions supporting inline markup} diff --git a/man/cli_li.Rd b/man/cli_li.Rd index cd6dd3ed0..4b924e86b 100644 --- a/man/cli_li.Rd +++ b/man/cli_li.Rd @@ -64,27 +64,27 @@ fun() \seealso{ This function supports \link[=inline-markup]{inline markup}. -Other functions supporting inline markup: -\code{\link{cli_abort}()}, -\code{\link{cli_alert}()}, -\code{\link{cli_blockquote}()}, -\code{\link{cli_bullets}()}, -\code{\link{cli_bullets_raw}()}, -\code{\link{cli_dl}()}, -\code{\link{cli_h1}()}, -\code{\link{cli_ol}()}, -\code{\link{cli_process_start}()}, -\code{\link{cli_progress_along}()}, -\code{\link{cli_progress_bar}()}, -\code{\link{cli_progress_message}()}, -\code{\link{cli_progress_output}()}, -\code{\link{cli_progress_step}()}, -\code{\link{cli_rule}}, -\code{\link{cli_status}()}, -\code{\link{cli_status_update}()}, -\code{\link{cli_text}()}, -\code{\link{cli_ul}()}, -\code{\link{format_error}()}, -\code{\link{format_inline}()} +Other functions supporting inline markup: +\code{\link[=cli_abort]{cli_abort()}}, +\code{\link[=cli_alert]{cli_alert()}}, +\code{\link[=cli_blockquote]{cli_blockquote()}}, +\code{\link[=cli_bullets]{cli_bullets()}}, +\code{\link[=cli_bullets_raw]{cli_bullets_raw()}}, +\code{\link[=cli_dl]{cli_dl()}}, +\code{\link[=cli_h1]{cli_h1()}}, +\code{\link[=cli_ol]{cli_ol()}}, +\code{\link[=cli_process_start]{cli_process_start()}}, +\code{\link[=cli_progress_along]{cli_progress_along()}}, +\code{\link[=cli_progress_bar]{cli_progress_bar()}}, +\code{\link[=cli_progress_message]{cli_progress_message()}}, +\code{\link[=cli_progress_output]{cli_progress_output()}}, +\code{\link[=cli_progress_step]{cli_progress_step()}}, +\code{\link[=cli_rule]{cli_rule()}}, +\code{\link[=cli_status]{cli_status()}}, +\code{\link[=cli_status_update]{cli_status_update()}}, +\code{\link[=cli_text]{cli_text()}}, +\code{\link[=cli_ul]{cli_ul()}}, +\code{\link[=format_error]{format_error()}}, +\code{\link[=format_inline]{format_inline()}} } \concept{functions supporting inline markup} diff --git a/man/cli_ol.Rd b/man/cli_ol.Rd index 677988697..1355c551c 100644 --- a/man/cli_ol.Rd +++ b/man/cli_ol.Rd @@ -104,27 +104,27 @@ fun() \seealso{ This function supports \link[=inline-markup]{inline markup}. -Other functions supporting inline markup: -\code{\link{cli_abort}()}, -\code{\link{cli_alert}()}, -\code{\link{cli_blockquote}()}, -\code{\link{cli_bullets}()}, -\code{\link{cli_bullets_raw}()}, -\code{\link{cli_dl}()}, -\code{\link{cli_h1}()}, -\code{\link{cli_li}()}, -\code{\link{cli_process_start}()}, -\code{\link{cli_progress_along}()}, -\code{\link{cli_progress_bar}()}, -\code{\link{cli_progress_message}()}, -\code{\link{cli_progress_output}()}, -\code{\link{cli_progress_step}()}, -\code{\link{cli_rule}}, -\code{\link{cli_status}()}, -\code{\link{cli_status_update}()}, -\code{\link{cli_text}()}, -\code{\link{cli_ul}()}, -\code{\link{format_error}()}, -\code{\link{format_inline}()} +Other functions supporting inline markup: +\code{\link[=cli_abort]{cli_abort()}}, +\code{\link[=cli_alert]{cli_alert()}}, +\code{\link[=cli_blockquote]{cli_blockquote()}}, +\code{\link[=cli_bullets]{cli_bullets()}}, +\code{\link[=cli_bullets_raw]{cli_bullets_raw()}}, +\code{\link[=cli_dl]{cli_dl()}}, +\code{\link[=cli_h1]{cli_h1()}}, +\code{\link[=cli_li]{cli_li()}}, +\code{\link[=cli_process_start]{cli_process_start()}}, +\code{\link[=cli_progress_along]{cli_progress_along()}}, +\code{\link[=cli_progress_bar]{cli_progress_bar()}}, +\code{\link[=cli_progress_message]{cli_progress_message()}}, +\code{\link[=cli_progress_output]{cli_progress_output()}}, +\code{\link[=cli_progress_step]{cli_progress_step()}}, +\code{\link[=cli_rule]{cli_rule()}}, +\code{\link[=cli_status]{cli_status()}}, +\code{\link[=cli_status_update]{cli_status_update()}}, +\code{\link[=cli_text]{cli_text()}}, +\code{\link[=cli_ul]{cli_ul()}}, +\code{\link[=format_error]{format_error()}}, +\code{\link[=format_inline]{format_inline()}} } \concept{functions supporting inline markup} diff --git a/man/cli_process_start.Rd b/man/cli_process_start.Rd index d6238b0ef..c9d96ed28 100644 --- a/man/cli_process_start.Rd +++ b/man/cli_process_start.Rd @@ -117,33 +117,33 @@ This function supports \link[=inline-markup]{inline markup}. The \code{\link[=cli_progress_message]{cli_progress_message()}} and \code{\link[=cli_progress_step]{cli_progress_step()}} functions, for a superior API. -Other status bar: -\code{\link{cli_status}()}, -\code{\link{cli_status_clear}()}, -\code{\link{cli_status_update}()} - -Other functions supporting inline markup: -\code{\link{cli_abort}()}, -\code{\link{cli_alert}()}, -\code{\link{cli_blockquote}()}, -\code{\link{cli_bullets}()}, -\code{\link{cli_bullets_raw}()}, -\code{\link{cli_dl}()}, -\code{\link{cli_h1}()}, -\code{\link{cli_li}()}, -\code{\link{cli_ol}()}, -\code{\link{cli_progress_along}()}, -\code{\link{cli_progress_bar}()}, -\code{\link{cli_progress_message}()}, -\code{\link{cli_progress_output}()}, -\code{\link{cli_progress_step}()}, -\code{\link{cli_rule}}, -\code{\link{cli_status}()}, -\code{\link{cli_status_update}()}, -\code{\link{cli_text}()}, -\code{\link{cli_ul}()}, -\code{\link{format_error}()}, -\code{\link{format_inline}()} +Other status bar: +\code{\link[=cli_status]{cli_status()}}, +\code{\link[=cli_status_clear]{cli_status_clear()}}, +\code{\link[=cli_status_update]{cli_status_update()}} + +Other functions supporting inline markup: +\code{\link[=cli_abort]{cli_abort()}}, +\code{\link[=cli_alert]{cli_alert()}}, +\code{\link[=cli_blockquote]{cli_blockquote()}}, +\code{\link[=cli_bullets]{cli_bullets()}}, +\code{\link[=cli_bullets_raw]{cli_bullets_raw()}}, +\code{\link[=cli_dl]{cli_dl()}}, +\code{\link[=cli_h1]{cli_h1()}}, +\code{\link[=cli_li]{cli_li()}}, +\code{\link[=cli_ol]{cli_ol()}}, +\code{\link[=cli_progress_along]{cli_progress_along()}}, +\code{\link[=cli_progress_bar]{cli_progress_bar()}}, +\code{\link[=cli_progress_message]{cli_progress_message()}}, +\code{\link[=cli_progress_output]{cli_progress_output()}}, +\code{\link[=cli_progress_step]{cli_progress_step()}}, +\code{\link[=cli_rule]{cli_rule()}}, +\code{\link[=cli_status]{cli_status()}}, +\code{\link[=cli_status_update]{cli_status_update()}}, +\code{\link[=cli_text]{cli_text()}}, +\code{\link[=cli_ul]{cli_ul()}}, +\code{\link[=format_error]{format_error()}}, +\code{\link[=format_inline]{format_inline()}} } \concept{functions supporting inline markup} \concept{status bar} diff --git a/man/cli_progress_along.Rd b/man/cli_progress_along.Rd index 3b34b01dc..d02266b87 100644 --- a/man/cli_progress_along.Rd +++ b/man/cli_progress_along.Rd @@ -107,38 +107,38 @@ This function supports \link[=inline-markup]{inline markup}. \code{\link[=cli_progress_bar]{cli_progress_bar()}} and the traditional progress bar API. -Other progress bar functions: -\code{\link{cli_progress_bar}()}, -\code{\link{cli_progress_builtin_handlers}()}, -\code{\link{cli_progress_message}()}, -\code{\link{cli_progress_num}()}, -\code{\link{cli_progress_output}()}, -\code{\link{cli_progress_step}()}, -\code{\link{cli_progress_styles}()}, +Other progress bar functions: +\code{\link[=cli_progress_bar]{cli_progress_bar()}}, +\code{\link[=cli_progress_builtin_handlers]{cli_progress_builtin_handlers()}}, +\code{\link[=cli_progress_message]{cli_progress_message()}}, +\code{\link[=cli_progress_num]{cli_progress_num()}}, +\code{\link[=cli_progress_output]{cli_progress_output()}}, +\code{\link[=cli_progress_step]{cli_progress_step()}}, +\code{\link[=cli_progress_styles]{cli_progress_styles()}}, \code{\link{progress-variables}} -Other functions supporting inline markup: -\code{\link{cli_abort}()}, -\code{\link{cli_alert}()}, -\code{\link{cli_blockquote}()}, -\code{\link{cli_bullets}()}, -\code{\link{cli_bullets_raw}()}, -\code{\link{cli_dl}()}, -\code{\link{cli_h1}()}, -\code{\link{cli_li}()}, -\code{\link{cli_ol}()}, -\code{\link{cli_process_start}()}, -\code{\link{cli_progress_bar}()}, -\code{\link{cli_progress_message}()}, -\code{\link{cli_progress_output}()}, -\code{\link{cli_progress_step}()}, -\code{\link{cli_rule}}, -\code{\link{cli_status}()}, -\code{\link{cli_status_update}()}, -\code{\link{cli_text}()}, -\code{\link{cli_ul}()}, -\code{\link{format_error}()}, -\code{\link{format_inline}()} +Other functions supporting inline markup: +\code{\link[=cli_abort]{cli_abort()}}, +\code{\link[=cli_alert]{cli_alert()}}, +\code{\link[=cli_blockquote]{cli_blockquote()}}, +\code{\link[=cli_bullets]{cli_bullets()}}, +\code{\link[=cli_bullets_raw]{cli_bullets_raw()}}, +\code{\link[=cli_dl]{cli_dl()}}, +\code{\link[=cli_h1]{cli_h1()}}, +\code{\link[=cli_li]{cli_li()}}, +\code{\link[=cli_ol]{cli_ol()}}, +\code{\link[=cli_process_start]{cli_process_start()}}, +\code{\link[=cli_progress_bar]{cli_progress_bar()}}, +\code{\link[=cli_progress_message]{cli_progress_message()}}, +\code{\link[=cli_progress_output]{cli_progress_output()}}, +\code{\link[=cli_progress_step]{cli_progress_step()}}, +\code{\link[=cli_rule]{cli_rule()}}, +\code{\link[=cli_status]{cli_status()}}, +\code{\link[=cli_status_update]{cli_status_update()}}, +\code{\link[=cli_text]{cli_text()}}, +\code{\link[=cli_ul]{cli_ul()}}, +\code{\link[=format_error]{format_error()}}, +\code{\link[=format_inline]{format_inline()}} } \concept{functions supporting inline markup} \concept{progress bar functions} diff --git a/man/cli_progress_bar.Rd b/man/cli_progress_bar.Rd index ca8abbbd6..fcdd96ae8 100644 --- a/man/cli_progress_bar.Rd +++ b/man/cli_progress_bar.Rd @@ -367,38 +367,38 @@ These functions support \link[=inline-markup]{inline markup}. \code{\link[=cli_progress_message]{cli_progress_message()}} and \code{\link[=cli_progress_step]{cli_progress_step()}} for simpler progress messages. -Other progress bar functions: -\code{\link{cli_progress_along}()}, -\code{\link{cli_progress_builtin_handlers}()}, -\code{\link{cli_progress_message}()}, -\code{\link{cli_progress_num}()}, -\code{\link{cli_progress_output}()}, -\code{\link{cli_progress_step}()}, -\code{\link{cli_progress_styles}()}, +Other progress bar functions: +\code{\link[=cli_progress_along]{cli_progress_along()}}, +\code{\link[=cli_progress_builtin_handlers]{cli_progress_builtin_handlers()}}, +\code{\link[=cli_progress_message]{cli_progress_message()}}, +\code{\link[=cli_progress_num]{cli_progress_num()}}, +\code{\link[=cli_progress_output]{cli_progress_output()}}, +\code{\link[=cli_progress_step]{cli_progress_step()}}, +\code{\link[=cli_progress_styles]{cli_progress_styles()}}, \code{\link{progress-variables}} -Other functions supporting inline markup: -\code{\link{cli_abort}()}, -\code{\link{cli_alert}()}, -\code{\link{cli_blockquote}()}, -\code{\link{cli_bullets}()}, -\code{\link{cli_bullets_raw}()}, -\code{\link{cli_dl}()}, -\code{\link{cli_h1}()}, -\code{\link{cli_li}()}, -\code{\link{cli_ol}()}, -\code{\link{cli_process_start}()}, -\code{\link{cli_progress_along}()}, -\code{\link{cli_progress_message}()}, -\code{\link{cli_progress_output}()}, -\code{\link{cli_progress_step}()}, -\code{\link{cli_rule}}, -\code{\link{cli_status}()}, -\code{\link{cli_status_update}()}, -\code{\link{cli_text}()}, -\code{\link{cli_ul}()}, -\code{\link{format_error}()}, -\code{\link{format_inline}()} +Other functions supporting inline markup: +\code{\link[=cli_abort]{cli_abort()}}, +\code{\link[=cli_alert]{cli_alert()}}, +\code{\link[=cli_blockquote]{cli_blockquote()}}, +\code{\link[=cli_bullets]{cli_bullets()}}, +\code{\link[=cli_bullets_raw]{cli_bullets_raw()}}, +\code{\link[=cli_dl]{cli_dl()}}, +\code{\link[=cli_h1]{cli_h1()}}, +\code{\link[=cli_li]{cli_li()}}, +\code{\link[=cli_ol]{cli_ol()}}, +\code{\link[=cli_process_start]{cli_process_start()}}, +\code{\link[=cli_progress_along]{cli_progress_along()}}, +\code{\link[=cli_progress_message]{cli_progress_message()}}, +\code{\link[=cli_progress_output]{cli_progress_output()}}, +\code{\link[=cli_progress_step]{cli_progress_step()}}, +\code{\link[=cli_rule]{cli_rule()}}, +\code{\link[=cli_status]{cli_status()}}, +\code{\link[=cli_status_update]{cli_status_update()}}, +\code{\link[=cli_text]{cli_text()}}, +\code{\link[=cli_ul]{cli_ul()}}, +\code{\link[=format_error]{format_error()}}, +\code{\link[=format_inline]{format_inline()}} } \concept{functions supporting inline markup} \concept{progress bar functions} diff --git a/man/cli_progress_builtin_handlers.Rd b/man/cli_progress_builtin_handlers.Rd index 7a086be6e..04f0136e2 100644 --- a/man/cli_progress_builtin_handlers.Rd +++ b/man/cli_progress_builtin_handlers.Rd @@ -85,14 +85,14 @@ This handler is available if a shiny app is running. } \seealso{ -Other progress bar functions: -\code{\link{cli_progress_along}()}, -\code{\link{cli_progress_bar}()}, -\code{\link{cli_progress_message}()}, -\code{\link{cli_progress_num}()}, -\code{\link{cli_progress_output}()}, -\code{\link{cli_progress_step}()}, -\code{\link{cli_progress_styles}()}, +Other progress bar functions: +\code{\link[=cli_progress_along]{cli_progress_along()}}, +\code{\link[=cli_progress_bar]{cli_progress_bar()}}, +\code{\link[=cli_progress_message]{cli_progress_message()}}, +\code{\link[=cli_progress_num]{cli_progress_num()}}, +\code{\link[=cli_progress_output]{cli_progress_output()}}, +\code{\link[=cli_progress_step]{cli_progress_step()}}, +\code{\link[=cli_progress_styles]{cli_progress_styles()}}, \code{\link{progress-variables}} } \concept{progress bar functions} diff --git a/man/cli_progress_message.Rd b/man/cli_progress_message.Rd index 023769095..07466563c 100644 --- a/man/cli_progress_message.Rd +++ b/man/cli_progress_message.Rd @@ -65,38 +65,38 @@ This function supports \link[=inline-markup]{inline markup}. \code{\link[=cli_progress_bar]{cli_progress_bar()}} for the complete progress bar API. \code{\link[=cli_progress_step]{cli_progress_step()}} for a similar display that is styled by default. -Other progress bar functions: -\code{\link{cli_progress_along}()}, -\code{\link{cli_progress_bar}()}, -\code{\link{cli_progress_builtin_handlers}()}, -\code{\link{cli_progress_num}()}, -\code{\link{cli_progress_output}()}, -\code{\link{cli_progress_step}()}, -\code{\link{cli_progress_styles}()}, +Other progress bar functions: +\code{\link[=cli_progress_along]{cli_progress_along()}}, +\code{\link[=cli_progress_bar]{cli_progress_bar()}}, +\code{\link[=cli_progress_builtin_handlers]{cli_progress_builtin_handlers()}}, +\code{\link[=cli_progress_num]{cli_progress_num()}}, +\code{\link[=cli_progress_output]{cli_progress_output()}}, +\code{\link[=cli_progress_step]{cli_progress_step()}}, +\code{\link[=cli_progress_styles]{cli_progress_styles()}}, \code{\link{progress-variables}} -Other functions supporting inline markup: -\code{\link{cli_abort}()}, -\code{\link{cli_alert}()}, -\code{\link{cli_blockquote}()}, -\code{\link{cli_bullets}()}, -\code{\link{cli_bullets_raw}()}, -\code{\link{cli_dl}()}, -\code{\link{cli_h1}()}, -\code{\link{cli_li}()}, -\code{\link{cli_ol}()}, -\code{\link{cli_process_start}()}, -\code{\link{cli_progress_along}()}, -\code{\link{cli_progress_bar}()}, -\code{\link{cli_progress_output}()}, -\code{\link{cli_progress_step}()}, -\code{\link{cli_rule}}, -\code{\link{cli_status}()}, -\code{\link{cli_status_update}()}, -\code{\link{cli_text}()}, -\code{\link{cli_ul}()}, -\code{\link{format_error}()}, -\code{\link{format_inline}()} +Other functions supporting inline markup: +\code{\link[=cli_abort]{cli_abort()}}, +\code{\link[=cli_alert]{cli_alert()}}, +\code{\link[=cli_blockquote]{cli_blockquote()}}, +\code{\link[=cli_bullets]{cli_bullets()}}, +\code{\link[=cli_bullets_raw]{cli_bullets_raw()}}, +\code{\link[=cli_dl]{cli_dl()}}, +\code{\link[=cli_h1]{cli_h1()}}, +\code{\link[=cli_li]{cli_li()}}, +\code{\link[=cli_ol]{cli_ol()}}, +\code{\link[=cli_process_start]{cli_process_start()}}, +\code{\link[=cli_progress_along]{cli_progress_along()}}, +\code{\link[=cli_progress_bar]{cli_progress_bar()}}, +\code{\link[=cli_progress_output]{cli_progress_output()}}, +\code{\link[=cli_progress_step]{cli_progress_step()}}, +\code{\link[=cli_rule]{cli_rule()}}, +\code{\link[=cli_status]{cli_status()}}, +\code{\link[=cli_status_update]{cli_status_update()}}, +\code{\link[=cli_text]{cli_text()}}, +\code{\link[=cli_ul]{cli_ul()}}, +\code{\link[=format_error]{format_error()}}, +\code{\link[=format_inline]{format_inline()}} } \concept{functions supporting inline markup} \concept{progress bar functions} diff --git a/man/cli_progress_output.Rd b/man/cli_progress_output.Rd index 6cbe4a64b..564ca9ea3 100644 --- a/man/cli_progress_output.Rd +++ b/man/cli_progress_output.Rd @@ -46,38 +46,38 @@ fun() \seealso{ This function supports \link[=inline-markup]{inline markup}. -Other progress bar functions: -\code{\link{cli_progress_along}()}, -\code{\link{cli_progress_bar}()}, -\code{\link{cli_progress_builtin_handlers}()}, -\code{\link{cli_progress_message}()}, -\code{\link{cli_progress_num}()}, -\code{\link{cli_progress_step}()}, -\code{\link{cli_progress_styles}()}, +Other progress bar functions: +\code{\link[=cli_progress_along]{cli_progress_along()}}, +\code{\link[=cli_progress_bar]{cli_progress_bar()}}, +\code{\link[=cli_progress_builtin_handlers]{cli_progress_builtin_handlers()}}, +\code{\link[=cli_progress_message]{cli_progress_message()}}, +\code{\link[=cli_progress_num]{cli_progress_num()}}, +\code{\link[=cli_progress_step]{cli_progress_step()}}, +\code{\link[=cli_progress_styles]{cli_progress_styles()}}, \code{\link{progress-variables}} -Other functions supporting inline markup: -\code{\link{cli_abort}()}, -\code{\link{cli_alert}()}, -\code{\link{cli_blockquote}()}, -\code{\link{cli_bullets}()}, -\code{\link{cli_bullets_raw}()}, -\code{\link{cli_dl}()}, -\code{\link{cli_h1}()}, -\code{\link{cli_li}()}, -\code{\link{cli_ol}()}, -\code{\link{cli_process_start}()}, -\code{\link{cli_progress_along}()}, -\code{\link{cli_progress_bar}()}, -\code{\link{cli_progress_message}()}, -\code{\link{cli_progress_step}()}, -\code{\link{cli_rule}}, -\code{\link{cli_status}()}, -\code{\link{cli_status_update}()}, -\code{\link{cli_text}()}, -\code{\link{cli_ul}()}, -\code{\link{format_error}()}, -\code{\link{format_inline}()} +Other functions supporting inline markup: +\code{\link[=cli_abort]{cli_abort()}}, +\code{\link[=cli_alert]{cli_alert()}}, +\code{\link[=cli_blockquote]{cli_blockquote()}}, +\code{\link[=cli_bullets]{cli_bullets()}}, +\code{\link[=cli_bullets_raw]{cli_bullets_raw()}}, +\code{\link[=cli_dl]{cli_dl()}}, +\code{\link[=cli_h1]{cli_h1()}}, +\code{\link[=cli_li]{cli_li()}}, +\code{\link[=cli_ol]{cli_ol()}}, +\code{\link[=cli_process_start]{cli_process_start()}}, +\code{\link[=cli_progress_along]{cli_progress_along()}}, +\code{\link[=cli_progress_bar]{cli_progress_bar()}}, +\code{\link[=cli_progress_message]{cli_progress_message()}}, +\code{\link[=cli_progress_step]{cli_progress_step()}}, +\code{\link[=cli_rule]{cli_rule()}}, +\code{\link[=cli_status]{cli_status()}}, +\code{\link[=cli_status_update]{cli_status_update()}}, +\code{\link[=cli_text]{cli_text()}}, +\code{\link[=cli_ul]{cli_ul()}}, +\code{\link[=format_error]{format_error()}}, +\code{\link[=format_inline]{format_inline()}} } \concept{functions supporting inline markup} \concept{progress bar functions} diff --git a/man/cli_progress_step.Rd b/man/cli_progress_step.Rd index 6f12015a6..96ca9181e 100644 --- a/man/cli_progress_step.Rd +++ b/man/cli_progress_step.Rd @@ -145,38 +145,38 @@ f() \seealso{ This function supports \link[=inline-markup]{inline markup}. -Other progress bar functions: -\code{\link{cli_progress_along}()}, -\code{\link{cli_progress_bar}()}, -\code{\link{cli_progress_builtin_handlers}()}, -\code{\link{cli_progress_message}()}, -\code{\link{cli_progress_num}()}, -\code{\link{cli_progress_output}()}, -\code{\link{cli_progress_styles}()}, +Other progress bar functions: +\code{\link[=cli_progress_along]{cli_progress_along()}}, +\code{\link[=cli_progress_bar]{cli_progress_bar()}}, +\code{\link[=cli_progress_builtin_handlers]{cli_progress_builtin_handlers()}}, +\code{\link[=cli_progress_message]{cli_progress_message()}}, +\code{\link[=cli_progress_num]{cli_progress_num()}}, +\code{\link[=cli_progress_output]{cli_progress_output()}}, +\code{\link[=cli_progress_styles]{cli_progress_styles()}}, \code{\link{progress-variables}} -Other functions supporting inline markup: -\code{\link{cli_abort}()}, -\code{\link{cli_alert}()}, -\code{\link{cli_blockquote}()}, -\code{\link{cli_bullets}()}, -\code{\link{cli_bullets_raw}()}, -\code{\link{cli_dl}()}, -\code{\link{cli_h1}()}, -\code{\link{cli_li}()}, -\code{\link{cli_ol}()}, -\code{\link{cli_process_start}()}, -\code{\link{cli_progress_along}()}, -\code{\link{cli_progress_bar}()}, -\code{\link{cli_progress_message}()}, -\code{\link{cli_progress_output}()}, -\code{\link{cli_rule}}, -\code{\link{cli_status}()}, -\code{\link{cli_status_update}()}, -\code{\link{cli_text}()}, -\code{\link{cli_ul}()}, -\code{\link{format_error}()}, -\code{\link{format_inline}()} +Other functions supporting inline markup: +\code{\link[=cli_abort]{cli_abort()}}, +\code{\link[=cli_alert]{cli_alert()}}, +\code{\link[=cli_blockquote]{cli_blockquote()}}, +\code{\link[=cli_bullets]{cli_bullets()}}, +\code{\link[=cli_bullets_raw]{cli_bullets_raw()}}, +\code{\link[=cli_dl]{cli_dl()}}, +\code{\link[=cli_h1]{cli_h1()}}, +\code{\link[=cli_li]{cli_li()}}, +\code{\link[=cli_ol]{cli_ol()}}, +\code{\link[=cli_process_start]{cli_process_start()}}, +\code{\link[=cli_progress_along]{cli_progress_along()}}, +\code{\link[=cli_progress_bar]{cli_progress_bar()}}, +\code{\link[=cli_progress_message]{cli_progress_message()}}, +\code{\link[=cli_progress_output]{cli_progress_output()}}, +\code{\link[=cli_rule]{cli_rule()}}, +\code{\link[=cli_status]{cli_status()}}, +\code{\link[=cli_status_update]{cli_status_update()}}, +\code{\link[=cli_text]{cli_text()}}, +\code{\link[=cli_ul]{cli_ul()}}, +\code{\link[=format_error]{format_error()}}, +\code{\link[=format_inline]{format_inline()}} } \concept{functions supporting inline markup} \concept{progress bar functions} diff --git a/man/cli_progress_styles.Rd b/man/cli_progress_styles.Rd index 65ec4e010..98569dce7 100644 --- a/man/cli_progress_styles.Rd +++ b/man/cli_progress_styles.Rd @@ -44,14 +44,14 @@ options(cli.progress_var_style = NULL) }} } \seealso{ -Other progress bar functions: -\code{\link{cli_progress_along}()}, -\code{\link{cli_progress_bar}()}, -\code{\link{cli_progress_builtin_handlers}()}, -\code{\link{cli_progress_message}()}, -\code{\link{cli_progress_num}()}, -\code{\link{cli_progress_output}()}, -\code{\link{cli_progress_step}()}, +Other progress bar functions: +\code{\link[=cli_progress_along]{cli_progress_along()}}, +\code{\link[=cli_progress_bar]{cli_progress_bar()}}, +\code{\link[=cli_progress_builtin_handlers]{cli_progress_builtin_handlers()}}, +\code{\link[=cli_progress_message]{cli_progress_message()}}, +\code{\link[=cli_progress_num]{cli_progress_num()}}, +\code{\link[=cli_progress_output]{cli_progress_output()}}, +\code{\link[=cli_progress_step]{cli_progress_step()}}, \code{\link{progress-variables}} } \concept{progress bar functions} diff --git a/man/cli_rule.Rd b/man/cli_rule.Rd index c42214c87..00303dfd3 100644 --- a/man/cli_rule.Rd +++ b/man/cli_rule.Rd @@ -71,27 +71,27 @@ cli_end(d) \seealso{ This function supports \link[=inline-markup]{inline markup}. -Other functions supporting inline markup: -\code{\link{cli_abort}()}, -\code{\link{cli_alert}()}, -\code{\link{cli_blockquote}()}, -\code{\link{cli_bullets}()}, -\code{\link{cli_bullets_raw}()}, -\code{\link{cli_dl}()}, -\code{\link{cli_h1}()}, -\code{\link{cli_li}()}, -\code{\link{cli_ol}()}, -\code{\link{cli_process_start}()}, -\code{\link{cli_progress_along}()}, -\code{\link{cli_progress_bar}()}, -\code{\link{cli_progress_message}()}, -\code{\link{cli_progress_output}()}, -\code{\link{cli_progress_step}()}, -\code{\link{cli_status}()}, -\code{\link{cli_status_update}()}, -\code{\link{cli_text}()}, -\code{\link{cli_ul}()}, -\code{\link{format_error}()}, -\code{\link{format_inline}()} +Other functions supporting inline markup: +\code{\link[=cli_abort]{cli_abort()}}, +\code{\link[=cli_alert]{cli_alert()}}, +\code{\link[=cli_blockquote]{cli_blockquote()}}, +\code{\link[=cli_bullets]{cli_bullets()}}, +\code{\link[=cli_bullets_raw]{cli_bullets_raw()}}, +\code{\link[=cli_dl]{cli_dl()}}, +\code{\link[=cli_h1]{cli_h1()}}, +\code{\link[=cli_li]{cli_li()}}, +\code{\link[=cli_ol]{cli_ol()}}, +\code{\link[=cli_process_start]{cli_process_start()}}, +\code{\link[=cli_progress_along]{cli_progress_along()}}, +\code{\link[=cli_progress_bar]{cli_progress_bar()}}, +\code{\link[=cli_progress_message]{cli_progress_message()}}, +\code{\link[=cli_progress_output]{cli_progress_output()}}, +\code{\link[=cli_progress_step]{cli_progress_step()}}, +\code{\link[=cli_status]{cli_status()}}, +\code{\link[=cli_status_update]{cli_status_update()}}, +\code{\link[=cli_text]{cli_text()}}, +\code{\link[=cli_ul]{cli_ul()}}, +\code{\link[=format_error]{format_error()}}, +\code{\link[=format_inline]{format_inline()}} } \concept{functions supporting inline markup} diff --git a/man/cli_status.Rd b/man/cli_status.Rd index dbb6fa5ef..be5a0c83b 100644 --- a/man/cli_status.Rd +++ b/man/cli_status.Rd @@ -71,33 +71,33 @@ Status bars support \link[=inline-markup]{inline markup}. The \code{\link[=cli_progress_message]{cli_progress_message()}} and \code{\link[=cli_progress_step]{cli_progress_step()}} functions, for a superior API. -Other status bar: -\code{\link{cli_process_start}()}, -\code{\link{cli_status_clear}()}, -\code{\link{cli_status_update}()} +Other status bar: +\code{\link[=cli_process_start]{cli_process_start()}}, +\code{\link[=cli_status_clear]{cli_status_clear()}}, +\code{\link[=cli_status_update]{cli_status_update()}} -Other functions supporting inline markup: -\code{\link{cli_abort}()}, -\code{\link{cli_alert}()}, -\code{\link{cli_blockquote}()}, -\code{\link{cli_bullets}()}, -\code{\link{cli_bullets_raw}()}, -\code{\link{cli_dl}()}, -\code{\link{cli_h1}()}, -\code{\link{cli_li}()}, -\code{\link{cli_ol}()}, -\code{\link{cli_process_start}()}, -\code{\link{cli_progress_along}()}, -\code{\link{cli_progress_bar}()}, -\code{\link{cli_progress_message}()}, -\code{\link{cli_progress_output}()}, -\code{\link{cli_progress_step}()}, -\code{\link{cli_rule}}, -\code{\link{cli_status_update}()}, -\code{\link{cli_text}()}, -\code{\link{cli_ul}()}, -\code{\link{format_error}()}, -\code{\link{format_inline}()} +Other functions supporting inline markup: +\code{\link[=cli_abort]{cli_abort()}}, +\code{\link[=cli_alert]{cli_alert()}}, +\code{\link[=cli_blockquote]{cli_blockquote()}}, +\code{\link[=cli_bullets]{cli_bullets()}}, +\code{\link[=cli_bullets_raw]{cli_bullets_raw()}}, +\code{\link[=cli_dl]{cli_dl()}}, +\code{\link[=cli_h1]{cli_h1()}}, +\code{\link[=cli_li]{cli_li()}}, +\code{\link[=cli_ol]{cli_ol()}}, +\code{\link[=cli_process_start]{cli_process_start()}}, +\code{\link[=cli_progress_along]{cli_progress_along()}}, +\code{\link[=cli_progress_bar]{cli_progress_bar()}}, +\code{\link[=cli_progress_message]{cli_progress_message()}}, +\code{\link[=cli_progress_output]{cli_progress_output()}}, +\code{\link[=cli_progress_step]{cli_progress_step()}}, +\code{\link[=cli_rule]{cli_rule()}}, +\code{\link[=cli_status_update]{cli_status_update()}}, +\code{\link[=cli_text]{cli_text()}}, +\code{\link[=cli_ul]{cli_ul()}}, +\code{\link[=format_error]{format_error()}}, +\code{\link[=format_inline]{format_inline()}} } \concept{functions supporting inline markup} \concept{status bar} diff --git a/man/cli_status_clear.Rd b/man/cli_status_clear.Rd index 875ae0f89..9d9b35db9 100644 --- a/man/cli_status_clear.Rd +++ b/man/cli_status_clear.Rd @@ -43,9 +43,9 @@ Clear the status bar The \code{\link[=cli_progress_message]{cli_progress_message()}} and \code{\link[=cli_progress_step]{cli_progress_step()}} functions, for a superior API. -Other status bar: -\code{\link{cli_process_start}()}, -\code{\link{cli_status}()}, -\code{\link{cli_status_update}()} +Other status bar: +\code{\link[=cli_process_start]{cli_process_start()}}, +\code{\link[=cli_status]{cli_status()}}, +\code{\link[=cli_status_update]{cli_status_update()}} } \concept{status bar} diff --git a/man/cli_status_update.Rd b/man/cli_status_update.Rd index 9045f2f9b..12ad3db7e 100644 --- a/man/cli_status_update.Rd +++ b/man/cli_status_update.Rd @@ -43,33 +43,33 @@ This function supports \link[=inline-markup]{inline markup}. The \code{\link[=cli_progress_message]{cli_progress_message()}} and \code{\link[=cli_progress_step]{cli_progress_step()}} functions, for a superior API. -Other status bar: -\code{\link{cli_process_start}()}, -\code{\link{cli_status}()}, -\code{\link{cli_status_clear}()} +Other status bar: +\code{\link[=cli_process_start]{cli_process_start()}}, +\code{\link[=cli_status]{cli_status()}}, +\code{\link[=cli_status_clear]{cli_status_clear()}} -Other functions supporting inline markup: -\code{\link{cli_abort}()}, -\code{\link{cli_alert}()}, -\code{\link{cli_blockquote}()}, -\code{\link{cli_bullets}()}, -\code{\link{cli_bullets_raw}()}, -\code{\link{cli_dl}()}, -\code{\link{cli_h1}()}, -\code{\link{cli_li}()}, -\code{\link{cli_ol}()}, -\code{\link{cli_process_start}()}, -\code{\link{cli_progress_along}()}, -\code{\link{cli_progress_bar}()}, -\code{\link{cli_progress_message}()}, -\code{\link{cli_progress_output}()}, -\code{\link{cli_progress_step}()}, -\code{\link{cli_rule}}, -\code{\link{cli_status}()}, -\code{\link{cli_text}()}, -\code{\link{cli_ul}()}, -\code{\link{format_error}()}, -\code{\link{format_inline}()} +Other functions supporting inline markup: +\code{\link[=cli_abort]{cli_abort()}}, +\code{\link[=cli_alert]{cli_alert()}}, +\code{\link[=cli_blockquote]{cli_blockquote()}}, +\code{\link[=cli_bullets]{cli_bullets()}}, +\code{\link[=cli_bullets_raw]{cli_bullets_raw()}}, +\code{\link[=cli_dl]{cli_dl()}}, +\code{\link[=cli_h1]{cli_h1()}}, +\code{\link[=cli_li]{cli_li()}}, +\code{\link[=cli_ol]{cli_ol()}}, +\code{\link[=cli_process_start]{cli_process_start()}}, +\code{\link[=cli_progress_along]{cli_progress_along()}}, +\code{\link[=cli_progress_bar]{cli_progress_bar()}}, +\code{\link[=cli_progress_message]{cli_progress_message()}}, +\code{\link[=cli_progress_output]{cli_progress_output()}}, +\code{\link[=cli_progress_step]{cli_progress_step()}}, +\code{\link[=cli_rule]{cli_rule()}}, +\code{\link[=cli_status]{cli_status()}}, +\code{\link[=cli_text]{cli_text()}}, +\code{\link[=cli_ul]{cli_ul()}}, +\code{\link[=format_error]{format_error()}}, +\code{\link[=format_inline]{format_inline()}} } \concept{functions supporting inline markup} \concept{status bar} diff --git a/man/cli_text.Rd b/man/cli_text.Rd index c3027099d..ae713b8ea 100644 --- a/man/cli_text.Rd +++ b/man/cli_text.Rd @@ -129,27 +129,27 @@ cli_end(ul) \seealso{ This function supports \link[=inline-markup]{inline markup}. -Other functions supporting inline markup: -\code{\link{cli_abort}()}, -\code{\link{cli_alert}()}, -\code{\link{cli_blockquote}()}, -\code{\link{cli_bullets}()}, -\code{\link{cli_bullets_raw}()}, -\code{\link{cli_dl}()}, -\code{\link{cli_h1}()}, -\code{\link{cli_li}()}, -\code{\link{cli_ol}()}, -\code{\link{cli_process_start}()}, -\code{\link{cli_progress_along}()}, -\code{\link{cli_progress_bar}()}, -\code{\link{cli_progress_message}()}, -\code{\link{cli_progress_output}()}, -\code{\link{cli_progress_step}()}, -\code{\link{cli_rule}}, -\code{\link{cli_status}()}, -\code{\link{cli_status_update}()}, -\code{\link{cli_ul}()}, -\code{\link{format_error}()}, -\code{\link{format_inline}()} +Other functions supporting inline markup: +\code{\link[=cli_abort]{cli_abort()}}, +\code{\link[=cli_alert]{cli_alert()}}, +\code{\link[=cli_blockquote]{cli_blockquote()}}, +\code{\link[=cli_bullets]{cli_bullets()}}, +\code{\link[=cli_bullets_raw]{cli_bullets_raw()}}, +\code{\link[=cli_dl]{cli_dl()}}, +\code{\link[=cli_h1]{cli_h1()}}, +\code{\link[=cli_li]{cli_li()}}, +\code{\link[=cli_ol]{cli_ol()}}, +\code{\link[=cli_process_start]{cli_process_start()}}, +\code{\link[=cli_progress_along]{cli_progress_along()}}, +\code{\link[=cli_progress_bar]{cli_progress_bar()}}, +\code{\link[=cli_progress_message]{cli_progress_message()}}, +\code{\link[=cli_progress_output]{cli_progress_output()}}, +\code{\link[=cli_progress_step]{cli_progress_step()}}, +\code{\link[=cli_rule]{cli_rule()}}, +\code{\link[=cli_status]{cli_status()}}, +\code{\link[=cli_status_update]{cli_status_update()}}, +\code{\link[=cli_ul]{cli_ul()}}, +\code{\link[=format_error]{format_error()}}, +\code{\link[=format_inline]{format_inline()}} } \concept{functions supporting inline markup} diff --git a/man/cli_ul.Rd b/man/cli_ul.Rd index b9e18a7e9..156ba9d0e 100644 --- a/man/cli_ul.Rd +++ b/man/cli_ul.Rd @@ -79,27 +79,27 @@ fun() \seealso{ This function supports \link[=inline-markup]{inline markup}. -Other functions supporting inline markup: -\code{\link{cli_abort}()}, -\code{\link{cli_alert}()}, -\code{\link{cli_blockquote}()}, -\code{\link{cli_bullets}()}, -\code{\link{cli_bullets_raw}()}, -\code{\link{cli_dl}()}, -\code{\link{cli_h1}()}, -\code{\link{cli_li}()}, -\code{\link{cli_ol}()}, -\code{\link{cli_process_start}()}, -\code{\link{cli_progress_along}()}, -\code{\link{cli_progress_bar}()}, -\code{\link{cli_progress_message}()}, -\code{\link{cli_progress_output}()}, -\code{\link{cli_progress_step}()}, -\code{\link{cli_rule}}, -\code{\link{cli_status}()}, -\code{\link{cli_status_update}()}, -\code{\link{cli_text}()}, -\code{\link{format_error}()}, -\code{\link{format_inline}()} +Other functions supporting inline markup: +\code{\link[=cli_abort]{cli_abort()}}, +\code{\link[=cli_alert]{cli_alert()}}, +\code{\link[=cli_blockquote]{cli_blockquote()}}, +\code{\link[=cli_bullets]{cli_bullets()}}, +\code{\link[=cli_bullets_raw]{cli_bullets_raw()}}, +\code{\link[=cli_dl]{cli_dl()}}, +\code{\link[=cli_h1]{cli_h1()}}, +\code{\link[=cli_li]{cli_li()}}, +\code{\link[=cli_ol]{cli_ol()}}, +\code{\link[=cli_process_start]{cli_process_start()}}, +\code{\link[=cli_progress_along]{cli_progress_along()}}, +\code{\link[=cli_progress_bar]{cli_progress_bar()}}, +\code{\link[=cli_progress_message]{cli_progress_message()}}, +\code{\link[=cli_progress_output]{cli_progress_output()}}, +\code{\link[=cli_progress_step]{cli_progress_step()}}, +\code{\link[=cli_rule]{cli_rule()}}, +\code{\link[=cli_status]{cli_status()}}, +\code{\link[=cli_status_update]{cli_status_update()}}, +\code{\link[=cli_text]{cli_text()}}, +\code{\link[=format_error]{format_error()}}, +\code{\link[=format_inline]{format_inline()}} } \concept{functions supporting inline markup} diff --git a/man/code_highlight.Rd b/man/code_highlight.Rd index c6437972a..2d2e093b4 100644 --- a/man/code_highlight.Rd +++ b/man/code_highlight.Rd @@ -33,7 +33,7 @@ code_highlight(deparse(ls)) cat(code_highlight(deparse(ls)), sep = "\n") } \seealso{ -Other syntax highlighting: -\code{\link{code_theme_list}()} +Other syntax highlighting: +\code{\link[=code_theme_list]{code_theme_list()}} } \concept{syntax highlighting} diff --git a/man/code_theme_list.Rd b/man/code_theme_list.Rd index 0c67af36d..c4ef89a13 100644 --- a/man/code_theme_list.Rd +++ b/man/code_theme_list.Rd @@ -51,7 +51,7 @@ code_theme_list() code_highlight(deparse(get), code_theme = "Solarized Dark") } \seealso{ -Other syntax highlighting: -\code{\link{code_highlight}()} +Other syntax highlighting: +\code{\link[=code_highlight]{code_highlight()}} } \concept{syntax highlighting} diff --git a/man/combine_ansi_styles.Rd b/man/combine_ansi_styles.Rd index 07ce363d3..6e432fadc 100644 --- a/man/combine_ansi_styles.Rd +++ b/man/combine_ansi_styles.Rd @@ -42,9 +42,9 @@ alert <- combine_ansi_styles( cat(alert("Warning!"), "\n") } \seealso{ -Other ANSI styling: +Other ANSI styling: \code{\link{ansi-styles}}, -\code{\link{make_ansi_style}()}, -\code{\link{num_ansi_colors}()} +\code{\link[=make_ansi_style]{make_ansi_style()}}, +\code{\link[=num_ansi_colors]{num_ansi_colors()}} } \concept{ANSI styling} diff --git a/man/demo_spinners.Rd b/man/demo_spinners.Rd index 53ef7e586..3714e8a31 100644 --- a/man/demo_spinners.Rd +++ b/man/demo_spinners.Rd @@ -19,9 +19,9 @@ Each spinner is shown for about 2-3 seconds. \if{html}{\figure{demo-spinners.svg}} } \seealso{ -Other spinners: -\code{\link{get_spinner}()}, -\code{\link{list_spinners}()}, -\code{\link{make_spinner}()} +Other spinners: +\code{\link[=get_spinner]{get_spinner()}}, +\code{\link[=list_spinners]{list_spinners()}}, +\code{\link[=make_spinner]{make_spinner()}} } \concept{spinners} diff --git a/man/diff_chr.Rd b/man/diff_chr.Rd index c17660240..cb944f0b0 100644 --- a/man/diff_chr.Rd +++ b/man/diff_chr.Rd @@ -49,7 +49,7 @@ diff_chr(letters, letters2) The diffobj package for a much more comprehensive set of \code{diff}-like tools. -Other diff functions in cli: -\code{\link{diff_str}()} +Other diff functions in cli: +\code{\link[=diff_str]{diff_str()}} } \concept{diff functions in cli} diff --git a/man/diff_str.Rd b/man/diff_str.Rd index 36c9b2927..4b8122fff 100644 --- a/man/diff_str.Rd +++ b/man/diff_str.Rd @@ -34,7 +34,7 @@ diff_str(str1, str2) The diffobj package for a much more comprehensive set of \code{diff}-like tools. -Other diff functions in cli: -\code{\link{diff_chr}()} +Other diff functions in cli: +\code{\link[=diff_chr]{diff_chr()}} } \concept{diff functions in cli} diff --git a/man/format_error.Rd b/man/format_error.Rd index b59585624..2253ab192 100644 --- a/man/format_error.Rd +++ b/man/format_error.Rd @@ -55,27 +55,27 @@ stop(format_error(c( \seealso{ These functions support \link[=inline-markup]{inline markup}. -Other functions supporting inline markup: -\code{\link{cli_abort}()}, -\code{\link{cli_alert}()}, -\code{\link{cli_blockquote}()}, -\code{\link{cli_bullets}()}, -\code{\link{cli_bullets_raw}()}, -\code{\link{cli_dl}()}, -\code{\link{cli_h1}()}, -\code{\link{cli_li}()}, -\code{\link{cli_ol}()}, -\code{\link{cli_process_start}()}, -\code{\link{cli_progress_along}()}, -\code{\link{cli_progress_bar}()}, -\code{\link{cli_progress_message}()}, -\code{\link{cli_progress_output}()}, -\code{\link{cli_progress_step}()}, -\code{\link{cli_rule}}, -\code{\link{cli_status}()}, -\code{\link{cli_status_update}()}, -\code{\link{cli_text}()}, -\code{\link{cli_ul}()}, -\code{\link{format_inline}()} +Other functions supporting inline markup: +\code{\link[=cli_abort]{cli_abort()}}, +\code{\link[=cli_alert]{cli_alert()}}, +\code{\link[=cli_blockquote]{cli_blockquote()}}, +\code{\link[=cli_bullets]{cli_bullets()}}, +\code{\link[=cli_bullets_raw]{cli_bullets_raw()}}, +\code{\link[=cli_dl]{cli_dl()}}, +\code{\link[=cli_h1]{cli_h1()}}, +\code{\link[=cli_li]{cli_li()}}, +\code{\link[=cli_ol]{cli_ol()}}, +\code{\link[=cli_process_start]{cli_process_start()}}, +\code{\link[=cli_progress_along]{cli_progress_along()}}, +\code{\link[=cli_progress_bar]{cli_progress_bar()}}, +\code{\link[=cli_progress_message]{cli_progress_message()}}, +\code{\link[=cli_progress_output]{cli_progress_output()}}, +\code{\link[=cli_progress_step]{cli_progress_step()}}, +\code{\link[=cli_rule]{cli_rule()}}, +\code{\link[=cli_status]{cli_status()}}, +\code{\link[=cli_status_update]{cli_status_update()}}, +\code{\link[=cli_text]{cli_text()}}, +\code{\link[=cli_ul]{cli_ul()}}, +\code{\link[=format_inline]{format_inline()}} } \concept{functions supporting inline markup} diff --git a/man/format_inline.Rd b/man/format_inline.Rd index 9be129ce1..758db68d3 100644 --- a/man/format_inline.Rd +++ b/man/format_inline.Rd @@ -38,27 +38,27 @@ format_inline("A message for {.emph later}, thanks {.fn format_inline}.") \seealso{ This function supports \link[=inline-markup]{inline markup}. -Other functions supporting inline markup: -\code{\link{cli_abort}()}, -\code{\link{cli_alert}()}, -\code{\link{cli_blockquote}()}, -\code{\link{cli_bullets}()}, -\code{\link{cli_bullets_raw}()}, -\code{\link{cli_dl}()}, -\code{\link{cli_h1}()}, -\code{\link{cli_li}()}, -\code{\link{cli_ol}()}, -\code{\link{cli_process_start}()}, -\code{\link{cli_progress_along}()}, -\code{\link{cli_progress_bar}()}, -\code{\link{cli_progress_message}()}, -\code{\link{cli_progress_output}()}, -\code{\link{cli_progress_step}()}, -\code{\link{cli_rule}}, -\code{\link{cli_status}()}, -\code{\link{cli_status_update}()}, -\code{\link{cli_text}()}, -\code{\link{cli_ul}()}, -\code{\link{format_error}()} +Other functions supporting inline markup: +\code{\link[=cli_abort]{cli_abort()}}, +\code{\link[=cli_alert]{cli_alert()}}, +\code{\link[=cli_blockquote]{cli_blockquote()}}, +\code{\link[=cli_bullets]{cli_bullets()}}, +\code{\link[=cli_bullets_raw]{cli_bullets_raw()}}, +\code{\link[=cli_dl]{cli_dl()}}, +\code{\link[=cli_h1]{cli_h1()}}, +\code{\link[=cli_li]{cli_li()}}, +\code{\link[=cli_ol]{cli_ol()}}, +\code{\link[=cli_process_start]{cli_process_start()}}, +\code{\link[=cli_progress_along]{cli_progress_along()}}, +\code{\link[=cli_progress_bar]{cli_progress_bar()}}, +\code{\link[=cli_progress_message]{cli_progress_message()}}, +\code{\link[=cli_progress_output]{cli_progress_output()}}, +\code{\link[=cli_progress_step]{cli_progress_step()}}, +\code{\link[=cli_rule]{cli_rule()}}, +\code{\link[=cli_status]{cli_status()}}, +\code{\link[=cli_status_update]{cli_status_update()}}, +\code{\link[=cli_text]{cli_text()}}, +\code{\link[=cli_ul]{cli_ul()}}, +\code{\link[=format_error]{format_error()}} } \concept{functions supporting inline markup} diff --git a/man/get_spinner.Rd b/man/get_spinner.Rd index 7f59e43d2..cf1835598 100644 --- a/man/get_spinner.Rd +++ b/man/get_spinner.Rd @@ -39,9 +39,9 @@ options(cli.spinner = NULL) \if{html}{\figure{get-spinner.svg}} } \seealso{ -Other spinners: -\code{\link{demo_spinners}()}, -\code{\link{list_spinners}()}, -\code{\link{make_spinner}()} +Other spinners: +\code{\link[=demo_spinners]{demo_spinners()}}, +\code{\link[=list_spinners]{list_spinners()}}, +\code{\link[=make_spinner]{make_spinner()}} } \concept{spinners} diff --git a/man/has_keypress_support.Rd b/man/has_keypress_support.Rd index 08de2b75f..d17fef0d2 100644 --- a/man/has_keypress_support.Rd +++ b/man/has_keypress_support.Rd @@ -35,7 +35,7 @@ Not supported: has_keypress_support() } \seealso{ -Other keypress function: -\code{\link{keypress}()} +Other keypress function: +\code{\link[=keypress]{keypress()}} } \concept{keypress function} diff --git a/man/hash_animal.Rd b/man/hash_animal.Rd index 1376b63c0..c9c78c3b9 100644 --- a/man/hash_animal.Rd +++ b/man/hash_animal.Rd @@ -82,11 +82,11 @@ hash_animal("cli package", 3)$hash \seealso{ the ids package for generating random adjective-animal ids -Other hash functions: -\code{\link{hash_emoji}()}, -\code{\link{hash_md5}()}, -\code{\link{hash_sha1}()}, -\code{\link{hash_sha256}()}, -\code{\link{hash_xxhash}()} +Other hash functions: +\code{\link[=hash_emoji]{hash_emoji()}}, +\code{\link[=hash_md5]{hash_md5()}}, +\code{\link[=hash_sha1]{hash_sha1()}}, +\code{\link[=hash_sha256]{hash_sha256()}}, +\code{\link[=hash_xxhash]{hash_xxhash()}} } \concept{hash functions} diff --git a/man/hash_emoji.Rd b/man/hash_emoji.Rd index b35cba784..303592924 100644 --- a/man/hash_emoji.Rd +++ b/man/hash_emoji.Rd @@ -80,11 +80,11 @@ hash_emoji("foobar", 4)$text \seealso{ the emoji package for a comprehensive list of emojis -Other hash functions: -\code{\link{hash_animal}()}, -\code{\link{hash_md5}()}, -\code{\link{hash_sha1}()}, -\code{\link{hash_sha256}()}, -\code{\link{hash_xxhash}()} +Other hash functions: +\code{\link[=hash_animal]{hash_animal()}}, +\code{\link[=hash_md5]{hash_md5()}}, +\code{\link[=hash_sha1]{hash_sha1()}}, +\code{\link[=hash_sha256]{hash_sha256()}}, +\code{\link[=hash_xxhash]{hash_xxhash()}} } \concept{hash functions} diff --git a/man/hash_md5.Rd b/man/hash_md5.Rd index c67cb4169..862421855 100644 --- a/man/hash_md5.Rd +++ b/man/hash_md5.Rd @@ -53,11 +53,11 @@ hash_md5(c("foo", NA, "bar", "")) \code{\link[tools:md5sum]{tools::md5sum()}} for a base R MD5 function that works on files. -Other hash functions: -\code{\link{hash_animal}()}, -\code{\link{hash_emoji}()}, -\code{\link{hash_sha1}()}, -\code{\link{hash_sha256}()}, -\code{\link{hash_xxhash}()} +Other hash functions: +\code{\link[=hash_animal]{hash_animal()}}, +\code{\link[=hash_emoji]{hash_emoji()}}, +\code{\link[=hash_sha1]{hash_sha1()}}, +\code{\link[=hash_sha256]{hash_sha256()}}, +\code{\link[=hash_xxhash]{hash_xxhash()}} } \concept{hash functions} diff --git a/man/hash_sha1.Rd b/man/hash_sha1.Rd index abc919d4a..a7d884bce 100644 --- a/man/hash_sha1.Rd +++ b/man/hash_sha1.Rd @@ -53,11 +53,11 @@ more files. hash_sha1(c("foo", NA, "bar", "")) } \seealso{ -Other hash functions: -\code{\link{hash_animal}()}, -\code{\link{hash_emoji}()}, -\code{\link{hash_md5}()}, -\code{\link{hash_sha256}()}, -\code{\link{hash_xxhash}()} +Other hash functions: +\code{\link[=hash_animal]{hash_animal()}}, +\code{\link[=hash_emoji]{hash_emoji()}}, +\code{\link[=hash_md5]{hash_md5()}}, +\code{\link[=hash_sha256]{hash_sha256()}}, +\code{\link[=hash_xxhash]{hash_xxhash()}} } \concept{hash functions} diff --git a/man/hash_sha256.Rd b/man/hash_sha256.Rd index 6a3d879fb..0ace36879 100644 --- a/man/hash_sha256.Rd +++ b/man/hash_sha256.Rd @@ -53,11 +53,11 @@ more files. hash_sha256(c("foo", NA, "bar", "")) } \seealso{ -Other hash functions: -\code{\link{hash_animal}()}, -\code{\link{hash_emoji}()}, -\code{\link{hash_md5}()}, -\code{\link{hash_sha1}()}, -\code{\link{hash_xxhash}()} +Other hash functions: +\code{\link[=hash_animal]{hash_animal()}}, +\code{\link[=hash_emoji]{hash_emoji()}}, +\code{\link[=hash_md5]{hash_md5()}}, +\code{\link[=hash_sha1]{hash_sha1()}}, +\code{\link[=hash_xxhash]{hash_xxhash()}} } \concept{hash functions} diff --git a/man/hash_xxhash.Rd b/man/hash_xxhash.Rd index 8c65255bb..11b2b254a 100644 --- a/man/hash_xxhash.Rd +++ b/man/hash_xxhash.Rd @@ -68,11 +68,11 @@ of xxHash. Otherwise they work the same. hash_xxhash(c("foo", NA, "bar", "")) } \seealso{ -Other hash functions: -\code{\link{hash_animal}()}, -\code{\link{hash_emoji}()}, -\code{\link{hash_md5}()}, -\code{\link{hash_sha1}()}, -\code{\link{hash_sha256}()} +Other hash functions: +\code{\link[=hash_animal]{hash_animal()}}, +\code{\link[=hash_emoji]{hash_emoji()}}, +\code{\link[=hash_md5]{hash_md5()}}, +\code{\link[=hash_sha1]{hash_sha1()}}, +\code{\link[=hash_sha256]{hash_sha256()}} } \concept{hash functions} diff --git a/man/is_ansi_tty.Rd b/man/is_ansi_tty.Rd index 75f1dca16..c610abc64 100644 --- a/man/is_ansi_tty.Rd +++ b/man/is_ansi_tty.Rd @@ -31,8 +31,8 @@ We check that all of the following hold: is_ansi_tty() } \seealso{ -Other terminal capabilities: -\code{\link{ansi_hide_cursor}()}, -\code{\link{is_dynamic_tty}()} +Other terminal capabilities: +\code{\link[=ansi_hide_cursor]{ansi_hide_cursor()}}, +\code{\link[=is_dynamic_tty]{is_dynamic_tty()}} } \concept{terminal capabilities} diff --git a/man/is_dynamic_tty.Rd b/man/is_dynamic_tty.Rd index 065a91d9e..73883d338 100644 --- a/man/is_dynamic_tty.Rd +++ b/man/is_dynamic_tty.Rd @@ -43,8 +43,8 @@ is_dynamic_tty() is_dynamic_tty(stdout()) } \seealso{ -Other terminal capabilities: -\code{\link{ansi_hide_cursor}()}, -\code{\link{is_ansi_tty}()} +Other terminal capabilities: +\code{\link[=ansi_hide_cursor]{ansi_hide_cursor()}}, +\code{\link[=is_ansi_tty]{is_ansi_tty()}} } \concept{terminal capabilities} diff --git a/man/keypress.Rd b/man/keypress.Rd index e1dd332e9..7764c0305 100644 --- a/man/keypress.Rd +++ b/man/keypress.Rd @@ -37,7 +37,7 @@ cat("You pressed key", x, "\n") \dontshow{\}) # examplesIf} } \seealso{ -Other keypress function: -\code{\link{has_keypress_support}()} +Other keypress function: +\code{\link[=has_keypress_support]{has_keypress_support()}} } \concept{keypress function} diff --git a/man/links.Rd b/man/links.Rd index e8e847a8c..104df18da 100644 --- a/man/links.Rd +++ b/man/links.Rd @@ -8,7 +8,7 @@ Certain cli styles create clickable links, if your IDE or terminal supports them. } \section{Note: hyperlinks are currently experimental}{ -The details of the styles that create hyperlinks will prrobably change +The details of the styles that create hyperlinks will probably change in the near future, based on user feedback. } diff --git a/man/list_spinners.Rd b/man/list_spinners.Rd index 74997c3d1..09ef8a585 100644 --- a/man/list_spinners.Rd +++ b/man/list_spinners.Rd @@ -17,9 +17,9 @@ list_spinners() get_spinner(list_spinners()[1]) } \seealso{ -Other spinners: -\code{\link{demo_spinners}()}, -\code{\link{get_spinner}()}, -\code{\link{make_spinner}()} +Other spinners: +\code{\link[=demo_spinners]{demo_spinners()}}, +\code{\link[=get_spinner]{get_spinner()}}, +\code{\link[=make_spinner]{make_spinner()}} } \concept{spinners} diff --git a/man/make_ansi_style.Rd b/man/make_ansi_style.Rd index 33ca9f9f4..4e92b5151 100644 --- a/man/make_ansi_style.Rd +++ b/man/make_ansi_style.Rd @@ -55,9 +55,9 @@ orange("foobar") cat(orange("foobar")) } \seealso{ -Other ANSI styling: +Other ANSI styling: \code{\link{ansi-styles}}, -\code{\link{combine_ansi_styles}()}, -\code{\link{num_ansi_colors}()} +\code{\link[=combine_ansi_styles]{combine_ansi_styles()}}, +\code{\link[=num_ansi_colors]{num_ansi_colors()}} } \concept{ANSI styling} diff --git a/man/make_spinner.Rd b/man/make_spinner.Rd index dbe11d551..9b70fe9fc 100644 --- a/man/make_spinner.Rd +++ b/man/make_spinner.Rd @@ -100,9 +100,9 @@ ansi_with_hidden_cursor(fun_with_spinner3()) } \seealso{ -Other spinners: -\code{\link{demo_spinners}()}, -\code{\link{get_spinner}()}, -\code{\link{list_spinners}()} +Other spinners: +\code{\link[=demo_spinners]{demo_spinners()}}, +\code{\link[=get_spinner]{get_spinner()}}, +\code{\link[=list_spinners]{list_spinners()}} } \concept{spinners} diff --git a/man/num_ansi_colors.Rd b/man/num_ansi_colors.Rd index 90f3e4936..817ed7439 100644 --- a/man/num_ansi_colors.Rd +++ b/man/num_ansi_colors.Rd @@ -117,9 +117,9 @@ num_ansi_colors() } \seealso{ -Other ANSI styling: +Other ANSI styling: \code{\link{ansi-styles}}, -\code{\link{combine_ansi_styles}()}, -\code{\link{make_ansi_style}()} +\code{\link[=combine_ansi_styles]{combine_ansi_styles()}}, +\code{\link[=make_ansi_style]{make_ansi_style()}} } \concept{ANSI styling} diff --git a/man/pluralization-helpers.Rd b/man/pluralization-helpers.Rd index bcb46dfdd..177900f23 100644 --- a/man/pluralization-helpers.Rd +++ b/man/pluralization-helpers.Rd @@ -33,8 +33,8 @@ nfile <- 2; cli_text("Found {no(nfile)} file{?s}.") } \seealso{ -Other pluralization: +Other pluralization: \code{\link{pluralization}}, -\code{\link{pluralize}()} +\code{\link[=pluralize]{pluralize()}} } \concept{pluralization} diff --git a/man/pluralization.Rd b/man/pluralization.Rd index 64731c85d..0e0d8786a 100644 --- a/man/pluralization.Rd +++ b/man/pluralization.Rd @@ -216,8 +216,8 @@ one otherwise. } \seealso{ -Other pluralization: -\code{\link{no}()}, -\code{\link{pluralize}()} +Other pluralization: +\code{\link[=no]{no()}}, +\code{\link[=pluralize]{pluralize()}} } \concept{pluralization} diff --git a/man/pluralize.Rd b/man/pluralize.Rd index 1739f34c1..34894b4c2 100644 --- a/man/pluralize.Rd +++ b/man/pluralize.Rd @@ -62,8 +62,8 @@ cli_text("{nupd}/{ntotal} {qty(nupd)} file{?s} {?needs/need} updates") \dontshow{\}) # examplesIf} } \seealso{ -Other pluralization: -\code{\link{no}()}, +Other pluralization: +\code{\link[=no]{no()}}, \code{\link{pluralization}} } \concept{pluralization} diff --git a/man/pretty_print_code.Rd b/man/pretty_print_code.Rd index 178654f67..f5468002f 100644 --- a/man/pretty_print_code.Rd +++ b/man/pretty_print_code.Rd @@ -12,5 +12,5 @@ syntax highlighting. } \details{ The new print method takes priority over the built-in one. Use -\code{\link[base:message]{base::suppressMessages()}} to suppress the alert message. +\code{\link[base:suppressMessages]{base::suppressMessages()}} to suppress the alert message. } diff --git a/man/progress-utils.Rd b/man/progress-utils.Rd index d9a2a3f75..6c4c36b8f 100644 --- a/man/progress-utils.Rd +++ b/man/progress-utils.Rd @@ -26,14 +26,14 @@ bars created in C/C++ code.) (It currently ignores progress bars created in the C/C++ code.) } \seealso{ -Other progress bar functions: -\code{\link{cli_progress_along}()}, -\code{\link{cli_progress_bar}()}, -\code{\link{cli_progress_builtin_handlers}()}, -\code{\link{cli_progress_message}()}, -\code{\link{cli_progress_output}()}, -\code{\link{cli_progress_step}()}, -\code{\link{cli_progress_styles}()}, +Other progress bar functions: +\code{\link[=cli_progress_along]{cli_progress_along()}}, +\code{\link[=cli_progress_bar]{cli_progress_bar()}}, +\code{\link[=cli_progress_builtin_handlers]{cli_progress_builtin_handlers()}}, +\code{\link[=cli_progress_message]{cli_progress_message()}}, +\code{\link[=cli_progress_output]{cli_progress_output()}}, +\code{\link[=cli_progress_step]{cli_progress_step()}}, +\code{\link[=cli_progress_styles]{cli_progress_styles()}}, \code{\link{progress-variables}} } \concept{progress bar functions} diff --git a/man/progress-variables.Rd b/man/progress-variables.Rd index 4209f3c2b..47052f7f5 100644 --- a/man/progress-variables.Rd +++ b/man/progress-variables.Rd @@ -425,14 +425,14 @@ bytes, in a human readable format. } } \seealso{ -Other progress bar functions: -\code{\link{cli_progress_along}()}, -\code{\link{cli_progress_bar}()}, -\code{\link{cli_progress_builtin_handlers}()}, -\code{\link{cli_progress_message}()}, -\code{\link{cli_progress_num}()}, -\code{\link{cli_progress_output}()}, -\code{\link{cli_progress_step}()}, -\code{\link{cli_progress_styles}()} +Other progress bar functions: +\code{\link[=cli_progress_along]{cli_progress_along()}}, +\code{\link[=cli_progress_bar]{cli_progress_bar()}}, +\code{\link[=cli_progress_builtin_handlers]{cli_progress_builtin_handlers()}}, +\code{\link[=cli_progress_message]{cli_progress_message()}}, +\code{\link[=cli_progress_num]{cli_progress_num()}}, +\code{\link[=cli_progress_output]{cli_progress_output()}}, +\code{\link[=cli_progress_step]{cli_progress_step()}}, +\code{\link[=cli_progress_styles]{cli_progress_styles()}} } \concept{progress bar functions} diff --git a/man/utf8_graphemes.Rd b/man/utf8_graphemes.Rd index ca61d4c38..aa15cac81 100644 --- a/man/utf8_graphemes.Rd +++ b/man/utf8_graphemes.Rd @@ -28,8 +28,8 @@ cat(str, "\n") chrs <- utf8_graphemes(str) } \seealso{ -Other UTF-8 string manipulation: -\code{\link{utf8_nchar}()}, -\code{\link{utf8_substr}()} +Other UTF-8 string manipulation: +\code{\link[=utf8_nchar]{utf8_nchar()}}, +\code{\link[=utf8_substr]{utf8_substr()}} } \concept{UTF-8 string manipulation} diff --git a/man/utf8_nchar.Rd b/man/utf8_nchar.Rd index 9022c033e..1c8f500ca 100644 --- a/man/utf8_nchar.Rd +++ b/man/utf8_nchar.Rd @@ -41,8 +41,8 @@ nchar(emo, "bytes") nchar(emo, "width") } \seealso{ -Other UTF-8 string manipulation: -\code{\link{utf8_graphemes}()}, -\code{\link{utf8_substr}()} +Other UTF-8 string manipulation: +\code{\link[=utf8_graphemes]{utf8_graphemes()}}, +\code{\link[=utf8_substr]{utf8_substr()}} } \concept{UTF-8 string manipulation} diff --git a/man/utf8_substr.Rd b/man/utf8_substr.Rd index 7b9f17700..66f9cdfa4 100644 --- a/man/utf8_substr.Rd +++ b/man/utf8_substr.Rd @@ -36,8 +36,8 @@ str24 <- utf8_substr(str, 2, 4) cat(str24) } \seealso{ -Other UTF-8 string manipulation: -\code{\link{utf8_graphemes}()}, -\code{\link{utf8_nchar}()} +Other UTF-8 string manipulation: +\code{\link[=utf8_graphemes]{utf8_graphemes()}}, +\code{\link[=utf8_nchar]{utf8_nchar()}} } \concept{UTF-8 string manipulation} diff --git a/man/vt_output.Rd b/man/vt_output.Rd index 6bd4b2aab..911ac07a0 100644 --- a/man/vt_output.Rd +++ b/man/vt_output.Rd @@ -9,7 +9,7 @@ vt_output(output, width = 80L, height = 25L) \arguments{ \item{output}{Character vector or raw vector. Character vectors are collapsed (without a separator), and converted to a raw vector using -\code{\link[base:rawConversion]{base::charToRaw()}}.} +\code{\link[base:charToRaw]{base::charToRaw()}}.} \item{width}{Terminal width.} diff --git a/tests/testthat/_snaps/status-bar.md b/tests/testthat/_snaps/status-bar.md new file mode 100644 index 000000000..345e4bcea --- /dev/null +++ b/tests/testthat/_snaps/status-bar.md @@ -0,0 +1,84 @@ +# concurrent progress bars on ANSI terminal + + Code + msgs + Output + [1] "\rbar1: 1\033[K\r" + [2] "\rbar1: 1\033[K\n\rbar2: 1\033[K\r" + [3] "\033[1A\rbar1: 2\033[K\n\rbar2: 1\033[K\r" + [4] "\033[1A\r\033[K\n\r\033[K\033[1A" + [5] "\rbar2: 1\033[K\r" + [6] "\r\033[K" + +# bar completion while others remain (ANSI) + + Code + msgs + Output + [1] "\rfirst: 1\033[K\r" + [2] "\rfirst: 1\033[K\n\rsecond: 1\033[K\r" + [3] "\033[1A\r\033[K\n\r\033[K\033[1A" + [4] "\rsecond: 1\033[K\r" + [5] "\r\033[K" + +# interleaved cli output with multiple active bars (ANSI) + + Code + msgs + Output + [1] "\rdl: 1\033[K\r" + [2] "\rdl: 1\033[K\n\rproc: 1\033[K\r" + [3] "\033[1A\r\033[K\n\r\033[K\033[1A" + [4] "i checkpoint\n" + [5] "\rdl: 1\033[K\n\rproc: 1\033[K\r" + [6] "\033[1A\rdl: 2\033[K\n\rproc: 1\033[K\r" + [7] "\033[1A\r\033[K\n\r\033[K\033[1A" + [8] "\rproc: 1\033[K\r" + [9] "\r\033[K" + +# multi-bar keep/done on ANSI + + Code + msgs + Output + [1] "\ra: 1\033[K\r" "\ra: 1\033[K\n\rb: 1\033[K\r" + [3] "\033[1A\ra: 2\033[K\n\rb: 1\033[K\r" "\033[1A\r\033[K\n\r\033[K\033[1A" + [5] "a: 2\n" "\rb: 1\033[K\r" + [7] "\rb: 2\033[K\r" "\n" + +# is_progress_multiline() rejects invalid values + + Code + is_progress_multiline() + Condition + Error: + ! ! Invalid value for cli.progress_multiline option. + i It must be `TRUE` or `FALSE`, but it is a string. + +--- + + Code + is_progress_multiline() + Condition + Error: + ! ! Invalid value for cli.progress_multiline option. + i It must be `TRUE` or `FALSE`, but it is `NA`. + +--- + + Code + is_progress_multiline() + Condition + Error: + ! ! Invalid value for cli.progress_multiline option. + i It must be `TRUE` or `FALSE`, but it is a logical vector. + +--- + + Code + is_progress_multiline() + Condition + Error: + ! ! Invalid value for cli.progress_multiline option. + i It must be `TRUE` or `FALSE`, but it is a number. + diff --git a/tests/testthat/_snaps/tty.md b/tests/testthat/_snaps/tty.md new file mode 100644 index 000000000..aaa182973 --- /dev/null +++ b/tests/testthat/_snaps/tty.md @@ -0,0 +1,36 @@ +# is_ansi_tty() rejects invalid cli.ansi option values + + Code + is_ansi_tty() + Condition + Error: + ! ! Invalid value for option 'cli.ansi' + i Expected TRUE or FALSE, got a string. + +--- + + Code + is_ansi_tty() + Condition + Error: + ! ! Invalid value for option 'cli.ansi' + i Expected TRUE or FALSE, got `NA`. + +--- + + Code + is_ansi_tty() + Condition + Error: + ! ! Invalid value for option 'cli.ansi' + i Expected TRUE or FALSE, got a number. + +# is_ansi_tty() rejects invalid R_CLI_ANSI values + + Code + is_ansi_tty() + Condition + Error: + ! ! Invalid value for environment variable 'R_CLI_ANSI' + i Expected one of "true" or "false", got maybe. + diff --git a/tests/testthat/test-status-bar.R b/tests/testthat/test-status-bar.R index 0602bf588..a6636ecbe 100644 --- a/tests/testthat/test-status-bar.R +++ b/tests/testthat/test-status-bar.R @@ -380,3 +380,316 @@ test_that("auto-close with done or failure", { ) ) }) + +# ---- multi-line progress bars ---- + +test_that("concurrent progress bars on ANSI terminal", { + skip_if_not_installed("testthat", "3.1.2") + withr::local_options( + cli.dynamic = TRUE, + cli.ansi = TRUE, + cli.progress_show_after = 0 + ) + + fun <- function() { + id1 <- cli_progress_bar( + "bar1", + total = 3, + type = "custom", + format = "bar1: {pb_current}", + current = FALSE + ) + id2 <- cli_progress_bar( + "bar2", + total = 3, + type = "custom", + format = "bar2: {pb_current}", + current = FALSE + ) + cli_progress_update(id = id1, force = TRUE) + cli_progress_update(id = id2, force = TRUE) + cli_progress_update(id = id1, force = TRUE) + cli_progress_done(id = id1) + cli_progress_done(id = id2) + } + + msgs <- capture_cli_messages(fun()) + expect_snapshot(msgs) +}) + +test_that("bar completion while others remain (ANSI)", { + skip_if_not_installed("testthat", "3.1.2") + withr::local_options( + cli.dynamic = TRUE, + cli.ansi = TRUE, + cli.progress_show_after = 0, + cli.progress_clear = TRUE + ) + + fun <- function() { + id1 <- cli_progress_bar( + type = "custom", + format = "first: {pb_current}", + total = 2, + current = FALSE, + clear = TRUE + ) + id2 <- cli_progress_bar( + type = "custom", + format = "second: {pb_current}", + total = 2, + current = FALSE, + clear = TRUE + ) + cli_progress_update(id = id1, force = TRUE) + cli_progress_update(id = id2, force = TRUE) + cli_progress_done(id = id1) + cli_progress_update(id = id2, force = TRUE) + cli_progress_done(id = id2) + } + + msgs <- capture_cli_messages(fun()) + expect_snapshot(msgs) +}) + +test_that("interleaved cli output with multiple active bars (ANSI)", { + skip_if_not_installed("testthat", "3.1.2") + withr::local_options( + cli.dynamic = TRUE, + cli.ansi = TRUE, + cli.progress_show_after = 0 + ) + + fun <- function() { + id1 <- cli_progress_bar( + type = "custom", + format = "dl: {pb_current}", + total = 3, + current = FALSE + ) + id2 <- cli_progress_bar( + type = "custom", + format = "proc: {pb_current}", + total = 3, + current = FALSE + ) + cli_progress_update(id = id1, force = TRUE) + cli_progress_update(id = id2, force = TRUE) + cli_alert_info("checkpoint") + cli_progress_update(id = id1, force = TRUE) + cli_progress_done(id = id1) + cli_progress_done(id = id2) + } + + msgs <- capture_cli_messages(fun()) + expect_snapshot(msgs) +}) + +test_that("non-ANSI dynamic fallback shows single bar", { + withr::local_options( + cli.dynamic = TRUE, + cli.ansi = FALSE, + cli.progress_show_after = 0 + ) + + fun <- function() { + id1 <- cli_progress_bar( + type = "custom", + format = "bar1: {pb_current}", + total = 2, + current = FALSE + ) + id2 <- cli_progress_bar( + type = "custom", + format = "bar2: {pb_current}", + total = 2, + current = FALSE + ) + cli_progress_update(id = id1, force = TRUE) + cli_progress_update(id = id2, force = TRUE) + cli_progress_done(id = id1) + cli_progress_done(id = id2) + } + + out <- ansi_strip(capt0(fun())) + expect_match(out, "bar1: 1", fixed = TRUE) + expect_match(out, "bar2: 1", fixed = TRUE) +}) + +test_that("non-dynamic output preserves newline-per-update", { + withr::local_options( + cli.dynamic = FALSE, + cli.ansi = FALSE, + cli.progress_show_after = 0 + ) + + fun <- function() { + id1 <- cli_progress_bar( + type = "custom", + format = "bar1: {pb_current}", + total = 2, + current = FALSE + ) + cli_progress_update(id = id1, force = TRUE) + cli_progress_done(id = id1) + } + + out <- ansi_strip(capt0(fun())) + expect_match(out, "bar1: 1\n", fixed = TRUE) +}) + +test_that("cli_status multiple bars regression", { + withr::local_options(cli.ansi = FALSE, cli.dynamic = TRUE) + + f <- function() { + sb1 <- cli_status("status1") + cli_text("text1") + sb2 <- cli_status("status2") + cli_text("text2") + cli_status_clear(sb2) + cli_text("text3") + } + out <- ansi_strip(capt0(f())) + expect_equal( + out, + paste0( + "\rstatus1\r", + "\r \rtext1\nstatus1\r", + "\rstatus2\r", + "\r \rtext2\nstatus2\r", + "\r \rstatus1\r", + "\r \rtext3\nstatus1\r", + "\r \r" + ) + ) +}) + +test_that("cli_process_start/done regression", { + withr::local_options(cli.ansi = FALSE, cli.dynamic = TRUE) + + f <- function() { + cli_process_start("working") + cli_process_done() + } + out <- ansi_strip(capt0(f())) + expect_match(out, "working", fixed = TRUE) + expect_match(out, "done", fixed = TRUE) +}) + +test_that("auto-close with .keep regression", { + withr::local_options(cli.ansi = FALSE, cli.dynamic = TRUE) + + f <- function() { + cli_status("kept status", .keep = TRUE) + cli_status_clear() + } + out <- ansi_strip(capt0(f())) + expect_equal(out, "\rkept status\r\n") +}) + +test_that("clearing non-current bar preserves current id", { + withr::local_options(cli.ansi = FALSE, cli.dynamic = TRUE) + + f <- function() { + sb1 <- cli_status("first") + sb2 <- cli_status("second") + sb3 <- cli_status("third") + cli_status_clear(sb2, result = "done") + cli_status_update(msg = "third-updated") + } + out <- ansi_strip(capt0(f())) + expect_match(out, "third-updated", fixed = TRUE) + expect_match(out, "second ... done", fixed = TRUE) +}) + +test_that("multi-bar keep/done on ANSI", { + skip_if_not_installed("testthat", "3.1.2") + withr::local_options( + cli.dynamic = TRUE, + cli.ansi = TRUE, + cli.progress_show_after = 0 + ) + + fun <- function() { + id1 <- cli_progress_bar( + type = "custom", + format = "a: {pb_current}", + total = 2, + current = FALSE, + clear = FALSE + ) + id2 <- cli_progress_bar( + type = "custom", + format = "b: {pb_current}", + total = 2, + current = FALSE, + clear = FALSE + ) + cli_progress_update(id = id1, force = TRUE) + cli_progress_update(id = id2, force = TRUE) + cli_progress_update(id = id1, set = 2, force = TRUE) + cli_progress_update(id = id2, set = 2, force = TRUE) + } + + msgs <- capture_cli_messages(fun()) + expect_snapshot(msgs) +}) + +test_that("cli.progress_multiline = FALSE forces single-line ANSI render", { + skip_if_not_installed("testthat", "3.1.2") + withr::local_options( + cli.dynamic = TRUE, + cli.ansi = TRUE, + cli.progress_show_after = 0, + cli.progress_multiline = FALSE + ) + + fun <- function() { + id1 <- cli_progress_bar( + "bar1", total = 3, type = "custom", + format = "bar1: {pb_current}", current = FALSE + ) + id2 <- cli_progress_bar( + "bar2", total = 3, type = "custom", + format = "bar2: {pb_current}", current = FALSE + ) + cli_progress_update(id = id1, force = TRUE) + cli_progress_update(id = id2, force = TRUE) + cli_progress_update(id = id1, force = TRUE) + cli_progress_done(id = id1) + cli_progress_done(id = id2) + } + + msgs <- capture_cli_messages(fun()) + ## No cursor-up escapes — multiline render is disabled. + expect_false(any(grepl("\033\\[\\d+A", msgs))) + ## Newlines between bars only happen in multi-line mode. + expect_false(any(grepl("\033\\[K\n", msgs))) +}) + +test_that("is_progress_multiline() defaults to TRUE", { + withr::local_options(cli.progress_multiline = NULL) + expect_true(is_progress_multiline()) +}) + +test_that("is_progress_multiline() honours TRUE/FALSE", { + withr::local_options(cli.progress_multiline = TRUE) + expect_true(is_progress_multiline()) + + withr::local_options(cli.progress_multiline = FALSE) + expect_false(is_progress_multiline()) +}) + +test_that("is_progress_multiline() rejects invalid values", { + withr::local_options(cli.progress_multiline = "yes") + expect_snapshot(error = TRUE, is_progress_multiline()) + + withr::local_options(cli.progress_multiline = NA) + expect_snapshot(error = TRUE, is_progress_multiline()) + + withr::local_options(cli.progress_multiline = c(TRUE, FALSE)) + expect_snapshot(error = TRUE, is_progress_multiline()) + + withr::local_options(cli.progress_multiline = 1) + expect_snapshot(error = TRUE, is_progress_multiline()) +}) diff --git a/tests/testthat/test-tty.R b/tests/testthat/test-tty.R new file mode 100644 index 000000000..1c5715d39 --- /dev/null +++ b/tests/testthat/test-tty.R @@ -0,0 +1,54 @@ +test_that("is_ansi_tty() honours cli.ansi option", { + withr::with_options(list(cli.ansi = TRUE), { + expect_true(is_ansi_tty()) + }) + withr::with_options(list(cli.ansi = FALSE), { + expect_false(is_ansi_tty()) + }) +}) + +test_that("is_ansi_tty() rejects invalid cli.ansi option values", { + withr::with_options(list(cli.ansi = "yes"), { + expect_snapshot(error = TRUE, is_ansi_tty()) + }) + withr::with_options(list(cli.ansi = NA), { + expect_snapshot(error = TRUE, is_ansi_tty()) + }) + withr::with_options(list(cli.ansi = 1), { + expect_snapshot(error = TRUE, is_ansi_tty()) + }) +}) + +test_that("is_ansi_tty() honours R_CLI_ANSI env var", { + withr::local_options(cli.ansi = NULL) + + for (val in c("true", "TRUE", "True", "on", "yes", "y", "t", "1")) { + withr::with_envvar(c(R_CLI_ANSI = val), { + expect_true(is_ansi_tty(), info = val) + }) + } + + for (val in c("false", "FALSE", "False", "off", "no", "n", "f", "0")) { + withr::with_envvar(c(R_CLI_ANSI = val), { + expect_false(is_ansi_tty(), info = val) + }) + } +}) + +test_that("is_ansi_tty() rejects invalid R_CLI_ANSI values", { + withr::local_options(cli.ansi = NULL) + withr::local_envvar(R_CLI_ANSI = "maybe") + expect_snapshot(error = TRUE, is_ansi_tty()) +}) + +test_that("cli.ansi option takes precedence over R_CLI_ANSI", { + withr::local_envvar(R_CLI_ANSI = "false") + withr::with_options(list(cli.ansi = TRUE), { + expect_true(is_ansi_tty()) + }) + + withr::local_envvar(R_CLI_ANSI = "true") + withr::with_options(list(cli.ansi = FALSE), { + expect_false(is_ansi_tty()) + }) +}) diff --git a/tests/testthat/test-utf8.R b/tests/testthat/test-utf8.R index 06120415b..17d9cf27a 100644 --- a/tests/testthat/test-utf8.R +++ b/tests/testthat/test-utf8.R @@ -15,6 +15,7 @@ test_that("UTF-8 output on Windows", { options(cli.num_colors = 1) options(cli.width = 70) options(cli.dynamic = FALSE) + options(cli.ansi = FALSE) Sys.setenv(RSTUDIO = NA) s1 <- "\u30DE\u30EB\u30C1\u30D0\u30A4\u30C8\u306E\u30BF\u30A4\u30C8\u30EB" diff --git a/vignettes/cli-config-user.Rmd b/vignettes/cli-config-user.Rmd index ea8d31494..168a9d8f3 100644 --- a/vignettes/cli-config-user.Rmd +++ b/vignettes/cli-config-user.Rmd @@ -111,6 +111,13 @@ Set this environment variable to `light` or `dark` to indicate dark mode in Emacs. Once https://github.com/emacs-ess/ESS/pull/1178 is merged, ESS will set this automatically. +### `R_CLI_ANSI` + +Set to `true` (case insensitive) to assume a terminal that supports ANSI +control sequences. Set to `false` (case insensitive) to assume a non-ANSI +terminal. The `cli.ansi` option, if set, takes precedence. +See [is_ansi_tty()]. + ### `R_CLI_DYNAMIC` Set to `true`, `TRUE` or `True` to assume a dynamic terminal, that supports `\r`. @@ -126,9 +133,9 @@ See [num_ansi_colors()]. ### `cli.ansi` -Set to `true`, `TRUE` or `True` to assume a terminal that supports ANSI -control sequences. -Set to anything else to assume a non-ANSI terminal. +Set to `TRUE` to assume a terminal that supports ANSI control sequences. +Set to `FALSE` to assume a non-ANSI terminal. This option takes precedence +over the `R_CLI_ANSI` environment variable. See [is_ansi_tty()]. ### `cli.condition_unicode_bullets` @@ -261,6 +268,14 @@ Progress handlers to force, ignoring handlers set in `cli.progress_handlers` and `cli.progress_handlers_force`. See [cli_progress_builtin_handlers()]. +### `cli.progress_multiline` + +Whether to render multiple concurrent progress bars on separate lines on +ANSI-capable terminals. Defaults to `TRUE`. Set to `FALSE` to show only the +most recently updated bar on a single line. Has no effect on non-ANSI +terminals, which always show a single bar. +See [is_ansi_tty()] and [cli_progress_bar()]. + ### `cli.progress_say_args` Command line arguments for the `say` progress handlers.