PKσf;W ttSciViews-K/package.kpf http://r-forge.r-project.org/ http://cran.r-project.org/doc/Rnews/ http://www.r-project.org/ http://wiki.r-project.org http://www.rforge.net/ http://www.bioconductor.org/ http://addictedtor.free.fr/graphiques/ http://cran.r-project.org # !@#_anchor[[%tabstop:title]]!@#_currentPos # Copyright (c) [[%date:%Y]], [[%ask:Author:somebody (somebody@email.org)]] # FIXME: !@#_currentPos!@#_anchor Copyright (c) [[%date:%Y]], [[%ask:Author:somebody (somebody@email.org)]]!@#_currentPos!@#_anchor # DEBUGME: !@#_currentPos!@#_anchor # XXX [[%date:%Y-%m-%d %H:%M:%S]]: !@#_anchor[[%tabstop:title]]!@#_currentPos # [[%tabstop:note]] Distributed under a GNU GPL3 license or above!@#_currentPos!@#_anchor # TODO: !@#_currentPos!@#_anchor Distributed under a GNU GPL2 license or above!@#_currentPos!@#_anchor // Set Komodo 4 style for sidepanels document.getElementById('leftTabBox').setAttribute('class', 'whiteout'); // was set to sidepanel document.getElementById('project_toolbox_tabs').setAttribute('type', 'scrollable'); // was set to sidebar document.getElementById('rightTabBox').setAttribute('class', 'whiteout'); document.getElementById('right_toolbox_tabs').setAttribute('type', 'scrollable'); // Set Komodo 5 style for sidepanels document.getElementById('leftTabBox').setAttribute('class', 'sidepanel'); document.getElementById('project_toolbox_tabs').setAttribute('type', 'sidebar'); document.getElementById('rightTabBox').setAttribute('class', 'sidepanel'); document.getElementById('right_toolbox_tabs').setAttribute('type', 'sidebar'); // SciViews-K functions // Function found on the ActiveState Komodo forum to set bookmarck by clicking left margin //////////////////////////////////////////////////////////////////////////////// // Allow defining bookmarks by clicking on a buffer margin // This macro must be triggered after file open //////////////////////////////////////////////////////////////////////////////// sv_marginClickWithBookMark = function (modifiers, position, margin) { sv.log.info("Bookmark click"); var v = ko.views.manager.currentView; var ke = v.scimoz; var lineClicked = ke.lineFromPosition(position); if (margin == 2) { //From editor.js. This is implementation of do_cmd_bookmarkToggle with //different arguments var markerState = ke.markerGet(lineClicked); if (markerState & (1 << ko.markers.MARKNUM_BOOKMARK)) { ke.markerDelete(lineClicked, ko.markers.MARKNUM_BOOKMARK); } else { ke.markerAdd(lineClicked, ko.markers.MARKNUM_BOOKMARK); //ke.markerAdd(lineClicked, ko.markers.MARKNUM_STDIN_PROMPT); } } else if (margin == 1) { // From views-buffer.xml, method onMarginClick (original comments removed) if (ke.getFoldLevel(lineClicked) & ke.SC_FOLDLEVELHEADERFLAG) { if (ke.getFoldExpanded(lineClicked)) { var level = ke.getFoldLevel(lineClicked); var lineMaxSubord = ke.getLastChild(lineClicked, level); var currentLine = ke.lineFromPosition(ke.currentPos); if (currentLine > lineClicked && currentLine <= lineMaxSubord) { var pos = ke.positionFromLine(lineClicked); ke.selectionStart = pos; ke.selectionEnd = pos; ke.currentPos = pos; } } ke.toggleFold(lineClicked); } } } komodo.view.onMarginClick = sv_marginClickWithBookMark; var scimoz = ko.views.manager.currentView.scimoz; // Redefine markers scimoz.markerDefine(ko.markers.MARKNUM_BOOKMARK, scimoz.SC_MARK_SHORTARROW); scimoz.markerSetFore(ko.markers.MARKNUM_BOOKMARK, xtk.color.RGB(0x00, 0x00, 0x00)); // black scimoz.markerSetBack(ko.markers.MARKNUM_BOOKMARK, xtk.color.RGB(0xFF, 0x80, 0x80)); // light red scimoz.markerSetAlpha(ko.markers.MARKNUM_BOOKMARK, 0x66); scimoz.markerDefine(ko.markers.MARKNUM_TRANSIENTMARK, scimoz.SC_MARK_ARROW); scimoz.markerSetFore(ko.markers.MARKNUM_TRANSIENTMARK, xtk.color.RGB(0x00, 0x00, 0x00)); // black scimoz.markerSetBack(ko.markers.MARKNUM_TRANSIENTMARK, xtk.color.RGB(0xFF, 0xFF, 0x66)); // yellow scimoz.markerDefine(ko.markers.MARKNUM_STDIN_PROMPT, scimoz.SC_MARK_CHARACTER+'>'.charCodeAt(0)); sv.r.runEnter(); sv.helpContext(); some snippet[[%pref:URL-help:http://www.sciviews.org]]!@#_currentPos!@#_anchor import logging from xpcom import components R = components.classes["@sciviews.org/svRinterpreter;1"].\ getService(components.interfaces.svIRinterpreter) R.calltip("require(") // Show Komodo log sv.log.show(); // Tests... print debug and infos! sv.log.all(true); // Default encoding sv.tools.file.defaultEncoding = "latin1"; var defEnc = sv.tools.file.defaultEncoding; sv.log.info(defEnc); // Get a temporary filename var tempfile = sv.tools.file.temp("test.R"); sv.log.info(tempfile); sv.log.info(sv.tools.file.exists(tempfile)); // Write some data to the file, then read it back sv.tools.file.write(tempfile, "Ceci est un exemple de données"); // Read these data sv.log.info(sv.tools.file.read(tempfile)); // Add some more content to the file sv.tools.file.write(tempfile, "\nAvec ça en plus...", "latin1", true); sv.log.info(sv.tools.file.read(tempfile)); // Change default encoding to utf-8 sv.tools.file.defaultEncoding = "utf-8"; sv.log.info(sv.tools.file.defaultEncoding); // Read again sv.log.info(sv.tools.file.read(tempfile)); // Now, write with utf-8 encoding and read back sv.tools.file.write(tempfile, "Ceci est un exemple de données"); // Read these data sv.log.info(sv.tools.file.read(tempfile)); // Reset default encoding sv.tools.file.defaultEncoding = defEnc; // Remove the temporary file sv.tools.file.getfile(tempfile).remove(false); // Check again for its existance sv.log.info(sv.tools.file.exists(tempfile)); delete tempfile; // Look for various directories and check their existence var myfile = sv.tools.file.path("ProfD"); sv.log.info(sv.tools.file.exists(myfile) + " (ProfD): " + myfile); myfile = sv.tools.file.path("TmpD"); sv.log.info(sv.tools.file.exists(myfile) + " (TmpD): " + myfile); myfile = sv.tools.file.path("Home"); sv.log.info(sv.tools.file.exists(myfile) + " (Home): " + myfile); myfile = sv.tools.file.path("Pers"); sv.log.info(sv.tools.file.exists(myfile) + " (Pers): " + myfile); myfile = sv.tools.file.path("Desk"); sv.log.info(sv.tools.file.exists(myfile) + " (Desk): " + myfile); myfile = sv.tools.file.path("Progs"); sv.log.info(sv.tools.file.exists(myfile) + " (Progs): " + myfile); myfile = sv.tools.file.path("CurProcD"); sv.log.info(sv.tools.file.exists(myfile) + " (CurProcD): " + myfile); myfile = sv.tools.file.path("~"); sv.log.info(sv.tools.file.exists(myfile) + " (~): " + myfile); myfile = sv.tools.file.path("~", "Desktop"); sv.log.info(sv.tools.file.exists(myfile) + " (~/Desktop): " + myfile); myfile = sv.tools.file.path("~", "NonExists", "myfile.txt"); sv.log.info(sv.tools.file.exists(myfile) + " (~/NonExists/myfile.txt): " + myfile); // TODO: test sv.tools.file.read some snippet!@#_currentPos!@#_anchor[[%pref:R-help:library]] import logging log = logging.getLogger("SciViews-K") log.warn("Test warning from Python") some snippet!@#_currentPos!@#_anchor[[%pref:RWiki-help:tips:data-manip:add_variables]] var R = Components .classes["@sciviews.org/svRinterpreter;1"] .getService(Components.interfaces.svIRinterpreter); R.complete("fu"); sv.cmdout.clear(); sv.cmdout.append("my text"); sv.cmdout.append("1 2 3"); sv.cmdout.append(""); // append a blank line sv.cmdout.append("one last line"); sv.cmdout.append("aaa\nbbb", newline = false); // Show Komodo log sv.log.show(); // Tests... default level do not print debug and infos! sv.log.all(false); alert("Logging of info/debug messages set to " + sv.log.isAll()); try { test = nonexistingvar; } catch(e) {sv.log.exception(e, "Test it exception"); } sv.log.critical("Test it critical"); sv.log.error("Test it error"); sv.log.warn("Test it warning"); sv.log.info("Test it info"); sv.log.debug("Test it debug"); sv.log.warnStack("Test it warn with stack"); // Set at debug/info level sv.log.all(true); alert("Logging of info/debug messages set to " + sv.log.isAll()); sv.log.critical("Test it critical 2"); sv.log.error("Test it error 2"); sv.log.warn("Test it warning 2"); sv.log.info("Test it info 2"); sv.log.debug("Test it debug 2"); sv.log.warnStack("Test it warn with stack 2"); sv.r.saveGraph("png256"); sv.r.saveGraph("jpeg"); sv.r.saveGraph("png16m"); sv.r.eval("dev.new()"); sv.r.saveGraph("pdfwrite"); sv.r.eval("dev.off()"); sv.r.saveGraph("pnggray"); sv.r.eval("graphics.off()"); sv.r.eval("dev.set(dev.next())"); sv.misc.timeStamp(); sv.misc.showConfig(); sv.misc.closeAllOthers(); sv.misc.unixPathToClipboard(); sv.misc.moveLineDown(); sv.misc.pathToClipboard(); sv.log.show(); sv.misc.moveLineUp(); sv.log.all(true); sv.misc.swapQuotes(); sv.misc.colorPicker(); sv.misc.searchBySel(); http://lib.stat.cmu.edu/ http://www.stat.ufl.edu/vlib/statistics.html http://www.jstatsoft.org/ http://davidmlane.com/hyperstat/index.html http://dir.yahoo.com/Science/mathematics/statistics/ http://www.statsoftinc.com/textbook/stathome.html !@#_currentPos[[%tabstop:res]]!@#_anchor <- switch([[%tabstop:variable]], [[%tabstop:val1]] = [[%tabstop:code1]], [[%tabstop:val2]] = [[%tabstop:code2]], [[%tabstop:codeelse]] ) for (!@#_anchor[[%tabstop:i]]!@#_currentPos in 1:[[%tabstop:max]]) !@#_currentPos[[%tabstop:name]]!@#_anchor <- function([[%tabstop:args]]) if (inherits(!@#_anchor[[%tabstop:object]]!@#_currentPos, [[%tabstop:class]])) { [[%tabstop:code]] } while (!@#_anchor[[%tabstop:condition]]!@#_currentPos) { [[%tabstop:code]] } if (isTRUE(!@#_anchor[[%tabstop:object]]!@#_currentPos)) { [[%tabstop:code]] } repeat {!@#_currentPos!@#_anchor [[%tabstop:i]] = [[%tabstop:i]] + 1 [[%tabstop:code]] if ([[%tabstop:i]] == [[%tabstop:imax]]) break } !@#_currentPos!@#_anchor[[%tabstop:i]] <- 0 while ([[%tabstop:i]] < [[%tabstop:imax]]) { [[%tabstop:i]] = [[%tabstop:i]] + 1 [[%tabstop:code]] } !@#_currentPos!@#_anchor[[%tabstop:res]] <- try({ [[%tabstop:code]] }, silent = TRUE) if (inherits([[%tabstop:res]], "try-error")) { [[%tabstop:codeiferror]] } if (!@#_anchor[[%tabstop:condition]]!@#_currentPos) { [[%tabstop:codeiftrue]] } else { [[%tabstop:codeiffalse]] } if (identical(!@#_anchor[[%tabstop:object1]]!@#_currentPos, [[%tabstop:object2]])) { [[%tabstop:code]] } for (!@#_anchor[[%tabstop:i]]!@#_currentPos in 1:[[%tabstop:max]]) { [[%tabstop:code]] } if (!@#_anchor[[%tabstop:condition]]!@#_currentPos) { [[%tabstop:code]] } !@#_currentPos[[%tabstop:name]]!@#_anchor <- function([[%tabstop:args]]) { [[%tabstop:code]] } !@#_currentPos[[%tabstop:name]]!@#_anchor <- function([[%tabstop:args]]) { # Check arguments: use warning() or stop() [[%tabstop:check]] # Make sure to restore system on exit opar <- par(no.readonly = TRUE) on.exit(par(opar)) # Function code [[%tabstop:code]] # Return result return([[%tabstop:result]]) } if (!@#_anchor[[%tabstop:condition]]!@#_currentPos) { [[%tabstop:code]] } as.character(!@#_currentPos!@#_anchor) summary(!@#_currentPos!@#_anchor) warning("!@#_currentPos!@#_anchor") rep(!@#_anchor[[%tabstop:x]]!@#_currentPos, [[%tabstop:times]]) sd(!@#_currentPos!@#_anchor, na.rm = TRUE) read.table(!@#_currentPos[[%tabstop:file]]!@#_anchor, header = TRUE, sep = "\t", dec = ".") setwd(!@#_currentPos!@#_anchor) attr(!@#_anchor[[%tabstop:x]]!@#_currentPos, [[%tabstop:which]]) warnings()!@#_currentPos!@#_anchor setwd(!@#_currentPos!@#_anchor) print(!@#_currentPos!@#_anchor) search()!@#_currentPos!@#_anchor as.factor(!@#_currentPos!@#_anchor) var(!@#_currentPos!@#_anchor, na.rm = TRUE) paste(!@#_currentPos!@#_anchor, sep = "", collapse = "\n") mean(!@#_currentPos!@#_anchor, na.rm = TRUE) getwd()!@#_currentPos!@#_anchor stop("!@#_currentPos!@#_anchor") getOption("!@#_currentPos!@#_anchor") options(!@#_anchor[[%tabstop:name]]!@#_currentPos = [[%tabstop:value]]) plot(!@#_currentPos!@#_anchor) as.data.frame(!@#_currentPos!@#_anchor) paste(!@#_currentPos!@#_anchor, sep = "") matrix(!@#_anchor[[%tabstop:data]]!@#_currentPos, ncol = [[%tabstop:ncol]], nrow = [[%tabstop:nrow]], byrow = [[%tabstop:FALSE]]) factor(!@#_anchor[[%tabstop:x]]!@#_currentPos, levels = [[%tabstop:levels]], ordered = FALSE) attr(!@#_anchor[[%tabstop:x]]!@#_currentPos, [[%tabstop:which]]) <- [[%tabstop:value]] data.frame(!@#_currentPos!@#_anchor) as.numeric(!@#_currentPos!@#_anchor) require(!@#_currentPos!@#_anchor[[%tabstop:package]]) || stop("Package [[%tabstop:package]] is required") as.list(!@#_currentPos!@#_anchor) cat("!@#_currentPos!@#_anchor", "\n", sep = "") par(!@#_anchor[[%tabstop:option]]!@#_currentPos = [[%tabstop:value]]) median(!@#_currentPos!@#_anchor, na.rm = TRUE) write.table(!@#_anchor[[%tabstop:x]]!@#_currentPos, file = [[%tabstop:file]], sep = "\t", dec = ".", col.names = FALSE) show(!@#_currentPos!@#_anchor) http://stats.math.uni-augsburg.de/JGR/ http://www.sciviews.org http://www.sciviews.org/Tinn-R http://www.sciviews.org/_rgui/ http://socserv.socsci.mcmaster.ca/jfox/Misc/Rcmdr/index.html sv.r.obj(); sv.r.switchSession(true); sv.r.eval("rm(list = ls())"); sv.r.obj("lm"); sv.r.eval("ls()"); sv.r.display("", "structure"); sv.r.data(); sv.r.help("", false); sv.r.search(); sv.r.send("function"); sv.r.send("para"); sv.r.send("block"); sv.r.run(); sv.r.escape(); sv.r.pkg.install(); sv.r.pkg.remove(); sv.r.pkg.update(); sv.r.pkg.old(); sv.r.pkg.load(); sv.r.pkg.new(); sv.r.pkg.install("", "local"); sv.r.pkg.chooseCRANMirror(); sv.r.pkg.unload(); sv.r.pkg.repositories(); sv.r.pkg.loaded(); sv.socket.serverStop(); alert("SciViews socket server:\n" + sv.socket.serverConfig()); sv.socket.debug = !sv.socket.debug; // Turn SciViews-K socket server debugging on and off if (sv.socket.debug) { ko.statusBar.AddMessage("SciViews socket debugging is ON", "svSocket", 2000, true); } else { ko.statusBar.AddMessage("SciViews socket debugging is OFF", "svSocket", 2000, true); } // Change the following value ("8888" is the default port) var newSocket = "8988"; sv.prefs.setString("sciviews.client.socket", newSocket, true); alert("R socket server permanently set to port " + newSocket); var port = sv.prefs.getString("sciviews.client.socket", "8888"); alert("R socket server configured on port " + port); var newSocket = "8888"; sv.prefs.setString("sciviews.client.socket", newSocket, true); alert("R socket server permanently set to port " + newSocket); // Trigger this on startup for automatically starting the socket server when Komodo is opened sv.socket.serverStart(); sv.r.saveGraph("png256"); sv.r.eval("dev.new()"); sv.r.saveGraph("jpeg"); sv.r.saveGraph("png16m"); sv.r.eval("graphics.off()"); sv.r.saveGraph("pdfwrite"); sv.r.eval("dev.off()"); sv.r.eval("dev.set(dev.next())"); try { var num = Math.ceil(Math.random() * 143) // TODO: get max number from R Graph Gallery gViewMgr.loadViewFromURI('http://addictedtor.free.fr/graphiques/graphiques/graph_' + num + '.png', 'browser'); // The following does not work (no stylesheet?!) // gViewMgr.loadViewFromURI('http://addictedtor.free.fr/graphiques/RGraphGallery.php?graph=' + // num, 'browser'); } catch(e) { alert(e); } sv.r.saveGraph("pnggray"); sv.r.eval('unlink(path.expand(file.path(getOption("R.initdir"), c(".RData", ".Rhistory"))))'); sv.r.eval("rm(list = ls())"); sv.r.eval("ls(all = TRUE)"); sv.r.loadWorkspace(); sv.r.eval("rm(list = ls(all = TRUE))"); sv.r.dataList(); sv.r.eval("ls()"); sv.r.data(); sv.r.saveWorkspace(); http://www.kuleuven.ac.be/ucs/java/ http://onlinestatbook.com/rvls.html http://www.math.uah.edu/stat/ sv.helpURL("http://finzi.psych.upenn.edu/cgi-bin/namazu.cgi?query=<keyword>&max=20&result=normal&sort=score&idxname=functions&idxname=docs&idxname=Rhelp02a"); http://www.stat.ucl.ac.be/ISdidactique/Rhelp/ http://finzi.psych.upenn.edu/ sv.helpURL("http://www.google.com/search?q=<keyword>&domains=r-project.org&sitesearch=r-project.org&btnG=Google+Search"); http://www.mail-archive.com/r-help@stat.math.ethz.ch/info.html http://finzi.psych.upenn.edu/search.html sv.helpURL("http://www.google.com/u/newcastlemaths?q=<keyword>&sa=Google+Search"); http://tolstoy.newcastle.edu.au/R/ http://www.biostat.wustl.edu/archives/html/s-news/ sv.helpURL("http://www.biostat.wustl.edu/archives/cgi-bin/namazu.cgi?query=<keyword>&submit=Search&idxname=s-news"); sv.command.openHelp(); sv.r.help("", false); sv.r.search("", false); sv.r.example(); sv.r.eval('demo()'); sv.r.siteSearch(); sv.r.browseVignettes(); sv.r.quit(); sv.r.source("sel"); sv.r.send("sel"); sv.r.setwd("session"); sv.r.source("all"); sv.r.send("line"); sv.r.setwd("file"); sv.r.source("function"); sv.r.setwd("previous"); sv.r.source("block"); sv.r.send("all"); sv.r.loadHistory(); sv.r.source("para"); sv.r.send("end"); sv.r.saveHistory(); sv.r.setwd("current", true); read.delim2(!@#_currentPos!@#_anchor) set.seed(!@#_anchor[[%tabstop:seed]]!@#_currentPos) rnorm([[%tabstop:n]], mean = 0, sd = 1) read.csv2(!@#_currentPos!@#_anchor) all.equal(!@#_anchor[[%tabstop:target]]!@#_currentPos, [[%tabstop:current]]) inherits(!@#_anchor[[%tabstop:x]]!@#_currentPos, [[%tabstop:class]]) rep(!@#_anchor[[%tabstop:x]]!@#_currentPos, length.out = [[%tabstop:integer]]) by(!@#_anchor[[%tabstop:data]]!@#_currentPos, [[%tabstop:indices]], [[%tabstop:fun]], [[%tabstop:args]]) read.csv(!@#_currentPos!@#_anchor) with(!@#_anchor[[%tabstop:data]]!@#_currentPos, [[%tabstop:expr]], [[%tabstop:args]]) set.seed(!@#_anchor[[%tabstop:seed]]!@#_currentPos) runif([[%tabstop:n]], min = 0, max = 1) lapply(!@#_anchor[[%tabstop:x]]!@#_currentPos, [[%tabstop:fun]], [[%tabstop:args]]) sample(!@#_anchor[[%tabstop:x]]!@#_currentPos, [[%tabstop:size]], replace = FALSE) range(!@#_currentPos!@#_anchor, na.rm = TRUE) array(!@#_anchor[[%tabstop:data]]!@#_currentPos, dim = [[%tabstop:dim]], dimnames = NULL) apply(!@#_anchor[[%tabstop:x]]!@#_currentPos, [[%tabstop:margin]], [[%tabstop:fun]], [[%tabstop:args]]) flush.console() !@#_currentPos!@#_anchor transform(!@#_anchor[[%tabstop:data]]!@#_currentPos, [[%tabstop:var]] = [[%tabstop:code]]) rep(!@#_anchor[[%tabstop:x]]!@#_currentPos, each = [[%tabstop:integer]]) choose(!@#_anchor[[%tabstop:n]]!@#_currentPos, [[%tabstop:k]]) read.delim(!@#_currentPos!@#_anchor) sv.r.source("all"); sv.r.send("sel"); sv.r.saveHistory(); sv.r.send("all"); sv.r.send("para"); sv.r.send("line"); sv.r.send("block"); sv.r.send("function"); sv.r.source("sel"); sv.r.setwd("file"); sv.r.quit(); sv.r.source("function"); sv.r.send("linetobegin"); sv.r.loadHistory(); sv.r.run(); sv.r.send("linetoend"); sv.r.source("block"); sv.r.escape(); sv.r.setwd("previous"); sv.r.setwd("current", true); sv.r.setwd("session"); sv.r.send("end"); sv.r.setwd("project"); sv.r.source("para"); sv.r.saveWorkspace(); sv.r.eval("rm(list = ls(all = TRUE))"); sv.r.loadWorkspace(); sv.r.display("", "plot"); sv.r.display("", "structure"); sv.r.display("", "content"); sv.r.eval("ls()"); sv.r.eval("ls(all = TRUE)"); sv.r.eval("rm(list = ls())"); sv.r.dataList("loaded"); sv.r.display("", "names"); sv.r.data(); sv.r.display("", "summary"); sv.r.eval('unlink(path.expand(file.path(getOption("R.initdir"), c(".RData", ".Rhistory"))))'); sv.r.dataList("all"); sv.r.eval('demo()'); sv.r.browseVignettes(); sv.command.openHelp(); sv.r.siteSearch(); sv.r.example(); // The version of the current SciViews-K toolbox SciViewsKtoolboxVersion = 0.9; SciViewsKtoolboxRelease = 7; if (typeof(sv.showVersion) == "undefined" | sv.showVersion) { alert("SciViews-K toolbox version " + SciViewsKtoolboxVersion + "." + SciViewsKtoolboxRelease); } sv.r.pkg.new(); sv.r.pkg.install(); sv.r.pkg.install("sciviews", "r-forge"); sv.r.pkg.install(); sv.r.pkg.installed(); sv.r.pkg.old(); sv.r.pkg.install("", "local"); sv.r.pkg.update(); sv.r.pkg.load(); sv.r.pkg.unload(); sv.r.pkg.repositories(); sv.r.pkg.install("sciviews"); sv.r.pkg.available(); sv.r.pkg.loaded(); sv.r.pkg.chooseCRANMirror(); sv.r.pkg.remove(); sv.r.pkg.status(); 1 PKσf;W ttSciViews-K/package.kpfPKDt