之前在 翻书 的时候,看到新的打印控制台信息的函数
xfun::session_info() 之前没太在意有没有输出 Pandoc 软件信息,今天自己运行该函数的时候就没有输出
function (packages = NULL, dependencies = TRUE)
{
res = sessionInfo()
res$matprod = res$BLAS = res$LAPACK = NULL
if (loadable("rstudioapi") && rstudioapi::isAvailable()) {
res$running = paste0(res$running, ", RStudio ", rstudioapi::getVersion())
}
tweak_info = function(obj, extra = NULL) {
res = capture.output(print(obj))
i = grep("^(attached base packages|Matrix products):\\s*$",
res, ignore.case = TRUE)
if (length(i))
res = res[-c(i, i + 1)]
res = gsubi("^\\s*locale:\\s*$", "Locale:", res)
res = gsub("^\\s*\\[[0-9]+]\\s*", " ", res)
res = gsubi("^\\s*other attached packages:\\s*$", "Package version:",
res)
if (length(i <- which(res == "Locale:")) == 1 && res[i +
2] == "") {
res[i] = paste(res[i], gsub("\\s*/\\s*", " / ", gsub("^\\s+",
"", res[i + 1])))
res = res[-(i + 1)]
}
raw_string(c(res, extra))
}
version_info = function(pkgs) {
res = lapply(pkgs, function(p) {
list(Version = as.character(packageVersion(p)), Package = p)
})
as.list(setNames(res, pkgs))
}
res$basePkgs = raw_string(list())
info = c(res$otherPkgs, res$loadedOnly)
if (length(packages) > 0) {
info = info[intersect(names(info), packages)]
info = c(info, version_info(setdiff(packages, names(info))))
}
res$loadedOnly = NULL
if (dependencies) {
deps = pkg_dep(names(info), installed.packages(), recursive = TRUE)
deps = sort(setdiff(deps, names(info)))
info = c(info, version_info(deps))
}
if (length(packages) > 0 || dependencies)
info = info[sort(names(info))]
res$otherPkgs = info
extra = unlist(lapply(packages, function(p) tryCatch(c("",
getFromNamespace("xfun_session_info", p)()), error = function(e) NULL)))
tweak_info(res, extra)
}
<bytecode: 0x0000000008c9c6d0>
<environment: namespace:xfun>
一行行确认过没有看到和 Pandoc 相关的东西,谢大一定在后面用了黑魔法 ?