% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/paintr-registry.R
\name{ptr_signal_partial}
\alias{ptr_signal_partial}
\title{Signal a transient "partial input" failure from a placeholder hook}
\usage{
ptr_signal_partial(message, ...)
}
\arguments{
\item{message}{Diagnostic text. Surfaced on the gated plot path.}

\item{...}{Additional named fields attached to the condition (forwarded
to \code{\link[rlang:abort]{rlang::abort()}}).}
}
\value{
Never returns -- always signals.
}
\description{
Placeholder \code{resolve_expr} (and \code{validate_input}) hooks should call
\code{ptr_signal_partial()} -- instead of \code{\link[rlang:abort]{rlang::abort()}} / \code{stop()} -- when the
current widget value is incomplete or transiently unparseable. Typical
example: a free-text \code{expr} placeholder whose body has not finished being
typed (\verb{mpg /}). The condition carries class \code{"ptr_partial_input"}.
}
\details{
ggpaintr's \emph{live} reactive boundaries (column-picker \code{entry_reactive}s that
re-fire on every keystroke) catch this class and silently cancel the
current re-render, so the downstream picker keeps its previous state
instead of strobing blank and writing a Shiny warning to the R console.
The \emph{Update / Draw}-gated plot path does not catch it, so a value that is
still partial when the user clicks "Update" still surfaces as a normal
inline error.

Use ordinary \code{\link[rlang:abort]{rlang::abort()}} for failures that are NOT user mid-typing
artifacts (security violations, real argument-shape errors, etc.).
}
\examples{
# A resolve hook that treats an unfinished expression as a transient,
# silently-cancelled partial input rather than a hard error:
my_expr_resolve <- function(value, node, ...) {
  tryCatch(
    rlang::parse_expr(value),
    error = function(e) ptr_signal_partial(conditionMessage(e))
  )
}
}
