diff --git a/plugins/c9.fs/fs.streams.js b/plugins/c9.fs/fs.streams.js
index d2d8e609..1793144b 100644
--- a/plugins/c9.fs/fs.streams.js
+++ b/plugins/c9.fs/fs.streams.js
@@ -7,7 +7,7 @@ return function(vfs, base, baseProc, cli) {
var resolvePath = function(path, basePath) {
if (path.charAt(0) == "~") {
- if (cli && typeof process != "undefined")
+ if (cli && typeof process != "undefined" && process.env)
return process.env.HOME + "/" + path.substr(1);
return path;
}
diff --git a/plugins/c9.ide.immediate/evaluators/browserjs.js b/plugins/c9.ide.immediate/evaluators/browserjs.js
index bbf8455d..5c78fae2 100644
--- a/plugins/c9.ide.immediate/evaluators/browserjs.js
+++ b/plugins/c9.ide.immediate/evaluators/browserjs.js
@@ -21,6 +21,8 @@ define(function(require, exports, module) {
var Evaluator = imports.Evaluator;
var ui = imports.ui;
+ var escapeHTML = require("ace/lib/lang").escapeHTML;
+
/***** Initialization *****/
var plugin = new Evaluator("Ajax.org", main.consumes, {
@@ -108,7 +110,7 @@ define(function(require, exports, module) {
function insert(div, markup, name) {
if (name !== undefined)
- insert(div, "" + name + ": ");
+ insert(div, "" + escapeHTML(name) + ": ");
markup = markup.replace(/([a-z]\w{1,4}:\/\/[\w:_\-\?&\/\.\#]*)/gi, "$1");
div.insertAdjacentHTML("beforeend", markup);
@@ -279,7 +281,7 @@ define(function(require, exports, module) {
var count = Math.min(Math.min(props.length, 5),
Math.max(0, 100 - object.length));
for (var i = 0; i < count; i++) {
- insert(preview, (found || i !== 0 ? ", " : "") + props[i] + ": ");
+ insert(preview, (found || i !== 0 ? ", " : "") + escapeHTML(props[i]) + ": ");
renderType(object[props[i]], preview, false, 2);
}
if (props.length > count)
diff --git a/plugins/c9.ide.immediate/evaluators/debugnode.js b/plugins/c9.ide.immediate/evaluators/debugnode.js
index 778f63ac..9da0d46d 100644
--- a/plugins/c9.ide.immediate/evaluators/debugnode.js
+++ b/plugins/c9.ide.immediate/evaluators/debugnode.js
@@ -113,7 +113,7 @@ define(function(require, exports, module) {
function insert(div, markup, name) {
if (name !== undefined)
- insert(div, "" + name + ": ");
+ insert(div, "" + escapeHTML(name) + ": ");
markup = markup.replace(/([a-z]\w{1,4}:\/\/[\w:_\-\?&\/\.\#]*)/gi, "$1");
div.insertAdjacentHTML("beforeend", markup);
@@ -319,7 +319,7 @@ define(function(require, exports, module) {
var count = Math.min(Math.min(props.length, 5),
Math.max(0, 100 - object.length));
for (var i = 0; i < count; i++) {
- insert(preview, (i !== 0 ? ", " : "") + props[i] + ": ");
+ insert(preview, (i !== 0 ? ", " : "") + escapeHTML(props[i]) + ": ");
renderType(props[i], preview, false, 2);
}
if (props.length > count)
diff --git a/plugins/c9.ide.language.core/outline.js b/plugins/c9.ide.language.core/outline.js
index 74c7befc..859486b3 100644
--- a/plugins/c9.ide.language.core/outline.js
+++ b/plugins/c9.ide.language.core/outline.js
@@ -653,7 +653,11 @@ define(function(require, exports, module) {
/**
*
*/
- addOutlinePlugin: addOutlinePlugin
+ addOutlinePlugin: addOutlinePlugin,
+ /**
+ * @ignore
+ */
+ get tree() { return tree },
});
register(null, {
diff --git a/plugins/c9.ide.terminal/terminal_test.js b/plugins/c9.ide.terminal/terminal_test.js
index 3e712175..e13b3dc8 100644
--- a/plugins/c9.ide.terminal/terminal_test.js
+++ b/plugins/c9.ide.terminal/terminal_test.js
@@ -1,4 +1,4 @@
-/*global describe it before after bar =*/
+/*global describe it before after bar*/
"use client";
@@ -69,9 +69,6 @@ require(["lib/architect/architect", "lib/chai/chai", "/vfs-root"], function (arc
describe('terminal', function() {
before(function(done) {
- apf.config.setProperty("allow-select", false);
- apf.config.setProperty("allow-blur", false);
-
bar.$ext.style.background = "rgba(220, 220, 220, 0.93)";
bar.$ext.style.position = "fixed";
bar.$ext.style.left = "20px";
@@ -153,16 +150,24 @@ require(["lib/architect/architect", "lib/chai/chai", "/vfs-root"], function (arc
it('should handle multiple terminals in the same pane', function(done) {
tabs.openEditor("terminal", function(err, tab) {
+ expect(err).to.not.ok;
expect(tabs.getTabs()).length(2);
tab.activate();
var doc = tab.document;
- doc.on("setTitle", function c1() {
- // expect(doc.title).match(new RegExp("^bash - "));
-
- doc.off("setTitle", c1);
- done();
+ doc.once("setTitle", function() {
+ var terminal = tab.editor.ace.session.term;
+ terminal.once("afterWrite", function() {
+ expect(window.xss).to.not.ok;
+ terminal.write("echo \"
\"");
+ tab.editor.ace.resize(true);
+ expect(tab.editor.ace.container.textContent.indexOf("![]()