Bug 574748: [RJ-Server] Add support for 'pager' in R
- Add R functions for tool command 'r/showContents'
Change-Id: Iea192cf61bafc59c8943c9f75c4c7778ad242798
diff --git a/core/org.eclipse.statet.rj.server.rpkg/src/rpkg/NAMESPACE b/core/org.eclipse.statet.rj.server.rpkg/src/rpkg/NAMESPACE
index 5b18e59..6bb8d99 100644
--- a/core/org.eclipse.statet.rj.server.rpkg/src/rpkg/NAMESPACE
+++ b/core/org.eclipse.statet.rj.server.rpkg/src/rpkg/NAMESPACE
@@ -17,7 +17,8 @@
export(.client.execCommand)
export(.console.loadHistory, .console.saveHistory, .console.addtoHistory)
export(rj.GD, .rj.initGD)
+export(rj.pager)
export(statet.help, statet.help.start, .statet.initDebug, .statet.initHelp)
export(statet.showHistory)
-export(openInEditor, openPackageManager, chooseFile)
+export(openInEditor, openPackageManager, chooseFile, showTextFiles)
export(dbg.updateTracepoints)
diff --git a/core/org.eclipse.statet.rj.server.rpkg/src/rpkg/R/ide.R b/core/org.eclipse.statet.rj.server.rpkg/src/rpkg/R/ide.R
index 3e5b239..09f7254 100644
--- a/core/org.eclipse.statet.rj.server.rpkg/src/rpkg/R/ide.R
+++ b/core/org.eclipse.statet.rj.server.rpkg/src/rpkg/R/ide.R
@@ -82,13 +82,68 @@
stop("Illegal argument: new");
}
answer <- .client.execCommand("common/chooseFile", list(
- newResource= new ), wait= TRUE)
+ newResource= new ),
+ wait= TRUE );
if (is.null(answer)) { # operation cancelled
return (invisible());
}
return (answer$filename);
}
+#' Shows the content of the specified text files in the StatET/RJ client.
+#'
+#' @param ... the path of the files to show
+#' @param fileEncoding the encoding of the files
+#' @param title an overall title to display
+#' @param headers headers to display for each file to show
+#' @param deleteFiles \code{TRUE} if files should be deleted
+#' @param pager (currently not used)
+#' @export
+showTextFiles <- function(..., fileEncoding= utils::localeToCharset()[1],
+ title= "R Information", headers= character(n),
+ deleteFiles= FALSE,
+ pager= NA_character_) {
+ filePaths <- path.expand(c(...));
+ n <- length(filePaths);
+
+ if (!is.character(fileEncoding) || length(fileEncoding) != 1) {
+ stop("Illegal argument: fileEncoding");
+ }
+ if (!is.character(title) || length(title) != 1) {
+ stop("Illegal argument: title");
+ }
+ if (!is.character(headers) || length(headers) != n) {
+ stop("Illegal argument: headers");
+ }
+ if (!is.logical(deleteFiles) || length(deleteFiles) != 1) {
+ stop("Illegal argument: deleteFiles");
+ }
+ if (!is.character(pager) || length(pager) != 1) {
+ stop("Illegal argument: pager");
+ }
+
+ .Call("Re_ExecJCommand", "re:showContents", list(
+ filePaths= filePaths, fileEncoding= fileEncoding,
+ title= title, headers= headers,
+ deleteFiles= deleteFiles,
+ pager= pager ),
+ 0L,
+ PACKAGE= "(embedding)" );
+ return (invisible());
+}
+
+#' Shows the content of the specified text files in the StatET/RJ client.
+#'
+#' This is an R implementation of a pager for \link[base]{file.show} /
+#' \code{\link[base]{options}(pager)} for StatET/RJ clients.
+#'
+#' @export
+rj.pager <- function(files, header, title, delete.file, ...) {
+ showTextFiles(files,
+ title= title, headers= header,
+ deleteFiles= delete.file );
+}
+
#' Shows the Cmd History view in StatET
#'