It's basically the same issue than with knitr. I have printed the variable SYS (at line 82 of data.table.R) after a command such as DT[, a:=1] in IRKernel but I don't know enough to do a pull request.
[[1]] IRkernel::main() [[2]] kernel$run() [[3]] handle_shell() [[4]] executor$execute(msg) [[5]] with_top_env(userenv, { tryCatch(evaluate(request$content$code, envir = userenv, output_handler = oh, stop_on_error = 0), interrupt = function(cond) { interrupted <<- TRUE }, error = handle_error) }) [[6]] tryCatch(evaluate(request$content$code, envir = userenv, output_handler = oh, stop_on_error = 0), interrupt = function(cond) { interrupted <<- TRUE }, error = handle_error) [[7]] tryCatchList(expr, classes, parentenv, handlers) [[8]] tryCatchOne(tryCatchList(expr, names[-nh], parentenv, handlers[-nh]), names[nh], parentenv, handlers[[nh]]) [[9]] doTryCatch(return(expr), name, parentenv, handler) [[10]] tryCatchList(expr, names[-nh], parentenv, handlers[-nh]) [[11]] tryCatchOne(expr, names, parentenv, handlers[[1L]]) [[12]] doTryCatch(return(expr), name, parentenv, handler) [[13]] evaluate(request$content$code, envir = userenv, output_handler = oh, stop_on_error = 0) [[14]] evaluate_call(expr, parsed$src[[i]], envir = envir, enclos = enclos, debug = debug, last = i == length(out), use_try = stop_on_error != 2L, keep_warning = keep_warning, keep_message = keep_message, output_handler = output_handler) [[15]] handle(pv <- withCallingHandlers(withVisible(value_fun(ev$value, ev$visible)), warning = wHandler, error = eHandler, message = mHandler)) [[16]] try(f, silent = TRUE) [[17]] tryCatch(expr, error = function(e) { call <- conditionCall(e) if (!is.null(call)) { if (identical(call[[1L]], quote(doTryCatch))) call <- sys.call(-4L) dcall <- deparse(call)[1L] prefix <- paste("Error in", dcall, ": ") LONG <- 75L msg <- conditionMessage(e) sm <- strsplit(msg, "\n")[[1L]] w <- 14L + nchar(dcall, type = "w") + nchar(sm[1L], type = "w") if (is.na(w)) w <- 14L + nchar(dcall, type = "b") + nchar(sm[1L], type = "b") if (w > LONG) prefix <- paste0(prefix, "\n ") } else prefix <- "Error : " msg <- paste0(prefix, conditionMessage(e), "\n") .Internal(seterrmessage(msg[1L])) if (!silent && identical(getOption("show.error.messages"), TRUE)) { cat(msg, file = stderr()) .Internal(printDeferredWarnings()) } invisible(structure(msg, class = "try-error", condition = e)) }) [[18]] tryCatchList(expr, classes, parentenv, handlers) [[19]] tryCatchOne(expr, names, parentenv, handlers[[1L]]) [[20]] doTryCatch(return(expr), name, parentenv, handler) [[21]] withCallingHandlers(withVisible(value_fun(ev$value, ev$visible)), warning = wHandler, error = eHandler, message = mHandler) [[22]] withVisible(value_fun(ev$value, ev$visible)) [[23]] value_fun(ev$value, ev$visible) [[24]] value_handler(x) [[25]] paste(capture.output(print(obj)), collapse = "\n") [[26]] capture.output(print(obj)) [[27]] evalVis(expr) [[28]] withVisible(eval(expr, pf)) [[29]] eval(expr, pf) [[30]] eval(expr, envir, enclos) [[31]] print(obj) [[32]] print.data.table(obj)