diff --git a/R/help/getAliases.R b/R/help/getAliases.R index fc778faa1..153137d9a 100644 --- a/R/help/getAliases.R +++ b/R/help/getAliases.R @@ -22,10 +22,19 @@ ret <- lapply(rownames(ip), function(row) { aliases = NULL ) if (file.exists(filename)) { - info[["aliases"]] <- as.list(readRDS(filename)) + res <- tryCatch( + expr = as.list(readRDS(filename)), + error = conditionMessage + ) + if (is.list(res)) { + info$aliases <- res + } else { + info$error <- res + } } info }) + names(ret) <- rownames(ip) lim <- Sys.getenv("VSCR_LIM") diff --git a/src/helpViewer/helpProvider.ts b/src/helpViewer/helpProvider.ts index 7b023e6c4..2ff391a7b 100644 --- a/src/helpViewer/helpProvider.ts +++ b/src/helpViewer/helpProvider.ts @@ -161,7 +161,8 @@ interface PackageAliases { aliasFile?: string; aliases?: { [key: string]: string; - } + }, + error?: string } interface AllPackageAliases { [key: string]: PackageAliases @@ -221,9 +222,16 @@ export class AliasProvider { // flatten aliases into one list: const allAliases: rHelp.Alias[] = []; - for(const pkg in allPackageAliases){ - const pkgName = allPackageAliases[pkg].package || pkg; - const pkgAliases = allPackageAliases[pkg].aliases || {}; + for (const pkg in allPackageAliases) { + const item = allPackageAliases[pkg]; + const pkgName = item.package || pkg; + + if (item.error) { + void window.showErrorMessage(`An error occurred while reading the aliases file for package ${pkgName}: ${item.error}. The package files may be corrupted. Try reinstalling the package.`); + continue; + } + + const pkgAliases = item.aliases || {}; for(const fncName in pkgAliases){ allAliases.push({ name: pkgAliases[fncName],