diff --git a/.gitignore b/.gitignore index 4993c658..a6ff3610 100644 --- a/.gitignore +++ b/.gitignore @@ -43,6 +43,7 @@ node_modules/kaefer/node_modules/ !node_modules/ui !node_modules/react-bootstrap !node_modules/oldclient +!node_modules/vargs node_modules/oldclient/node_modules node_modules/oldclient/plugins-server/c9.api.project/tmp* diff --git a/README.md b/README.md index 49740313..71a8e5d8 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ Cloud9 3.0 SDK for Plugin Development ====================================== This is the core repository for the Cloud9 v3 SDK. The SDK allows you to run a version of Cloud9 that allows you to develop plugins and create a custom IDE based on Cloud9. - + #### Project Status: *ALPHA* During the alpha stage, expect many things to break, not work or simply fail. diff --git a/configs/client-default.js b/configs/client-default.js index 245e3093..1ff9b389 100644 --- a/configs/client-default.js +++ b/configs/client-default.js @@ -700,6 +700,13 @@ module.exports = function(options) { staticPrefix: staticPrefix + "/plugins/c9.ide.collab/notifications" }, ]; + + if (options.standalone || options.local) { + plugins.push( + "plugins/c9.ide.scm/status", + "plugins/c9.ide.scm/editor" + ); + } if (packaging || !devel) { plugins.push({ diff --git a/node_modules/ace/lib/ace/layer/marker.js b/node_modules/ace/lib/ace/layer/marker.js index 9818d225..c2050ff3 100644 --- a/node_modules/ace/lib/ace/layer/marker.js +++ b/node_modules/ace/lib/ace/layer/marker.js @@ -56,9 +56,7 @@ var Marker = function(parentEl) { }; this.update = function(config) { - var config = config || this.config; - if (!config) - return; + if (!config) return; this.config = config; diff --git a/node_modules/ace/lib/ace/lib/dom.js b/node_modules/ace/lib/ace/lib/dom.js index 9cfc20d9..c30176da 100644 --- a/node_modules/ace/lib/ace/lib/dom.js +++ b/node_modules/ace/lib/ace/lib/dom.js @@ -46,7 +46,7 @@ exports.createElement = function(tag, ns) { }; exports.hasCssClass = function(el, name) { - var classes = (el.className || "").split(/\s+/g); + var classes = (el.className + "").split(/\s+/g); return classes.indexOf(name) !== -1; }; @@ -84,7 +84,7 @@ exports.toggleCssClass = function(el, name) { add = false; classes.splice(index, 1); } - if(add) + if (add) classes.push(name); el.className = classes.join(" "); diff --git a/node_modules/ace_tree/lib/ace_tree/mouse/default_handlers.js b/node_modules/ace_tree/lib/ace_tree/mouse/default_handlers.js index 7fd87c06..83fbcd47 100644 --- a/node_modules/ace_tree/lib/ace_tree/mouse/default_handlers.js +++ b/node_modules/ace_tree/lib/ace_tree/mouse/default_handlers.js @@ -76,7 +76,7 @@ function DefaultHandlers(mouseHandler) { title = provider.getTooltipText ? provider.getTooltipText(node) : provider.getText(node); } - if (editor.container.title != title) + if (!editor.tooltip && editor.container.title != title) editor.container.title = title; this.updateHoverState(node); }; diff --git a/node_modules/ace_tree/lib/ace_tree/tooltip.js b/node_modules/ace_tree/lib/ace_tree/tooltip.js index 81de9138..5b1bd7fe 100644 --- a/node_modules/ace_tree/lib/ace_tree/tooltip.js +++ b/node_modules/ace_tree/lib/ace_tree/tooltip.js @@ -2,6 +2,7 @@ define(function(require, exports, module) { "use strict"; var dom = require("ace/lib/dom"); var lang = require("ace/lib/lang"); +var MouseEvent = require("./mouse/mouse_event").MouseEvent; dom.importCssString(".no-events * {pointer-events:none!important}"); function Tooltip(tree) { this.tree = tree; @@ -9,7 +10,8 @@ function Tooltip(tree) { this.tree.on("mousewheel", this.onMouseMove.bind(this, null)); this.tree.renderer.scroller.addEventListener("mouseout", this.onMouseOut.bind(this)); this.setUp(); - // this.tree.renderer.on("afterRender", this.updateNodeClass.bind(this)); + this.update = this.update.bind(this); + this.tree.renderer.on("afterRender", this.updateNodeClass.bind(this)); this.clearDelayed = lang.delayedCall(this.onMouseMove.bind(this), 50); } @@ -20,7 +22,7 @@ function Tooltip(tree) { this.root.className = container.className + " no-events"; this.root.style.cssText = "border: 0px;margin: 0px;" + "position: absolute; bottom: initial; right: initial; width: auto; height: auto;" - + "overflow: visible;z-index: 1000000; white-space: pre;" + + "overflow: visible;z-index: 190000; white-space: pre;" + "pointer-events: none"; // var color = dom.computedStyle(container).backgroundColor; // if (!color) @@ -28,20 +30,24 @@ function Tooltip(tree) { document.body.appendChild(this.root); }; - this.updateNode = function(treeNode) { + this.updateNode = function(treeDomNode) { if (this.node) { this.node.parentNode.removeChild(this.node); this.node = null; } - this.treeNode = treeNode; - if (!treeNode) { + this.treeDomNode = treeDomNode; + var rect = treeDomNode && treeDomNode.getBoundingClientRect(); + var maxW = this.tree.renderer.layerConfig.width; + if (!rect || treeDomNode.lastChild.getBoundingClientRect().right <= maxW) { this.root.style.display = "none"; return; } + // if (rect.width ) + this.root.className = this.tree.container.className + " no-events"; this.root.style.display = ""; - var rect = treeNode.getBoundingClientRect(); - this.node = treeNode.cloneNode(true); + + this.node = treeDomNode.cloneNode(true); this.node.style.margin = "0px"; this.root.appendChild(this.node); @@ -50,10 +56,11 @@ function Tooltip(tree) { }; this.updateNodeClass = function() { - if (this.node && this.treeNode) { - if (this.treeNode.parentNode == this.tree.renderer.$cellLayer.element) - this.node.className = this.treeNode.className; - else + if (this.node && this.treeDomNode) { + if (this.treeDomNode.parentNode == this.tree.renderer.$cellLayer.element) { + this.node.className = this.treeDomNode.className; + this.root.className = this.tree.container.className + " no-events"; + } else this.updateNode(null); } }; @@ -67,20 +74,25 @@ function Tooltip(tree) { }; this.onMouseMove = function(ev) { - var target = ev && ev.domEvent.target; - while (target && !dom.hasCssClass(target, "tree-row")) { - target = target.parentElement; - } - if (target == this.treeNode) + var node = ev && ev.getNode && ev.getNode(); + if (node == this.treeNode) return; - this.updateNode(target); - if (target) + this.treeNode = node; + if (node) this.clearDelayed.cancel(); + this.tree.renderer.on("afterRender", this.update); }; + this.update = function() { + var renderer = this.tree.renderer; + renderer.off("afterRender", this.update); + var i = renderer.layerConfig.vRange.indexOf(this.treeNode); + var domNode = renderer.$cellLayer.getDomNodeAtIndex(i + renderer.layerConfig.firstRow); + this.updateNode(domNode, this.treeNode); + }; this.onMouseOut = function(e) { - this.onMouseMove({domEvent: e}) + this.onMouseMove(); }; this.onMouseOver = function(ev) { this.clearDelayed.schedule(); diff --git a/node_modules/ace_tree/lib/ace_tree/tree.js b/node_modules/ace_tree/lib/ace_tree/tree.js index 78513294..4392dca7 100644 --- a/node_modules/ace_tree/lib/ace_tree/tree.js +++ b/node_modules/ace_tree/lib/ace_tree/tree.js @@ -105,6 +105,7 @@ var Tree = function(element, cellWidth, cellHeight) { } this.provider = provider; + this.model = provider; // TODO remove provider in favor of model if (provider) { this.renderer.setDataProvider(provider); diff --git a/node_modules/ace_tree/lib/ace_tree/virtual_renderer.js b/node_modules/ace_tree/lib/ace_tree/virtual_renderer.js index 68cab1c1..1ac072e7 100644 --- a/node_modules/ace_tree/lib/ace_tree/virtual_renderer.js +++ b/node_modules/ace_tree/lib/ace_tree/virtual_renderer.js @@ -110,6 +110,7 @@ var VirtualRenderer = function(container, cellWidth, cellHeight) { h: 0 }; + this.$scrollIntoView = null; this.$loop = new RenderLoop( this.$renderChanges.bind(this), @@ -142,6 +143,7 @@ var VirtualRenderer = function(container, cellWidth, cellHeight) { **/ this.setDataProvider = function(provider) { this.provider = provider; + this.model = provider; if (this.scrollMargin.top && provider && provider.getScrollTop() <= 0) provider.setScrollTop(-this.scrollMargin.top); @@ -300,6 +302,12 @@ var VirtualRenderer = function(container, cellWidth, cellHeight) { // provider.setScrollTop(this.getScrollTop()); changes |= this.CHANGE_SCROLL; } + + if (this.$scrollIntoView) + if (this.$scrollIntoView.model == this.model) { + this.scrollCaretIntoView(this.$scrollIntoView.caret, this.$scrollIntoView.offset); + this.$scrollIntoView = null; + } } if (width && (force || size.width != width)) { @@ -517,6 +525,9 @@ var VirtualRenderer = function(container, cellWidth, cellHeight) { this.$updateScrollBar(); this._signal("afterRender"); + + if (this.$scrollIntoView) + this.$scrollIntoView = null; }; @@ -688,6 +699,14 @@ var VirtualRenderer = function(container, cellWidth, cellHeight) { * Scrolls the Caret into the first visible area of the editor **/ this.scrollCaretIntoView = function(caret, offset) { + this.$scrollIntoView = { + caret: caret, + offset: offset, + scrollTop: this.scrollTop, + model: this.model, + height: this.$size.scrollerHeight + }; + // the editor is not visible if (this.$size.scrollerHeight === 0) return; @@ -703,8 +722,7 @@ var VirtualRenderer = function(container, cellWidth, cellHeight) { var height = nodePos.height; var left = 0; var width = 0; - - + if (this.scrollTop > top) { if (offset) top -= offset * this.$size.scrollerHeight; @@ -726,6 +744,8 @@ var VirtualRenderer = function(container, cellWidth, cellHeight) { } else if (scrollLeft + this.$size.scrollerWidth < left + width) { this.provider.setScrollLeft(Math.round(left + width - this.$size.scrollerWidth)); } + + this.$scrollIntoView.scrollTop = this.scrollTop; }; /** diff --git a/node_modules/architect-build/build_support/mini_require.js b/node_modules/architect-build/build_support/mini_require.js index 92370517..8d4c219c 100644 --- a/node_modules/architect-build/build_support/mini_require.js +++ b/node_modules/architect-build/build_support/mini_require.js @@ -134,7 +134,7 @@ var processLoadQueue = function(err, id) { } }; -define.amd = true; +define.amd = {}; define.queue = []; define.loaded = {}; define.errors = {}; @@ -296,7 +296,7 @@ require.MODULE_LOAD_URL = MODULE_LOAD_URL; require.toUrl = function(moduleName, ext, skipExt) { var absRe = /^([\w\+\.\-]+:|\/)/; var index = moduleName.indexOf("!"); - if (index !== -1 || !ext) + if (index !== -1 || !ext || /^\/|\.js$/.test(moduleName)) ext = ""; var paths = config.paths; diff --git a/package.json b/package.json index 8ca71b36..acf3085a 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "c9", "description": "New Cloud9 Client", - "version": "3.0.2234", + "version": "3.0.2278", "author": "Ajax.org B.V. ", "private": true, "main": "bin/c9", @@ -33,7 +33,7 @@ "rusha": "~0.7.2", "send": "~0.1.4", "simple-mime": "~0.0.8", - "tern": "git://github.com/cloud9ide/tern.git#42164cde34b4cb057fa0c53d3881a58d903a3135", + "tern": "git://github.com/cloud9ide/tern.git#749e64a0f0fed91f883ff055df37b4bfc9f2d980", "tern_from_ts": "git://github.com/cloud9ide/tern_from_ts.git#6a0107e602b0d044fe1753533cf31f52cf5fb95a", "through": "2.2.0", "tmp": "~0.0.20", @@ -55,7 +55,7 @@ "c9" ], "c9plugins": { - "c9.ide.language": "#4a3fb360aa", + "c9.ide.language": "#c8a0de682c", "c9.ide.language.css": "#ef8a28943e", "c9.ide.language.generic": "#77d43cfaf0", "c9.ide.language.html": "#bbe81afed1", @@ -65,7 +65,7 @@ "c9.ide.language.javascript.eslint": "#9b2721c3d0", "c9.ide.language.javascript.tern": "#a8f7ed0e30", "c9.ide.language.javascript.infer": "#cfec494a3c", - "c9.ide.language.jsonalyzer": "#ba3e0d298c", + "c9.ide.language.jsonalyzer": "#103e701afc", "c9.ide.collab": "#b49eda3791", "c9.ide.local": "#a9703b630c", "c9.ide.find": "#6cc6d3379d", @@ -94,7 +94,7 @@ "c9.ide.navigate": "#f358997d93", "c9.ide.newresource": "#f1f0624768", "c9.ide.openfiles": "#28a4f5af16", - "c9.ide.preview": "#d10e9d75e1", + "c9.ide.preview": "#a75e218d3e", "c9.ide.preview.browser": "#c50007ebbc", "c9.ide.preview.markdown": "#ab8d30ad9f", "c9.ide.pubsub": "#a85fb27eca", @@ -105,13 +105,13 @@ "c9.ide.run": "#1e99c8c1d2", "c9.ide.run.build": "#ad45874c88", "c9.ide.run.debug.xdebug": "#3b1520f83d", - "c9.ide.save": "#58b8616a88", - "c9.ide.scm": "#undefined", - "c9.ide.terminal.monitor": "#b0b4d03280", + "c9.ide.save": "#cc613b6ead", + "c9.ide.scm": "#f3847917b8", + "c9.ide.terminal.monitor": "#b52a3f2144", "c9.ide.theme.flat": "#2de8414db7", "c9.ide.threewaymerge": "#229382aa0b", "c9.ide.undo": "#b028bcb4d5", "c9.ide.upload": "#0bd010d3dc", - "c9.ide.welcome": "#c370b3f191" + "c9.ide.welcome": "#0cb72cfc56" } } \ No newline at end of file diff --git a/plugins/c9.cli.publish/install.js b/plugins/c9.cli.publish/install.js index 3475fd5b..63647e5e 100644 --- a/plugins/c9.cli.publish/install.js +++ b/plugins/c9.cli.publish/install.js @@ -109,10 +109,11 @@ define(function(require, exports, module) { } var name = argv._[1]; + var test = name == "."; if (test) name = require("path").basename(process.cwd()); - + install( name, { @@ -223,7 +224,7 @@ define(function(require, exports, module) { var version = parts[1]; var repository; - if ((!version || options.debug) && !options.test) { + if (!options.test) { if (verbose) console.log("Retrieving package info"); @@ -232,8 +233,10 @@ define(function(require, exports, module) { if (verbose) console.log("Found:", info); + + if (!version) + version = info.latest; - version = info.latest; repository = info.repository; installPackage(); @@ -362,7 +365,9 @@ define(function(require, exports, module) { request.on('response', function(res) { if (res.statusCode != 200) - return callback(new Error("Unknown Error:" + res.statusCode)); + return callback(new Error("Unknown Error getting " + + host + (port ? ":" + port : "") + + path + ":" + res.statusCode)); }); file.on('finish', function() { @@ -451,10 +456,10 @@ define(function(require, exports, module) { return callback(null, { version: "test" }); if (verbose) - console.log("Notifying c9.io that packages needs to be installed"); + console.log("Notifying c9.io that package is installed"); var endpoint = options.global ? api.user : api.project; - var url = "install/" + packageName + "/" + version + "?mode=silent"; + var url = "install/" + name + "/" + version + "?mode=silent"; endpoint.post(url, function(err, info){ callback(err, info); diff --git a/plugins/c9.cli.publish/publish_test.js b/plugins/c9.cli.publish/publish_test.js index 22d46a7e..b17489db 100644 --- a/plugins/c9.cli.publish/publish_test.js +++ b/plugins/c9.cli.publish/publish_test.js @@ -37,6 +37,7 @@ describe("cli.publish", function(){ baseTest(function (err, s) { // Services can be tested immediately by mocking API signatures params - (req, res, next) - or (user, params, callback) services = s; + HOST = "localhost:" + s.apiPort; next(err); }); }); @@ -49,7 +50,7 @@ describe("cli.publish", function(){ var json = { "name": "c9.ide.example", "latest": "1.0.0", - "owner": "https://api.c9.dev/user/2000", + "owner": "https://api.$DOMAIN/user/2000", "enabled": true, "categories": [ "example" @@ -60,10 +61,14 @@ describe("cli.publish", function(){ }, "longname": "c9.ide.example", "website": "", - "description": "Cloud9 Custom Example Plugin", - "star_avg": 0, + "description": "", + "star_count": 0, + "star_total": 0, + + "installs": 0, "screenshots": [ - "example" + // TODO Screenshots are broken + // "example" ] }; @@ -118,13 +123,6 @@ describe("cli.publish", function(){ done(); }); }); - it("should fail if the description in the package.json is missing", function(done){ - fs.writeFileSync(packagePath, packageJson.replace(/"description":.*/, '')); - runCLI("publish", ["major"], function(err, stdout, stderr){ - expect(stderr).to.match(/ERROR: Missing description property in package.json/); - done(); - }); - }); it("should fail if the repository in the package.json is missing", function(done){ fs.writeFileSync(packagePath, packageJson.replace(/"repository[\s\S]*?\},/, "")); runCLI("publish", ["major"], function(err, stdout, stderr){ @@ -157,9 +155,10 @@ describe("cli.publish", function(){ it("should publish when using force and increase the patch version", function(done){ var strJson = packageJson.replace(/"version": "[\d\.]+"/, '"version": "0.0.0"'); fs.writeFileSync(packagePath, strJson); - runCLI("publish", ["patch", "--force"], function(err, stdout, stderr){ + fs.writeFileSync(readmePath, readmeMD); + runCLI("publish", ["patch", "--force", "--tag"], function(err, stdout, stderr){ assert(!err, err); - expect(stdout).to.match(/Succesfully published version 0.0.1/); + expect(stdout).to.match(/Successfully published version 0.0.1/); runCLI("list", ["--json"], function(err, stdout, stderr){ assert(!err, err); @@ -182,7 +181,7 @@ describe("cli.publish", function(){ fs.writeFileSync(readmePath, readmeMD); runCLI("publish", ["minor"], function(err, stdout, stderr){ assert(!err, err); - expect(stdout).to.match(/Succesfully published version 0.1.0/); + expect(stdout).to.match(/Successfully published version 0.1.0/); runCLI("list", ["--json"], function(err, stdout, stderr){ assert(!err, err); @@ -204,7 +203,7 @@ describe("cli.publish", function(){ it("should increase the major version", function(done){ runCLI("publish", ["major"], function(err, stdout, stderr){ assert(!err, err); - expect(stdout).to.match(/Succesfully published version 1.0.0/); + expect(stdout).to.match(/Successfully published version 1.0.0/); runCLI("list", ["--json"], function(err, stdout, stderr){ assert(!err, err); @@ -226,7 +225,7 @@ describe("cli.publish", function(){ it("should hide the package when it is unpublished", function(done){ runCLI("unpublish", [], function(err, stdout, stderr){ assert(!err, err); - expect(stdout).to.match(/Succesfully disabled package/); + expect(stdout).to.match(/Successfully disabled package/); runCLI("list", ["--json"], function(err, stdout, stderr){ assert(!err, err); @@ -237,7 +236,7 @@ describe("cli.publish", function(){ }); }); - describe("install and remove (uninstall)", function() { + describe.only("install and remove (uninstall)", function() { var pluginDir = join(process.env.HOME, ".c9/plugins/c9.ide.example"); // Lets make sure there is at least one package in the database @@ -265,7 +264,7 @@ describe("cli.publish", function(){ it("should install a package locally", function(done){ runCLI("install", ["--local", "c9.ide.example"], function(err, stdout, stderr){ - expect(stdout).to.match(/Succesfully installed c9.ide.example@10.0.0/); + expect(stdout).to.match(/Successfully installed c9.ide.example@10.0.0/); expect(fs.existsSync(pluginDir)).ok; done(); }); @@ -278,30 +277,40 @@ describe("cli.publish", function(){ }); it("should install a package in debug mode", function(done){ runCLI("install", ["--force", "--debug", "c9.ide.example"], function(err, stdout, stderr){ - expect(stdout).to.match(/Succesfully installed c9.ide.example/); + expect(stdout).to.match(/Successfully installed c9.ide.example/); expect(fs.existsSync(join(pluginDir, "/.git"))).ok; done(); }); }); it("should install a package via the database", function(done){ - runCLI("install", ["c9.ide.example"], function(err, stdout, stderr){ - expect(stdout).to.match(/Succesfully installed c9.ide.example/); + runCLI("install", ["c9.ide.example", "--force"], function(err, stdout, stderr){ + expect(stdout).to.match(/Successfully installed c9.ide.example/); // @TODO check if it's actually in the database - add list --own to cli done(); }); }); + // it("should install a package with a specific version via the database", function(done){ + // runCLI("install", ["c9.ide.example@1.0.0", "--force"], function(err, stdout, stderr){ + // console.log(stdout, stderr); + // expect(stdout).to.match(/Successfully installed c9.ide.example@1.0.0/); + + // // @TODO check if it's actually in the database - add list --own to cli + + // done(); + // }); + // }); it("should remove a package locally", function(done){ runCLI("remove", ["--local", "c9.ide.example"], function(err, stdout, stderr){ - expect(stdout).to.match(/Succesfully removed c9.ide.example/); + expect(stdout).to.match(/Successfully removed c9.ide.example/); expect(fs.existsSync(pluginDir)).not.ok; done(); }); }); it("should remove a from the database", function(done){ runCLI("remove", ["c9.ide.example"], function(err, stdout, stderr){ - expect(stdout).to.match(/Succesfully removed c9.ide.example/); + expect(stdout).to.match(/Successfully removed c9.ide.example/); // @TODO check if it's actually in the database - add list --own to cli diff --git a/plugins/c9.ide.ace/ace.js b/plugins/c9.ide.ace/ace.js index a689326d..60e50541 100644 --- a/plugins/c9.ide.ace/ace.js +++ b/plugins/c9.ide.ace/ace.js @@ -1672,6 +1672,11 @@ define(function(require, exports, module) { */ defineSyntax: defineSyntax, + /** + * @ignore + */ + getSyntaxForPath: getSyntaxForPath, + /** * @ignore this is used by statusbar */ diff --git a/plugins/c9.ide.keys/commands.js b/plugins/c9.ide.keys/commands.js index 2260f181..90f73771 100644 --- a/plugins/c9.ide.keys/commands.js +++ b/plugins/c9.ide.keys/commands.js @@ -104,6 +104,8 @@ define(function(require, exports, module) { }, 500); function exec(command, editor, args, e) { + var sCommand = command; + if (!editor || editor.fake) editor = emit("getEditor"); @@ -119,8 +121,10 @@ define(function(require, exports, module) { if (typeof command === 'string') command = commands[command]; - if (!command) + if (!command) { + console.warn("Could not find command ", sCommand); return false; + } if (command.isAvailable && !command.isAvailable(editor, args, e)) return; //Disable commands for other contexts diff --git a/plugins/c9.ide.layout.classic/less/c9-toolbarbutton-glossy.less b/plugins/c9.ide.layout.classic/less/c9-toolbarbutton-glossy.less index f6abff1f..21838461 100644 --- a/plugins/c9.ide.layout.classic/less/c9-toolbarbutton-glossy.less +++ b/plugins/c9.ide.layout.classic/less/c9-toolbarbutton-glossy.less @@ -12,7 +12,7 @@ .box-shadow(~"inset 1px 1px @{button-glossy-hover-shadow-color}, inset -1px -1px @{button-glossy-hover-shadow-color}"); text-shadow: @button-glossy-hover-text-shadow; } -.c9-toolbarbutton-glossyDown { +.c9-toolbarbutton-glossyDown, .c9-toolbarbutton-glossyActive { border: 1px solid @button-glossy-active-border-color; .gradient(~"linear-gradient(top, @{button-glossy-active-background-1} 0%, @{button-glossy-active-background-2} 55%, @{button-glossy-active-background-3} 55%, @{button-glossy-active-background-4} 100%)"); .box-shadow(~"inset 1px 1px @{button-glossy-active-shadow-color}, inset -1px -1px @{button-glossy-active-shadow-color}"); diff --git a/plugins/c9.ide.preferences/preferences_test.js b/plugins/c9.ide.preferences/preferences_test.js index c21b7ec9..cd892555 100644 --- a/plugins/c9.ide.preferences/preferences_test.js +++ b/plugins/c9.ide.preferences/preferences_test.js @@ -185,10 +185,12 @@ require([ }); }); - after(function(done) { - document.body.style.marginBottom = ""; - done(); - }); + if (!onload.remain) { + after(function(done) { + document.body.style.marginBottom = ""; + done(); + }); + } }); onload && onload(); diff --git a/plugins/c9.ide.tree/tree.js b/plugins/c9.ide.tree/tree.js index 2d291ed9..2e6fb03d 100644 --- a/plugins/c9.ide.tree/tree.js +++ b/plugins/c9.ide.tree/tree.js @@ -30,6 +30,7 @@ define(function(require, exports, module) { var showError = imports["dialog.error"].show; var Tree = require("ace_tree/tree"); + var Tooltip = require("ace_tree/tooltip"); var TreeEditor = require("ace_tree/edit"); var markup = require("text!./tree.xml"); @@ -237,6 +238,8 @@ define(function(require, exports, module) { tree.setDataProvider(fsCache.model); tree.setOption("enableDragDrop", true); + // tree.tooltip = new Tooltip(tree); + fsCache.model.$indentSize = 12; fsCache.model.getIconHTML = function(node) { var icon = node.isFolder ? "folder" : util.getFileIcon(node.label); diff --git a/plugins/c9.ide.ui/lib/flexbox.js b/plugins/c9.ide.ui/lib/flexbox.js index 17f54cf7..f092e5f0 100644 --- a/plugins/c9.ide.ui/lib/flexbox.js +++ b/plugins/c9.ide.ui/lib/flexbox.js @@ -203,7 +203,8 @@ apf.vbox = function(struct, tagName) { var nodes = this.childNodes; for (var i = 0, l = nodes.length; i < l; i++) { - if ((node = nodes[i]).nodeFunc != apf.NODE_VISIBLE || !node.$amlLoaded) //|| node.visible === false + var node = nodes[i]; + if (node.nodeFunc != apf.NODE_VISIBLE || !node.$amlLoaded) //|| node.visible === false continue; node.$ext.style.textAlign = apf.getStyle(node.$ext, "textAlign") || "left"; diff --git a/plugins/c9.vfs.standalone/www/places.html b/plugins/c9.vfs.standalone/www/places.html index 21f72b4e..443a3b2c 100644 --- a/plugins/c9.vfs.standalone/www/places.html +++ b/plugins/c9.vfs.standalone/www/places.html @@ -22,7 +22,8 @@ var places = { Ace: { kitchen_sink: ["/static/lib/ace/kitchen-sink.html", "/../lib/ace/test/tests.html"], tree: "/static/lib/ace_tree/demo.html", - list: "/static/lib/ace_tree/list_demo.html" + list: "/static/lib/ace_tree/list_demo.html", + diff: "/static/plugins/c9.ide.scm/diff/index.html" }, Treehugger: { test: "/static/lib/treehugger/test.html" diff --git a/plugins/c9.vfs.standalone/www/test.html b/plugins/c9.vfs.standalone/www/test.html index 11d99d24..422fbb8a 100644 --- a/plugins/c9.vfs.standalone/www/test.html +++ b/plugins/c9.vfs.standalone/www/test.html @@ -16,7 +16,7 @@
- +