From d28055e878a3f8f337d864c2f7c00a1693c01e2b Mon Sep 17 00:00:00 2001 From: Lennart Kats Date: Tue, 27 Jan 2015 15:01:10 +0100 Subject: [PATCH 001/160] Add setting for discovering .eslintrc support --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 088f9328..bdde677a 100644 --- a/package.json +++ b/package.json @@ -49,14 +49,14 @@ }, "licenses": [], "c9plugins": { - "c9.ide.language": "#854575579b", + "c9.ide.language": "#648073a365", "c9.ide.language.css": "#afda1f867c", "c9.ide.language.generic": "#87a4a44671", "c9.ide.language.html": "#fa4833e117", "c9.ide.language.html.diff": "#a7311cfc9f", "c9.ide.language.javascript": "#26cf518b28", "c9.ide.language.javascript.immediate": "#9a2cce9121", - "c9.ide.language.javascript.eslint": "#1baacc275b", + "c9.ide.language.javascript.eslint": "#aae7ad0dc1", "c9.ide.language.javascript.tern": "#a65ad88dd9", "c9.ide.language.javascript.infer": "#ebb2daf81a", "c9.ide.language.jsonalyzer": "#c5dfe5fb7e", From 91c9a91e993a68a1185ca52eabd7944f8aba82c4 Mon Sep 17 00:00:00 2001 From: Lennart Kats Date: Wed, 28 Jan 2015 15:47:10 +0100 Subject: [PATCH 002/160] Add tools to extract .d.ts signatures --- .gitignore | 1 + package.json | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index af2db3dc..30a67ac7 100644 --- a/.gitignore +++ b/.gitignore @@ -8,6 +8,7 @@ plugins/c9.ide.layout.classic/less/*.css plugins/c9.vfs.standalone/www/less.html plugins/c9.ide.run/todo plugins/c9.vfs.standalone/www/charts +plugins/c9.ide.language.javascript.tern/util/sigs_ts scripts/build build/output build/standalone/ diff --git a/package.json b/package.json index bdde677a..7ba379d0 100644 --- a/package.json +++ b/package.json @@ -57,7 +57,7 @@ "c9.ide.language.javascript": "#26cf518b28", "c9.ide.language.javascript.immediate": "#9a2cce9121", "c9.ide.language.javascript.eslint": "#aae7ad0dc1", - "c9.ide.language.javascript.tern": "#a65ad88dd9", + "c9.ide.language.javascript.tern": "#b40d154333", "c9.ide.language.javascript.infer": "#ebb2daf81a", "c9.ide.language.jsonalyzer": "#c5dfe5fb7e", "c9.ide.collab": "#b94018ab2b", From d059cdca8690d26822c570a16834312bfe40749c Mon Sep 17 00:00:00 2001 From: Lennart Kats Date: Wed, 28 Jan 2015 17:08:15 +0100 Subject: [PATCH 003/160] Create more sig files --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 7ba379d0..d770a8b3 100644 --- a/package.json +++ b/package.json @@ -57,7 +57,7 @@ "c9.ide.language.javascript": "#26cf518b28", "c9.ide.language.javascript.immediate": "#9a2cce9121", "c9.ide.language.javascript.eslint": "#aae7ad0dc1", - "c9.ide.language.javascript.tern": "#b40d154333", + "c9.ide.language.javascript.tern": "#f796686b80", "c9.ide.language.javascript.infer": "#ebb2daf81a", "c9.ide.language.jsonalyzer": "#c5dfe5fb7e", "c9.ide.collab": "#b94018ab2b", From a10d110c5df33e5c5f3a0e8e8920a297b2f3d2c2 Mon Sep 17 00:00:00 2001 From: Lennart Kats Date: Wed, 28 Jan 2015 17:09:48 +0100 Subject: [PATCH 004/160] Workaround number appearing in outline name --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index d770a8b3..f4b6d64e 100644 --- a/package.json +++ b/package.json @@ -59,7 +59,7 @@ "c9.ide.language.javascript.eslint": "#aae7ad0dc1", "c9.ide.language.javascript.tern": "#f796686b80", "c9.ide.language.javascript.infer": "#ebb2daf81a", - "c9.ide.language.jsonalyzer": "#c5dfe5fb7e", + "c9.ide.language.jsonalyzer": "#3ae6c1545b", "c9.ide.collab": "#b94018ab2b", "c9.ide.local": "#2bfd7ff051", "c9.ide.find": "#989c06e6a7", From e3e0fab8f8bfd0eac349d5140d59dedc4f9e18e2 Mon Sep 17 00:00:00 2001 From: Lennart Kats Date: Wed, 28 Jan 2015 17:10:16 +0100 Subject: [PATCH 005/160] Fix watcher bug --- plugins/c9.ide.watcher/gui.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/plugins/c9.ide.watcher/gui.js b/plugins/c9.ide.watcher/gui.js index 2f14b6ca..a4489de9 100644 --- a/plugins/c9.ide.watcher/gui.js +++ b/plugins/c9.ide.watcher/gui.js @@ -330,7 +330,10 @@ define(function(require, exports, module) { } function updateChangedPath(err, path, data) { - var doc = changedPaths[path].tab.document; + var tab = changedPaths[path].tab || tabManager.findTab(path); + if (!tab) + return changedPaths[path] && changedPaths[path].resolve(); + var doc = tab.document; doc.setBookmarkedValue(data, true); doc.meta.timestamp = Date.now() - settings.timeOffset; changedPaths[path].resolve(); From f48b5b5fd1110b4ca41a2e802eee1e0018fbc367 Mon Sep 17 00:00:00 2001 From: Lennart Kats Date: Fri, 30 Jan 2015 14:38:22 +0100 Subject: [PATCH 006/160] Make architect unload checks nicer --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index f4b6d64e..ac630452 100644 --- a/package.json +++ b/package.json @@ -54,7 +54,7 @@ "c9.ide.language.generic": "#87a4a44671", "c9.ide.language.html": "#fa4833e117", "c9.ide.language.html.diff": "#a7311cfc9f", - "c9.ide.language.javascript": "#26cf518b28", + "c9.ide.language.javascript": "#ea586bde3f", "c9.ide.language.javascript.immediate": "#9a2cce9121", "c9.ide.language.javascript.eslint": "#aae7ad0dc1", "c9.ide.language.javascript.tern": "#f796686b80", From a0c09660279b9b4f0d9055f3ed154675b90ca963 Mon Sep 17 00:00:00 2001 From: Lennart Kats Date: Fri, 30 Jan 2015 14:46:06 +0100 Subject: [PATCH 007/160] Fix architect plugin unload warnings appearing in inner expressions --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index ac630452..f9f7651e 100644 --- a/package.json +++ b/package.json @@ -54,7 +54,7 @@ "c9.ide.language.generic": "#87a4a44671", "c9.ide.language.html": "#fa4833e117", "c9.ide.language.html.diff": "#a7311cfc9f", - "c9.ide.language.javascript": "#ea586bde3f", + "c9.ide.language.javascript": "#ec9ecf31cf", "c9.ide.language.javascript.immediate": "#9a2cce9121", "c9.ide.language.javascript.eslint": "#aae7ad0dc1", "c9.ide.language.javascript.tern": "#f796686b80", From 08aebbdfb7f08717dbaca9ff6a022b386da88f7e Mon Sep 17 00:00:00 2001 From: Lennart Kats Date: Fri, 30 Jan 2015 14:57:01 +0100 Subject: [PATCH 008/160] Add eslint exception handling --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index f9f7651e..07f071e7 100644 --- a/package.json +++ b/package.json @@ -56,7 +56,7 @@ "c9.ide.language.html.diff": "#a7311cfc9f", "c9.ide.language.javascript": "#ec9ecf31cf", "c9.ide.language.javascript.immediate": "#9a2cce9121", - "c9.ide.language.javascript.eslint": "#aae7ad0dc1", + "c9.ide.language.javascript.eslint": "#058d2b0bdd", "c9.ide.language.javascript.tern": "#f796686b80", "c9.ide.language.javascript.infer": "#ebb2daf81a", "c9.ide.language.jsonalyzer": "#3ae6c1545b", From b19403996ea41078ae7b86992ae46ed2a92b9877 Mon Sep 17 00:00:00 2001 From: Lennart Kats Date: Fri, 30 Jan 2015 14:57:13 +0100 Subject: [PATCH 009/160] Restore underline for unused var --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 07f071e7..d97c1fc5 100644 --- a/package.json +++ b/package.json @@ -56,7 +56,7 @@ "c9.ide.language.html.diff": "#a7311cfc9f", "c9.ide.language.javascript": "#ec9ecf31cf", "c9.ide.language.javascript.immediate": "#9a2cce9121", - "c9.ide.language.javascript.eslint": "#058d2b0bdd", + "c9.ide.language.javascript.eslint": "#905f6df949", "c9.ide.language.javascript.tern": "#f796686b80", "c9.ide.language.javascript.infer": "#ebb2daf81a", "c9.ide.language.jsonalyzer": "#3ae6c1545b", From 8a9cc10807e3c3b33fdded1709a12c8ec26e483f Mon Sep 17 00:00:00 2001 From: Lennart kats Date: Mon, 2 Feb 2015 10:23:22 +0000 Subject: [PATCH 010/160] Remove tern_from_ts files --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index d97c1fc5..42442d17 100644 --- a/package.json +++ b/package.json @@ -57,7 +57,7 @@ "c9.ide.language.javascript": "#ec9ecf31cf", "c9.ide.language.javascript.immediate": "#9a2cce9121", "c9.ide.language.javascript.eslint": "#905f6df949", - "c9.ide.language.javascript.tern": "#f796686b80", + "c9.ide.language.javascript.tern": "#142bb813a0", "c9.ide.language.javascript.infer": "#ebb2daf81a", "c9.ide.language.jsonalyzer": "#3ae6c1545b", "c9.ide.collab": "#b94018ab2b", From fdc8a737429ad5dce4a12cf04b24677afdae07b5 Mon Sep 17 00:00:00 2001 From: Lennart kats Date: Mon, 2 Feb 2015 10:25:31 +0000 Subject: [PATCH 011/160] Add tern_from_ts to connect --- plugins/c9.ide.server/plugins.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/plugins/c9.ide.server/plugins.js b/plugins/c9.ide.server/plugins.js index ae1f5601..a6132247 100644 --- a/plugins/c9.ide.server/plugins.js +++ b/plugins/c9.ide.server/plugins.js @@ -35,6 +35,7 @@ define(function(require, exports, module) { treehugger: "lib/treehugger/lib/treehugger", acorn: "lib/treehugger/lib/treehugger/js", tern: "lib/tern", + tern_from_ts: "lib/tern_from_ts", ui: "lib/ui", c9: "lib/c9", frontdoor: "lib/frontdoor", @@ -56,6 +57,7 @@ define(function(require, exports, module) { "ace_tree", "acorn", "tern", + "tern_from_ts", "treehugger", "pivottable", "architect", From b13503d294c8623bb0f17f469f36b47ecb15729f Mon Sep 17 00:00:00 2001 From: Lennart Kats Date: Mon, 2 Feb 2015 11:50:02 +0100 Subject: [PATCH 012/160] Simplify displayed tern types --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 42442d17..f8ddb4a0 100644 --- a/package.json +++ b/package.json @@ -57,7 +57,7 @@ "c9.ide.language.javascript": "#ec9ecf31cf", "c9.ide.language.javascript.immediate": "#9a2cce9121", "c9.ide.language.javascript.eslint": "#905f6df949", - "c9.ide.language.javascript.tern": "#142bb813a0", + "c9.ide.language.javascript.tern": "#b4b1de05ba", "c9.ide.language.javascript.infer": "#ebb2daf81a", "c9.ide.language.jsonalyzer": "#3ae6c1545b", "c9.ide.collab": "#b94018ab2b", From 2abcf349c22e06e6d54965c57e06bc1bacf4e867 Mon Sep 17 00:00:00 2001 From: Lennart Kats Date: Mon, 2 Feb 2015 18:10:29 +0100 Subject: [PATCH 013/160] Add API for adding/enabling/disabling tern signatures --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index f8ddb4a0..a01a13fd 100644 --- a/package.json +++ b/package.json @@ -36,7 +36,7 @@ "send": "~0.1.4", "simple-mime": "~0.0.8", "tern": "git://github.com/lennartcl/tern.git#97464df789dbb4d81ca4579383a02b320c69563d", - "tern_from_ts": "git://github.com/cloud9ide/tern_from_ts.git#b8b3d555e545aa41ed8d0df054ef38416a578faa", + "tern_from_ts": "git://github.com/cloud9ide/tern_from_ts.git#6a0107e602b0d044fe1753533cf31f52cf5fb95a", "through": "2.2.0", "tmp": "~0.0.20", "uglify-js": "2.4.16", @@ -57,7 +57,7 @@ "c9.ide.language.javascript": "#ec9ecf31cf", "c9.ide.language.javascript.immediate": "#9a2cce9121", "c9.ide.language.javascript.eslint": "#905f6df949", - "c9.ide.language.javascript.tern": "#b4b1de05ba", + "c9.ide.language.javascript.tern": "#9c7b68f1f5", "c9.ide.language.javascript.infer": "#ebb2daf81a", "c9.ide.language.jsonalyzer": "#3ae6c1545b", "c9.ide.collab": "#b94018ab2b", From 0d32eb6fa2a13bb21e7896109f14e03f0730d91f Mon Sep 17 00:00:00 2001 From: Lennart Kats Date: Mon, 2 Feb 2015 18:25:17 +0100 Subject: [PATCH 014/160] Return after disabling def --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index a01a13fd..3e510931 100644 --- a/package.json +++ b/package.json @@ -57,7 +57,7 @@ "c9.ide.language.javascript": "#ec9ecf31cf", "c9.ide.language.javascript.immediate": "#9a2cce9121", "c9.ide.language.javascript.eslint": "#905f6df949", - "c9.ide.language.javascript.tern": "#9c7b68f1f5", + "c9.ide.language.javascript.tern": "#c517ee7130", "c9.ide.language.javascript.infer": "#ebb2daf81a", "c9.ide.language.jsonalyzer": "#3ae6c1545b", "c9.ide.collab": "#b94018ab2b", From 0329cced3ea67d2c4260182823560b359ac0035a Mon Sep 17 00:00:00 2001 From: Lennart Kats Date: Wed, 4 Feb 2015 16:25:13 +0100 Subject: [PATCH 015/160] Eval should not lead to an error Fixes +5954 --- .eslintrc | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.eslintrc b/.eslintrc index 38c2858d..b9137a94 100644 --- a/.eslintrc +++ b/.eslintrc @@ -17,7 +17,7 @@ rules: no-cond-assign: [1, "except-parens"] no-debugger: 3 no-dupe-keys: 3 - no-eval: 2 + no-eval: 3 no-func-assign: 1 no-invalid-regexp: 1 no-irregular-whitespace: 3 diff --git a/package.json b/package.json index 3e510931..dc673bb4 100644 --- a/package.json +++ b/package.json @@ -56,7 +56,7 @@ "c9.ide.language.html.diff": "#a7311cfc9f", "c9.ide.language.javascript": "#ec9ecf31cf", "c9.ide.language.javascript.immediate": "#9a2cce9121", - "c9.ide.language.javascript.eslint": "#905f6df949", + "c9.ide.language.javascript.eslint": "#8832423ad1", "c9.ide.language.javascript.tern": "#c517ee7130", "c9.ide.language.javascript.infer": "#ebb2daf81a", "c9.ide.language.jsonalyzer": "#3ae6c1545b", From d8efce975d6bc44faffff4a3ff223ce96fbd5357 Mon Sep 17 00:00:00 2001 From: Lennart Kats Date: Wed, 4 Feb 2015 16:29:38 +0100 Subject: [PATCH 016/160] Fix test browser completions appear to get preference after latest changes; seems fine --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index dc673bb4..2cab7f65 100644 --- a/package.json +++ b/package.json @@ -49,7 +49,7 @@ }, "licenses": [], "c9plugins": { - "c9.ide.language": "#648073a365", + "c9.ide.language": "#de3c644b88", "c9.ide.language.css": "#afda1f867c", "c9.ide.language.generic": "#87a4a44671", "c9.ide.language.html": "#fa4833e117", From c4d2eda62aa4b05a2ddec958c9ef295781be6351 Mon Sep 17 00:00:00 2001 From: Lennart Kats Date: Thu, 5 Feb 2015 10:29:36 +0100 Subject: [PATCH 017/160] WIP --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 2cab7f65..17718e2f 100644 --- a/package.json +++ b/package.json @@ -57,7 +57,7 @@ "c9.ide.language.javascript": "#ec9ecf31cf", "c9.ide.language.javascript.immediate": "#9a2cce9121", "c9.ide.language.javascript.eslint": "#8832423ad1", - "c9.ide.language.javascript.tern": "#c517ee7130", + "c9.ide.language.javascript.tern": "#8bee74a701", "c9.ide.language.javascript.infer": "#ebb2daf81a", "c9.ide.language.jsonalyzer": "#3ae6c1545b", "c9.ide.collab": "#b94018ab2b", From 14ce51c2908a2e44fb5307483108b75b00b1b1a3 Mon Sep 17 00:00:00 2001 From: nightwing Date: Mon, 16 Feb 2015 19:12:25 +0000 Subject: [PATCH 018/160] disable tern from ts plugin for now --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 17718e2f..c154d10d 100644 --- a/package.json +++ b/package.json @@ -57,7 +57,7 @@ "c9.ide.language.javascript": "#ec9ecf31cf", "c9.ide.language.javascript.immediate": "#9a2cce9121", "c9.ide.language.javascript.eslint": "#8832423ad1", - "c9.ide.language.javascript.tern": "#8bee74a701", + "c9.ide.language.javascript.tern": "#008c837519", "c9.ide.language.javascript.infer": "#ebb2daf81a", "c9.ide.language.jsonalyzer": "#3ae6c1545b", "c9.ide.collab": "#b94018ab2b", From f59df3c842ef7789ea782ef570c503afb12fb8e8 Mon Sep 17 00:00:00 2001 From: Bas Date: Mon, 16 Mar 2015 19:24:27 +0100 Subject: [PATCH 019/160] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 32811a8f..c16e3ba8 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ 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. From 15da3c21dd3c5c5da3f9f781d6455ef3f4c654ba Mon Sep 17 00:00:00 2001 From: c9bot Date: Tue, 17 Mar 2015 06:34:12 +0100 Subject: [PATCH 020/160] c9-auto-bump 3.0.1074 --- package.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index c154d10d..2853411d 100644 --- a/package.json +++ b/package.json @@ -57,10 +57,10 @@ "c9.ide.language.javascript": "#ec9ecf31cf", "c9.ide.language.javascript.immediate": "#9a2cce9121", "c9.ide.language.javascript.eslint": "#8832423ad1", - "c9.ide.language.javascript.tern": "#008c837519", + "c9.ide.language.javascript.tern": "#7aab8b0b6a", "c9.ide.language.javascript.infer": "#ebb2daf81a", - "c9.ide.language.jsonalyzer": "#3ae6c1545b", - "c9.ide.collab": "#b94018ab2b", + "c9.ide.language.jsonalyzer": "#d82c60fcb9", + "c9.ide.collab": "#7c770ca148", "c9.ide.local": "#2bfd7ff051", "c9.ide.find": "#989c06e6a7", "c9.ide.find.infiles": "#f98dfef554", @@ -93,11 +93,11 @@ "c9.ide.pubsub": "#92ec19ed3a", "c9.ide.readonly": "#f6f07bbe42", "c9.ide.recentfiles": "#7c099abf40", - "c9.ide.remote": "#37773d905b", + "c9.ide.remote": "#f531d62cfb", "c9.ide.run": "#f5a056e6ce", "c9.ide.run.build": "#915e48b363", "c9.ide.save": "#a32a8f4346", - "c9.ide.terminal.monitor": "#df9936daa2", + "c9.ide.terminal.monitor": "#b0b4d03280", "c9.ide.theme.flat": "#5c7c27ab74", "c9.ide.threewaymerge": "#229382aa0b", "c9.ide.undo": "#b028bcb4d5", From 6186fdf212dc7b4abe92a7f0c47b20775870a9f0 Mon Sep 17 00:00:00 2001 From: nightwing Date: Wed, 4 Mar 2015 11:24:34 +0400 Subject: [PATCH 021/160] twaek terminal monitor --- package.json | 2 +- .../simple_error_handler.js | 57 +++++++++++-------- plugins/c9.ide.terminal/link_handler.js | 4 ++ plugins/c9.ide.terminal/terminal.js | 2 + 4 files changed, 39 insertions(+), 26 deletions(-) diff --git a/package.json b/package.json index 088f9328..8fd10695 100644 --- a/package.json +++ b/package.json @@ -97,7 +97,7 @@ "c9.ide.run": "#f5a056e6ce", "c9.ide.run.build": "#915e48b363", "c9.ide.save": "#a32a8f4346", - "c9.ide.terminal.monitor": "#df9936daa2", + "c9.ide.terminal.monitor": "#9dc6678798", "c9.ide.theme.flat": "#5c7c27ab74", "c9.ide.threewaymerge": "#229382aa0b", "c9.ide.undo": "#b028bcb4d5", diff --git a/plugins/c9.ide.errorhandler/simple_error_handler.js b/plugins/c9.ide.errorhandler/simple_error_handler.js index 9d56cefe..d9b71362 100644 --- a/plugins/c9.ide.errorhandler/simple_error_handler.js +++ b/plugins/c9.ide.errorhandler/simple_error_handler.js @@ -50,29 +50,29 @@ define(function(require, exports, module) { oldOnError.apply(this, arguments); }; - //Catch all APF Routed errors -// ui.addEventListener("error", function(e) { -// var errorInfo = { -// agent : navigator.userAgent, -// type : "APF Error", -// message : e.message, -// tgt : e.currentTarget && e.currentTarget.serialize(), -// url : e.url, -// state : e.state, -// e : e.error, -// workspaceId : plugin.workspaceId -// }; -// -// emit("error", errorInfo); -// -// http.request("/api/debug", { -// method : "POST", -// contentType : "application/json", -// body : errorInfo -// }, function(err) { -// if (err) console.error(err); -// }); -// }); + // Catch all APF Routed errors + // ui.addEventListener("error", function(e) { + // var errorInfo = { + // agent : navigator.userAgent, + // type : "APF Error", + // message : e.message, + // tgt : e.currentTarget && e.currentTarget.serialize(), + // url : e.url, + // state : e.state, + // e : e.error, + // workspaceId : plugin.workspaceId + // }; + + // emit("error", errorInfo); + + // http.request("/api/debug", { + // method : "POST", + // contentType : "application/json", + // body : errorInfo + // }, function(err) { + // if (err) console.error(err); + // }); + // }); } } @@ -87,8 +87,11 @@ define(function(require, exports, module) { // }); } - function reportError(exception) { - console.error(exception.stack || exception); + function reportError(exception, customData) { + if (customData) + console.error(exception, customData); + else + console.error(exception.stack || exception); submitError(exception); } @@ -98,6 +101,10 @@ define(function(require, exports, module) { load(); }); + plugin.on("unload", function(){ + loaded = false; + }); + /***** Register and define API *****/ plugin.freezePublicAPI({ diff --git a/plugins/c9.ide.terminal/link_handler.js b/plugins/c9.ide.terminal/link_handler.js index c8366150..4569d8b0 100644 --- a/plugins/c9.ide.terminal/link_handler.js +++ b/plugins/c9.ide.terminal/link_handler.js @@ -158,6 +158,10 @@ define(function(require, exports, module) { if (!/(https?|ftp|file):/.test(href)) { href = "http://" + href; } + href = href.replace(/(^https?:\/\/)(0.0.0.0|localhost)(?=:|\/|$)/, function(_, protocol, host) { + host = c9.hostname || window.location.host; + return protocol + host.replace(/:\d+/, ""); + }); if (e.metaKey || e.ctrlKey) window.open(href); else diff --git a/plugins/c9.ide.terminal/terminal.js b/plugins/c9.ide.terminal/terminal.js index 497bd688..606e211f 100644 --- a/plugins/c9.ide.terminal/terminal.js +++ b/plugins/c9.ide.terminal/terminal.js @@ -738,6 +738,8 @@ define(function(require, exports, module) { terminal.on("afterWrite", function() { clearTmuxBorders(terminal); }); + + session.getEmitter().sticky("terminalReady", session); } /***** Lifecycle *****/ From f1b14e0117657cb0b0cd245c11f6b6cff274967f Mon Sep 17 00:00:00 2001 From: Fabian Jakobs Date: Tue, 17 Mar 2015 09:55:49 +0000 Subject: [PATCH 022/160] fix datadog test --- node_modules/c9/inline-mocha.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/node_modules/c9/inline-mocha.js b/node_modules/c9/inline-mocha.js index a5c92d7d..06d89aca 100644 --- a/node_modules/c9/inline-mocha.js +++ b/node_modules/c9/inline-mocha.js @@ -1,10 +1,10 @@ -module.exports = function(module, reporter) { +module.exports = function(module, reporter, options) { if (typeof module !== "undefined" && module === require.main) { if (typeof global.onload === "undefined") global.onload = undefined; var file = module.filename; var Mocha = require("mocha"); - var mocha = new Mocha(); + var mocha = new Mocha({globals: ['error']}); mocha.reporter(reporter || "spec"); var suite = mocha.suite; suite.emit('pre-require', global, file, mocha); From 80867587eb6e788ccfc055fc1b3be8dbcc4ecd23 Mon Sep 17 00:00:00 2001 From: Fabian Jakobs Date: Tue, 17 Mar 2015 10:22:41 +0000 Subject: [PATCH 023/160] cleanups --- node_modules/c9/inline-mocha.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/node_modules/c9/inline-mocha.js b/node_modules/c9/inline-mocha.js index 06d89aca..09ce9dc0 100644 --- a/node_modules/c9/inline-mocha.js +++ b/node_modules/c9/inline-mocha.js @@ -4,7 +4,7 @@ module.exports = function(module, reporter, options) { global.onload = undefined; var file = module.filename; var Mocha = require("mocha"); - var mocha = new Mocha({globals: ['error']}); + var mocha = new Mocha(options || {}); mocha.reporter(reporter || "spec"); var suite = mocha.suite; suite.emit('pre-require', global, file, mocha); From e8d1dca62394349bc572747b79cee03cd3135259 Mon Sep 17 00:00:00 2001 From: nightwing Date: Tue, 17 Mar 2015 21:40:57 +0400 Subject: [PATCH 024/160] fix typo --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index c154d10d..7dda4a3d 100644 --- a/package.json +++ b/package.json @@ -93,7 +93,7 @@ "c9.ide.pubsub": "#92ec19ed3a", "c9.ide.readonly": "#f6f07bbe42", "c9.ide.recentfiles": "#7c099abf40", - "c9.ide.remote": "#37773d905b", + "c9.ide.remote": "#f0cdb59bec", "c9.ide.run": "#f5a056e6ce", "c9.ide.run.build": "#915e48b363", "c9.ide.save": "#a32a8f4346", From 244ec1500fb4cd138305cdf10acb3069c66fd252 Mon Sep 17 00:00:00 2001 From: nightwing Date: Tue, 17 Mar 2015 16:52:20 +0400 Subject: [PATCH 025/160] show file size in the tree tooltip --- .../ace_tree/lib/ace_tree/mouse/default_handlers.js | 6 +++--- plugins/c9.ide.tree/tree.js | 12 +++++++++++- 2 files changed, 14 insertions(+), 4 deletions(-) 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 5c9fa478..2cab0499 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 @@ -65,15 +65,15 @@ function DefaultHandlers(mouseHandler) { var editor = this.editor; var node = e.getNode(); - var title; + var title, provider = editor.provider; if (!node) { title = ""; - } else if (editor.provider.columns) { + } else if (provider.columns) { var pos = e.getDocumentPosition(); var columnData = editor.renderer.$headingLayer.findColumn(pos.x); title = columnData ? columnData.column.getText(node) : ""; } else { - title = editor.provider.getText(node); + title = provider.getTooltipText ? provider.getTooltipText(node) : provider.getText(node); } if (editor.container.title != title) diff --git a/plugins/c9.ide.tree/tree.js b/plugins/c9.ide.tree/tree.js index 915fb80c..a0ed98ad 100644 --- a/plugins/c9.ide.tree/tree.js +++ b/plugins/c9.ide.tree/tree.js @@ -227,7 +227,7 @@ define(function(require, exports, module) { // Fetch UI elements container = plugin.getElement("container"); - winFilesViewer = options.aml + winFilesViewer = options.aml; // Create the Ace Tree tree = new Tree(container.$int); @@ -244,6 +244,16 @@ define(function(require, exports, module) { return ""; }; + fsCache.model.getTooltipText = function(node) { + var size = node.size; + return node.label + (node.link ? " => " + node.link + "\n" : "") + + (size ? " | " + ( + size < 0x400 ? size + " bytes" : + size < 0x100000 ? (size / 0x400).toFixed(2) + "KB" : + (size / 0x100000).toFixed(2) + "MB" + ) : ""); + }; + if (settings.get("user/general/@treestyle") == "alternative") ui.setStyleClass(container.$int, "alternative"); From effb061c5e1dbb7e0a6fe2c895af382b58fe9820 Mon Sep 17 00:00:00 2001 From: nightwing Date: Tue, 17 Mar 2015 23:40:56 +0400 Subject: [PATCH 026/160] make sure that broken paths are not added to fs.cache --- package.json | 4 ++-- plugins/c9.fs/fs.cache.xml.js | 11 ++++++++--- plugins/c9.fs/fs.js | 7 +++++++ plugins/c9.ide.tree/tree.js | 9 +++++++-- 4 files changed, 24 insertions(+), 7 deletions(-) diff --git a/package.json b/package.json index 7dda4a3d..af0866b5 100644 --- a/package.json +++ b/package.json @@ -57,9 +57,9 @@ "c9.ide.language.javascript": "#ec9ecf31cf", "c9.ide.language.javascript.immediate": "#9a2cce9121", "c9.ide.language.javascript.eslint": "#8832423ad1", - "c9.ide.language.javascript.tern": "#008c837519", + "c9.ide.language.javascript.tern": "#7aab8b0b6a", "c9.ide.language.javascript.infer": "#ebb2daf81a", - "c9.ide.language.jsonalyzer": "#3ae6c1545b", + "c9.ide.language.jsonalyzer": "#d82c60fcb9", "c9.ide.collab": "#b94018ab2b", "c9.ide.local": "#2bfd7ff051", "c9.ide.find": "#989c06e6a7", diff --git a/plugins/c9.fs/fs.cache.xml.js b/plugins/c9.fs/fs.cache.xml.js index 0d359039..fcc3b9d7 100644 --- a/plugins/c9.fs/fs.cache.xml.js +++ b/plugins/c9.fs/fs.cache.xml.js @@ -289,14 +289,14 @@ define(function(require, exports, module) { var newPath = e.args[1]; var parent = findNode(dirname(newPath)); - //Validation + // Validation var toNode = findNode(newPath); - if (parent) { //Dir is in cache + if (parent) { // Dir is in cache if (toNode) deleteNode(toNode); - createNode(newPath, null, node); // Move node + createNode(newPath, null, node); // Move node recurPathUpdate(node, oldPath, newPath); e.undo = function(){ @@ -480,6 +480,11 @@ define(function(require, exports, module) { } function createNode(path, stat, updateNode, updating) { + if (!/^[!~/]/.test(path)) { + var e = new Error("Refusing to add a node with misformed path to fs.cache"); + return reportError(e, { path: path }); + } + if (orphans[path]) { updateNode = orphans[path]; delete orphans[path]; diff --git a/plugins/c9.fs/fs.js b/plugins/c9.fs/fs.js index 11f66b81..cd8c8270 100644 --- a/plugins/c9.fs/fs.js +++ b/plugins/c9.fs/fs.js @@ -62,6 +62,13 @@ define(function(require, exports, module) { if (typeof args[args.length - 1] != "function") throw new Error("Missing callback for " + name); + + if (!/^[!~/]/.test(path)) { + var e = new Error("Invalid path passed to fs"); + e.data = { name: name, path: path }; + setTimeout(function() { throw e }); + return args[args.length - 1](e); + } var original_callback = args.pop(); diff --git a/plugins/c9.ide.tree/tree.js b/plugins/c9.ide.tree/tree.js index a0ed98ad..c63148eb 100644 --- a/plugins/c9.ide.tree/tree.js +++ b/plugins/c9.ide.tree/tree.js @@ -961,10 +961,15 @@ define(function(require, exports, module) { if (node === false || path.charAt(0) == "!") return increment(); + if (!/^[!~/]/.test(path)) { + console.error("invalid path", path); + delete expandedList[path]; + return increment(); + } + if (node && node.status == "loaded") { expandNode(node); - increment(); - return; + return increment(); } fs.readdir(path, function(err, data) { From 6e197bb9203ed1067f80a3db8b0962fcaf333840 Mon Sep 17 00:00:00 2001 From: Rob Halff Date: Wed, 18 Mar 2015 00:51:39 +0100 Subject: [PATCH 027/160] Update CODING_STANDARDS.md --- docs/CODING_STANDARDS.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/CODING_STANDARDS.md b/docs/CODING_STANDARDS.md index 1a85839d..6a6eea2d 100644 --- a/docs/CODING_STANDARDS.md +++ b/docs/CODING_STANDARDS.md @@ -19,7 +19,7 @@ Base Tabs vs Spaces -------------- -We use 4 spaces of indenteation. +We use 4 spaces of indentation. Line Termination ---------------- @@ -100,7 +100,7 @@ Your opening braces go on the same line as the statement. Also, notice the use of whitespace before and after the condition statement. -Closing braces are always followed by a new line. This is releavant for `else`, `catch` and `finally`. +Closing braces are always followed by a new line. This is relevant for `else`, `catch` and `finally`. *Right*: From 4d15d812bcd2473eee2b8fd5218fbab6382cceae Mon Sep 17 00:00:00 2001 From: Fabian Jakobs Date: Wed, 18 Mar 2015 10:29:23 +0000 Subject: [PATCH 028/160] implement proper account blocking --- plugins/c9.vfs.client/endpoint.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/plugins/c9.vfs.client/endpoint.js b/plugins/c9.vfs.client/endpoint.js index 345511de..16b9b8a7 100644 --- a/plugins/c9.vfs.client/endpoint.js +++ b/plugins/c9.vfs.client/endpoint.js @@ -206,6 +206,9 @@ define(function(require, exports, module) { return; } else if (err.code == 403) { + if (res.error.blocked) + callback(fatalError(res.error.message, "dashboard")); + // forbidden. User doesn't have access // wait a while before trying again setTimeout(function() { From 1f6876d4389fc768cefa49b2a39978e188be2c17 Mon Sep 17 00:00:00 2001 From: Nikolai Onken Date: Wed, 18 Mar 2015 16:33:34 +0000 Subject: [PATCH 029/160] Copy all properties to new member --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index af0866b5..90d30c8f 100644 --- a/package.json +++ b/package.json @@ -60,7 +60,7 @@ "c9.ide.language.javascript.tern": "#7aab8b0b6a", "c9.ide.language.javascript.infer": "#ebb2daf81a", "c9.ide.language.jsonalyzer": "#d82c60fcb9", - "c9.ide.collab": "#b94018ab2b", + "c9.ide.collab": "#db82e7fc66", "c9.ide.local": "#2bfd7ff051", "c9.ide.find": "#989c06e6a7", "c9.ide.find.infiles": "#f98dfef554", From 06089a8e7c6c6dd81cdda1edfb87e59a74e81239 Mon Sep 17 00:00:00 2001 From: nightwing Date: Wed, 18 Mar 2015 15:17:25 +0400 Subject: [PATCH 030/160] fix raygun errors --- node_modules/ace/lib/ace/virtual_renderer.js | 1 + package.json | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/node_modules/ace/lib/ace/virtual_renderer.js b/node_modules/ace/lib/ace/virtual_renderer.js index fc054046..8002c750 100644 --- a/node_modules/ace/lib/ace/virtual_renderer.js +++ b/node_modules/ace/lib/ace/virtual_renderer.js @@ -1038,6 +1038,7 @@ var VirtualRenderer = function(container, theme) { }; this.$updateLines = function() { + if (!this.$changedLines) return; var firstRow = this.$changedLines.firstRow; var lastRow = this.$changedLines.lastRow; this.$changedLines = null; diff --git a/package.json b/package.json index af0866b5..ec7774a6 100644 --- a/package.json +++ b/package.json @@ -60,7 +60,7 @@ "c9.ide.language.javascript.tern": "#7aab8b0b6a", "c9.ide.language.javascript.infer": "#ebb2daf81a", "c9.ide.language.jsonalyzer": "#d82c60fcb9", - "c9.ide.collab": "#b94018ab2b", + "c9.ide.collab": "#7326f2c49e", "c9.ide.local": "#2bfd7ff051", "c9.ide.find": "#989c06e6a7", "c9.ide.find.infiles": "#f98dfef554", @@ -93,7 +93,7 @@ "c9.ide.pubsub": "#92ec19ed3a", "c9.ide.readonly": "#f6f07bbe42", "c9.ide.recentfiles": "#7c099abf40", - "c9.ide.remote": "#f0cdb59bec", + "c9.ide.remote": "#f531d62cfb", "c9.ide.run": "#f5a056e6ce", "c9.ide.run.build": "#915e48b363", "c9.ide.save": "#a32a8f4346", From afacd9908ff2fc9598bc17a41d0c7dea9a33a1ad Mon Sep 17 00:00:00 2001 From: Nikolai Onken Date: Wed, 18 Mar 2015 18:44:55 +0000 Subject: [PATCH 031/160] Remove whitespace --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 90d30c8f..ae230b6b 100644 --- a/package.json +++ b/package.json @@ -60,7 +60,7 @@ "c9.ide.language.javascript.tern": "#7aab8b0b6a", "c9.ide.language.javascript.infer": "#ebb2daf81a", "c9.ide.language.jsonalyzer": "#d82c60fcb9", - "c9.ide.collab": "#db82e7fc66", + "c9.ide.collab": "#e1b2c7d774", "c9.ide.local": "#2bfd7ff051", "c9.ide.find": "#989c06e6a7", "c9.ide.find.infiles": "#f98dfef554", From fdcbb19adf2283cd3006fb4e24c4d017d88cf831 Mon Sep 17 00:00:00 2001 From: nightwing Date: Wed, 18 Mar 2015 22:46:43 +0400 Subject: [PATCH 032/160] filter out DealPly error --- plugins/c9.ide.errorhandler/raygun.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/plugins/c9.ide.errorhandler/raygun.js b/plugins/c9.ide.errorhandler/raygun.js index fd3732a4..9931997f 100644 --- a/plugins/c9.ide.errorhandler/raygun.js +++ b/plugins/c9.ide.errorhandler/raygun.js @@ -1419,7 +1419,8 @@ window.TraceKit = TraceKit; var blackListedErrors = { 'Error with empty message': {}, - 'Script error.': {} + 'Script error.': {}, + 'DealPly is not defined': { factor: 10e5 } }; function processUnhandledException(stackTrace, options) { var stack = [], @@ -1479,7 +1480,7 @@ window.TraceKit = TraceKit; if (blackListedErrors.hasOwnProperty(message)) { var count = (blackListedErrors[message].count || 0) + 1; blackListedErrors[message].count = count; - if (count % 10 !== 1) { + if (count % (blackListedErrors[message].factor || 10) !== 1) { return; } finalCustomData.$blackList = blackListedErrors[message]; From 8686a4a892926fd359cdf3fec83630a06f234c7a Mon Sep 17 00:00:00 2001 From: nightwing Date: Wed, 18 Mar 2015 22:47:28 +0400 Subject: [PATCH 033/160] fix typo --- plugins/c9.preview/preview.handler.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/c9.preview/preview.handler.js b/plugins/c9.preview/preview.handler.js index 3e827c63..c307b04b 100644 --- a/plugins/c9.preview/preview.handler.js +++ b/plugins/c9.preview/preview.handler.js @@ -311,7 +311,7 @@ define(function(require, exports, module) { "content-length": data.length + inject.length, "content-type": request.headers["content-type"], "etag": request.headers.etag, - "date": request.headers.data, + "date": request.headers.date, "access-control-allow-origin": "https://ide." + ideHost }); res.write(data); From 94284d20b7d066ef4a81d6ebcfc57b50ad2c77bb Mon Sep 17 00:00:00 2001 From: Nikolai Onken Date: Wed, 18 Mar 2015 19:06:43 +0000 Subject: [PATCH 034/160] Fix r/rw toggle position in share dialog --- plugins/c9.ide.layout.classic/themes/default-flat-light.less | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/c9.ide.layout.classic/themes/default-flat-light.less b/plugins/c9.ide.layout.classic/themes/default-flat-light.less index f9f5b220..90247d47 100644 --- a/plugins/c9.ide.layout.classic/themes/default-flat-light.less +++ b/plugins/c9.ide.layout.classic/themes/default-flat-light.less @@ -1493,8 +1493,8 @@ @share-textbox-border-color: @textbox-border-color; @share-textbox-width: 378px; @share-textbox-margin: 5px 0 0 0; -@share-access-right: 150px; -@share-access-top: 36px; +@share-access-right: 140px; +@share-access-top: 66px; @share-invite-button-width: 120px; @share-invite-button-height: 30px; @share-invite-button-right: 10px; From 21d7fbe0ee9b18ce9f8bb1046eac820cf67227aa Mon Sep 17 00:00:00 2001 From: nightwing Date: Wed, 18 Mar 2015 23:20:14 +0400 Subject: [PATCH 035/160] remove console.log --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 8fd10695..29693e21 100644 --- a/package.json +++ b/package.json @@ -97,7 +97,7 @@ "c9.ide.run": "#f5a056e6ce", "c9.ide.run.build": "#915e48b363", "c9.ide.save": "#a32a8f4346", - "c9.ide.terminal.monitor": "#9dc6678798", + "c9.ide.terminal.monitor": "#b0b4d03280", "c9.ide.theme.flat": "#5c7c27ab74", "c9.ide.threewaymerge": "#229382aa0b", "c9.ide.undo": "#b028bcb4d5", From 687847870deb70517a3412284495eecbc38d0e05 Mon Sep 17 00:00:00 2001 From: client4 Date: Wed, 18 Mar 2015 15:35:35 -0600 Subject: [PATCH 036/160] Update Install-sdk.sh so it doesn't fail The install script fails on line 66 until you remove the parentheses. --- scripts/install-sdk.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/install-sdk.sh b/scripts/install-sdk.sh index 0ef7f71b..88794bf0 100755 --- a/scripts/install-sdk.sh +++ b/scripts/install-sdk.sh @@ -63,7 +63,7 @@ updatePackage() { } updateAllPackages() { - c9packages=(`"$NODE" -e 'console.log(Object.keys(require("./package.json").c9plugins).join(" "))'`); + c9packages=`"$NODE" -e 'console.log(Object.keys(require("./package.json").c9plugins).join(" "))'`; count=${#c9packages[@]} i=0 for m in ${c9packages[@]}; do echo $m; From a51f96a157633e1b6ac3732565992018135eb8cd Mon Sep 17 00:00:00 2001 From: nightwing Date: Fri, 27 Feb 2015 18:43:20 +0400 Subject: [PATCH 037/160] reapply 834417f734 which was accidentally reverted --- node_modules/vfs-local/localfs.js | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/node_modules/vfs-local/localfs.js b/node_modules/vfs-local/localfs.js index 2245553c..6168cdd1 100644 --- a/node_modules/vfs-local/localfs.js +++ b/node_modules/vfs-local/localfs.js @@ -1380,23 +1380,21 @@ module.exports = function setup(fsOptions) { }); callback(done); - function loop(watchers, path, event, callback) { + function done(callback) { if (!watchers.length) return callback(); - + + // Notify each watcher of changes and reactivate it var watcher = watchers.pop(); - watcher.handleWatchEvent(event, basename(path), true); - + fs.stat(path, function(err, stat) { + if (err || !stat) return; + stat.vfsWrite = true; + watcher.sendToAllListeners("change", basename(path), stat); + }); watcher.resume(function() { - loop(watchers, path, event, callback); + done(callback); }); } - - function done(callback) { - loop(watchers, path, "change", function() { - loop(dirWatchers, parentDir, "directory", callback); - }); - } } function connect(port, options, callback) { From 280adfbd2bbdc649836ef91c524e9b06091f4ffe Mon Sep 17 00:00:00 2001 From: nightwing Date: Sun, 22 Mar 2015 03:43:59 +0400 Subject: [PATCH 038/160] fix loading spinner in 2x mode --- plugins/c9.ide.layout.classic/themes/default-flat-light.less | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/c9.ide.layout.classic/themes/default-flat-light.less b/plugins/c9.ide.layout.classic/themes/default-flat-light.less index 90247d47..e4b4c579 100644 --- a/plugins/c9.ide.layout.classic/themes/default-flat-light.less +++ b/plugins/c9.ide.layout.classic/themes/default-flat-light.less @@ -363,7 +363,7 @@ @pane-button-running-top: 6px; @pane-button-running-animation: rotation 2s infinite steps(16); @pane-button-save-image: "@{image-path}/tab-save-spinner-active_flat_light.png"; -@pane-button-save-image-width: 360px; +@pane-button-save-image-width: 336px; @pane-button-save-image-height: 14px; @pane-button-save-width: 14px; @pane-button-save-height: 14px; From 9d5c28bfeb48a61b4d4e7470df3af78a1b4f6be7 Mon Sep 17 00:00:00 2001 From: nightwing Date: Sun, 22 Mar 2015 03:51:30 +0400 Subject: [PATCH 039/160] fix +5854 spinner in debugger datagrid moves content to the right --- plugins/c9.ide.layout.classic/less/blackdg.less | 2 +- plugins/c9.ide.layout.classic/themes/default-dark-gray.less | 1 + plugins/c9.ide.layout.classic/themes/default-dark.less | 1 + plugins/c9.ide.layout.classic/themes/default-flat-light.less | 1 + plugins/c9.ide.layout.classic/themes/default-light-gray.less | 1 + plugins/c9.ide.layout.classic/themes/default-light.less | 1 + 6 files changed, 6 insertions(+), 1 deletion(-) diff --git a/plugins/c9.ide.layout.classic/less/blackdg.less b/plugins/c9.ide.layout.classic/less/blackdg.less index 5ae75cbc..a7d86c6c 100644 --- a/plugins/c9.ide.layout.classic/less/blackdg.less +++ b/plugins/c9.ide.layout.classic/less/blackdg.less @@ -211,7 +211,7 @@ left : -2px; vertical-align : top; margin-right : 2px !important; - margin-left : 1px !important; + margin-left : @datagrid-row-toggler-loading !important; } .blackdg .loading.selected .toggler{ background : url("@{datagrid-selected-spinner}") no-repeat 0 0; diff --git a/plugins/c9.ide.layout.classic/themes/default-dark-gray.less b/plugins/c9.ide.layout.classic/themes/default-dark-gray.less index fade7e71..1a58adf5 100644 --- a/plugins/c9.ide.layout.classic/themes/default-dark-gray.less +++ b/plugins/c9.ide.layout.classic/themes/default-dark-gray.less @@ -705,6 +705,7 @@ @datagrid-row-padding: 2px 0 2px 4px; @datagrid-row-height: 18px; @datagrid-row-toggler: -1px 4px -3px 3px; +@datagrid-row-toggler-loading: 1px; @datagrid-editor-box-shadow: 0px 0px 10px 1px rgba(0,0,0,0.5) inset; diff --git a/plugins/c9.ide.layout.classic/themes/default-dark.less b/plugins/c9.ide.layout.classic/themes/default-dark.less index 0b161787..ec2edd6a 100644 --- a/plugins/c9.ide.layout.classic/themes/default-dark.less +++ b/plugins/c9.ide.layout.classic/themes/default-dark.less @@ -705,6 +705,7 @@ @datagrid-row-padding: 2px 0 2px 4px; @datagrid-row-height: 18px; @datagrid-row-toggler: -1px 4px -3px 3px; +@datagrid-row-toggler-loading: 1px; @datagrid-editor-box-shadow: 0px 0px 10px 1px rgba(0,0,0,0.5) inset; diff --git a/plugins/c9.ide.layout.classic/themes/default-flat-light.less b/plugins/c9.ide.layout.classic/themes/default-flat-light.less index e4b4c579..11eaa05a 100644 --- a/plugins/c9.ide.layout.classic/themes/default-flat-light.less +++ b/plugins/c9.ide.layout.classic/themes/default-flat-light.less @@ -705,6 +705,7 @@ @datagrid-row-padding: 5px 0 5px 7px; @datagrid-row-height: 24px; @datagrid-row-toggler: -1px 4px -3px -2px; +@datagrid-row-toggler-loading: -4px; @datagrid-editor-box-shadow: none; diff --git a/plugins/c9.ide.layout.classic/themes/default-light-gray.less b/plugins/c9.ide.layout.classic/themes/default-light-gray.less index a4eaba3d..15e2ea44 100644 --- a/plugins/c9.ide.layout.classic/themes/default-light-gray.less +++ b/plugins/c9.ide.layout.classic/themes/default-light-gray.less @@ -705,6 +705,7 @@ @datagrid-row-padding: 2px 0 2px 4px; @datagrid-row-height: 18px; @datagrid-row-toggler: -1px 4px -3px 3px; +@datagrid-row-toggler-loading: 1px; @datagrid-editor-box-shadow: 0px 0px 10px 1px rgba(0,0,0,0.5) inset; diff --git a/plugins/c9.ide.layout.classic/themes/default-light.less b/plugins/c9.ide.layout.classic/themes/default-light.less index efd55c6d..bc2cbbba 100644 --- a/plugins/c9.ide.layout.classic/themes/default-light.less +++ b/plugins/c9.ide.layout.classic/themes/default-light.less @@ -705,6 +705,7 @@ @datagrid-row-padding: 2px 0 2px 4px; @datagrid-row-height: 18px; @datagrid-row-toggler: -1px 4px -3px 3px; +@datagrid-row-toggler-loading: 1px; @datagrid-editor-box-shadow: 0px 0px 10px 1px rgba(0,0,0,0.5) inset; From 2cec5bedba2cf202abb85cc2908794d867b0ac89 Mon Sep 17 00:00:00 2001 From: Lennart Kats Date: Mon, 23 Mar 2015 09:54:00 +0100 Subject: [PATCH 040/160] Merge pull request +6686 from c9/fix-asia [hotfix] Fix Asian connectivity --- plugins/c9.vfs.client/endpoint.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/c9.vfs.client/endpoint.js b/plugins/c9.vfs.client/endpoint.js index 16b9b8a7..60e878df 100644 --- a/plugins/c9.vfs.client/endpoint.js +++ b/plugins/c9.vfs.client/endpoint.js @@ -166,7 +166,7 @@ define(function(require, exports, module) { var server = servers[i]; auth.request(server.url + "/" + options.pid, { method: "POST", - timeout: 20000, + timeout: 120000, body: { version: version }, From 8f04053d741dda917fdc5bbd4b39c7012d7c037b Mon Sep 17 00:00:00 2001 From: Lennart Kats Date: Mon, 23 Mar 2015 14:23:21 +0100 Subject: [PATCH 041/160] Merge pull request +6675 from c9/fix-vfs Improve VFS connect logic robustness --- plugins/c9.vfs.client/endpoint.js | 50 +++++++++++++++++------------ plugins/c9.vfs.client/vfs_client.js | 5 ++- 2 files changed, 33 insertions(+), 22 deletions(-) diff --git a/plugins/c9.vfs.client/endpoint.js b/plugins/c9.vfs.client/endpoint.js index 60e878df..102b5723 100644 --- a/plugins/c9.vfs.client/endpoint.js +++ b/plugins/c9.vfs.client/endpoint.js @@ -1,7 +1,7 @@ define(function(require, exports, module) { "use strict"; - main.consumes = ["Plugin", "auth", "http", "api"]; + main.consumes = ["Plugin", "auth", "http", "api", "error_handler"]; main.provides = ["vfs.endpoint"]; return main; @@ -10,6 +10,7 @@ define(function(require, exports, module) { var auth = imports.auth; var http = imports.http; var api = imports.api; + var errorHandler = imports.error_handler; /***** Initialization *****/ @@ -43,29 +44,32 @@ define(function(require, exports, module) { var servers; var pendingServerReqs = []; - if (options.getServers) - options.getServers(initDefaultServers); - else - initDefaultServers(); + initDefaultServers(); options.pid = options.pid || 1; /***** Methods *****/ function initDefaultServers(baseURI) { - options.getServers = undefined; - var loc = require("url").parse(baseURI || document.baseURI || window.location.href); - var defaultServers = [{ - url: loc.protocol + "//" + loc.hostname + (loc.port ? ":" + loc.port : "") + "/vfs", - region: "default" - }]; - servers = (urlServers || options.servers || defaultServers).map(function(server) { - server.url = server.url.replace(/\/*$/, ""); - return server; - }); - pendingServerReqs.forEach(function(cb) { - cb(null, servers); - }); + if (options.getServers) + return options.getServers(init); + init(); + + function init() { + options.getServers = undefined; + var loc = require("url").parse(baseURI || document.baseURI || window.location.href); + var defaultServers = [{ + url: loc.protocol + "//" + loc.hostname + (loc.port ? ":" + loc.port : "") + "/vfs", + region: "default" + }]; + servers = (urlServers || options.servers || defaultServers).map(function(server) { + server.url = server.url.replace(/\/*$/, ""); + return server; + }); + pendingServerReqs.forEach(function(cb) { + cb(null, servers); + }); + } } function getServers(callback) { @@ -90,10 +94,14 @@ define(function(require, exports, module) { } function getVfsEndpoint(version, callback) { - getServers(function(err, servers) { - if (err) return callback(err); + getServers(function(err, _servers) { + if (err) { + errorHandler.reportError(err); + initDefaultServers(); + _servers = servers; + } - getVfsUrl(version, servers, function(err, vfsid, url, region) { + getVfsUrl(version, _servers, function(err, vfsid, url, region) { if (err) return callback(err); callback(null, { diff --git a/plugins/c9.vfs.client/vfs_client.js b/plugins/c9.vfs.client/vfs_client.js index 1d542898..b44e2c30 100644 --- a/plugins/c9.vfs.client/vfs_client.js +++ b/plugins/c9.vfs.client/vfs_client.js @@ -7,7 +7,7 @@ define(function(require, exports, module) { "use strict"; - main.consumes = ["Plugin", "auth", "vfs.endpoint", "dialog.error", "dialog.alert"]; + main.consumes = ["Plugin", "auth", "vfs.endpoint", "dialog.error", "dialog.alert", "error_handler"]; main.provides = ["vfs"]; return main; @@ -33,6 +33,7 @@ define(function(require, exports, module) { var showError = errorDialog.show; var hideError = errorDialog.hide; var showAlert = imports["dialog.alert"].show; + var errorHandler = imports.error_handler; var eio = require("engine.io"); var Consumer = require("vfs-socket/consumer").Consumer; @@ -123,6 +124,7 @@ define(function(require, exports, module) { }); function disconnect() { + pingUrl = null; reconnect(function(err) { if (err && err.fatal) return; @@ -275,6 +277,7 @@ define(function(require, exports, module) { consumer.connect(transport, function(err, _vfs) { // TODO if (err) { + errorHandler.reportError(new Error("Error connecting to VFS", { err: err })); console.error("error connecting to VFS", err); return; } From 45b1c5ae0e9389864a8c3d4276a28cd7cc77cd49 Mon Sep 17 00:00:00 2001 From: Lennart kats Date: Mon, 23 Mar 2015 16:57:34 +0000 Subject: [PATCH 042/160] Rename menu item to avoid confusion --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 2853411d..7b7089c3 100644 --- a/package.json +++ b/package.json @@ -87,7 +87,7 @@ "c9.ide.navigate": "#64156c7f4a", "c9.ide.newresource": "#9a7464cc47", "c9.ide.openfiles": "#28a4f5af16", - "c9.ide.preview": "#3c4dded23f", + "c9.ide.preview": "#f6d1bd9921", "c9.ide.preview.browser": "#be197b0464", "c9.ide.preview.markdown": "#bf952685f6", "c9.ide.pubsub": "#92ec19ed3a", From 7fc5026216b0cb8a497bbdb070859ca07dedf67c Mon Sep 17 00:00:00 2001 From: Harutyun Amirjanyan Date: Tue, 24 Mar 2015 14:22:34 +0400 Subject: [PATCH 043/160] Merge pull request +6683 from c9/fix-debug Force-kill debugger process when stopping --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 2853411d..4a82b3fa 100644 --- a/package.json +++ b/package.json @@ -94,7 +94,7 @@ "c9.ide.readonly": "#f6f07bbe42", "c9.ide.recentfiles": "#7c099abf40", "c9.ide.remote": "#f531d62cfb", - "c9.ide.run": "#f5a056e6ce", + "c9.ide.run": "#3349df7c52", "c9.ide.run.build": "#915e48b363", "c9.ide.save": "#a32a8f4346", "c9.ide.terminal.monitor": "#b0b4d03280", From fc73beae235e295f22655fd19187c61349ece64c Mon Sep 17 00:00:00 2001 From: nightwing Date: Wed, 25 Mar 2015 13:40:19 +0400 Subject: [PATCH 044/160] disable annoying es3 warning --- .eslintrc | 1 - 1 file changed, 1 deletion(-) diff --git a/.eslintrc b/.eslintrc index b9137a94..e6595427 100644 --- a/.eslintrc +++ b/.eslintrc @@ -23,7 +23,6 @@ rules: no-irregular-whitespace: 3 no-negated-in-lhs: 1 no-regex-spaces: 3 - no-reserved-keys: 3 no-unreachable: 1 use-isnan: 2 valid-typeof: 1 From 9427a30a737ba90d4826ac2628e0c4136c54b94e Mon Sep 17 00:00:00 2001 From: nightwing Date: Sun, 22 Mar 2015 03:45:45 +0400 Subject: [PATCH 045/160] remove some unused images --- .../images/rightclickmenu_background.png | Bin 191 -> 0 bytes .../images/rightclickmenu_bottom.png | Bin 530 -> 0 bytes .../images/rightclickmenu_top.png | Bin 386 -> 0 bytes .../c9.ide.layout.classic/images/rundebug.png | Bin 3869 -> 0 bytes 4 files changed, 0 insertions(+), 0 deletions(-) delete mode 100755 plugins/c9.ide.layout.classic/images/rightclickmenu_background.png delete mode 100755 plugins/c9.ide.layout.classic/images/rightclickmenu_bottom.png delete mode 100755 plugins/c9.ide.layout.classic/images/rightclickmenu_top.png delete mode 100755 plugins/c9.ide.layout.classic/images/rundebug.png diff --git a/plugins/c9.ide.layout.classic/images/rightclickmenu_background.png b/plugins/c9.ide.layout.classic/images/rightclickmenu_background.png deleted file mode 100755 index 9a02e18e0b8de606e0f1e085c0b9411599359d9b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 191 zcmeAS@N?(olHy`uVBq!ia0vp^CxMuegAGWQ)OOtgQj#UE5hcO-X(i=}MX3yqDfvmM z3ZA)%>8U}fi7AzZCsS>JiV{6t978H@y*YD{v%!GJ^ei(e0i!~1Txqps^l zhY&`$`)cQE2?&~}a?Ugi!__gy(e=9Td)n{!Z{@L%;#2V#`&>L!d#k2!!V*LOKuPWU zI|TuTh9osej>jXG5n4MW$$(_Mc5E-=R`pZy3wz6MF>J$db^JSzHHH=fL5)w5qg0Dk zC-x`%o4;>yD}{+-t)MLG#WRC|1Oo{)`?17;q&bScF899~x3W?2EMU-p01{}4kVsG- zx`yH)OGrq~A+3<-0u7Les0FPgaz)imqUt8s*(Bs5cR9n&iZ~~_#9(v~ubzRRId_t5 zj1p%7OH|!tgrxEzCk#7a%c0EZeE<0j|N%Z|T+ zB0GgM?g0t3bV$hP8g~Qxb(2d-6ezy|0XU#F!9rFCnS?~k;T2zK?bQ4M!H)m~0Kr%a Un7C|zv;Y7A07*qoM6N<$g3KD~F#rGn diff --git a/plugins/c9.ide.layout.classic/images/rightclickmenu_top.png b/plugins/c9.ide.layout.classic/images/rightclickmenu_top.png deleted file mode 100755 index b51256ceb7a31729435f0cf6689b78aafb1e5a44..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 386 zcmV-|0e$|7P)xpxEpI}DoKPO zR)}C5bI1aEkRyta^GX!21d$?;kb}{gd9QmP(<;K5{rZww65zD`wMzz zS(b+oq{zZvuqa+-1(`WG952lCY@Bl`y!R>coCCc*`0>Wv9LG^&-}e+e-nPx;b1pKA zmDxv2LP`*iEd~S7I_E)4qI;1n$b|g^12A3mFYH6~jTo`9+Sqt*FE}S+$UWP%ye?v$73AdQU~&pDc?DT{Rk)%8Tuu)B&jX=l zBYIqeTN_^ZCl@W!f_RZg1UL*97#Ii*RD|M*o-lcJb@gKn1qE3eLe?(`M?#WiaegAd z6b#XRC?bYH!r*b>V@0Gp-k+oep;h{yEno@%%HsU~X%nqsFfx(=lZVP3Z|N5hf%yNS zSnR)OKaw^2zxDo~!hW_v1T@SV?T7a#qG$(qP2@Ng0d7Doy8{er5#lAf}%oS~YLyu6XT zo}s$Fo{_$avVo$4ii)z{FRmdT<&Q<nV^so&Is%v{_5aYtd z&MpJc-n9p73V{1=QSq7Yhi&%#e$r*j>~xo~wU~?+M6M|%6FAh#eSLlSwXw$gXL)%q ztpB(H5f}e6A}l#3<}H4?QU^VwlMJV>0-MHhvD`_wzrLN+NTjQ8Mrph>+sLh@;yFcr zipjmdIOsmye6@k>%M45$)7^}vQmKIb8$h(!!hqehg7_W+l-60CRLS_BXMCain!#IN zhnCw32@S}EyqugHquRq(gMEJM0?HPrHBnQGDs}XknzI#=a|;XEmr|!s!nyX^CyMbS zOd4HMt%&ooJ#|kP!Uhe_*>tU{bj1^w7Tn=76LiL`ytkDFh5RDBA_DZnUma+-c-I)^ z+7_qV4cVc~4<4v{Rt@EI{C-e$*^WM1!RvK(vJ$04(LTsa6M!Tn4I2iHXfn zu%oq+C$is^Raf`hiKo?>7Jqya6&3ZVwN<~UgoV$x)y3OK=I7lPKg{lZ2-gRJan|)D z$HY`y>8nazDn?iB`rhq(R>entWfo=fZr{ia6~iC?{E@Y_xjD%Qj5Jy*DJhBFUK(<} zj>RIB81idP$9h7!_Hu8lfb!Ew8+Xj(Sgve#nt*PGx6IBii#)I1kB5{#JIQtZ=1ar)un`G)7+}anQ-pd4Pcaw;!!K_ z3-U(=&ix3c<~pd;i}mINe#QCaHeDa?jLghguIEgSY=BpcNfOrjwWcsF=!MYtL&p>TpYFC+ncewnx+J08FbI+{XP9#0Js=9hEwtbT5pxS%6Q`(&C!rHfK9v;C(UTuwcU=t3p zx97&*eWe~ub;p zTI1-MdCkT*incQX%^U{8*r5R`Wnn8z9 zMnUQ3qNno3@Nm|ZNWoapA6%rHJGIG$LW+RLeO@mCFFYIvTKs3aGS=?Wmr*D_e++jf z={fc)WSdRxiu#kocd zxs>!{X3{Tj<<~9uaF1k&?56yzV3PFzvNhMczuOKJc(37LN`2Sc3)7O6j6->caw!3z zY}r;dPU?D?f64KFVi7M4g}Z>YlZs!O>TUfwH(+IqOuTNG%yKmi3Ikj<}|J&!gj zA3aZ4UVs#5ak?;kI4jNd49ev|)oZXPnU3#H#5bOAJ!g1pmpbzeFvd!@W$&7ONTA)6 z&0zF?#GT!0q)$(fYq51UTeIYb9u*kMkYwD70^Ts#5O45Z{4b1czxm1s)Kzs_#;Edb_(rAmZ1L11Je7wE4VVe zaykV>scm$_LkLP?#p8D+pwRcDMS^_`5~`|yStJ@OnhuD!v>5h913ErN(G~7K)#tb) ze0yqnah&Qm))X1DoO9|AC1-)qx9^oOqmqJRO##b1pndI~&$26l<-#Q=k{RBfr;t9%;=|2pT3xwn`hn|85#uA0gdVEFv0;B zEK*>=sES*J04l%8H+Wnl^U2z>>Q`oEH=OJu6>nb_sFv8+I@r0Fhx?Ws{W`l3C7|nr zg|@}qx}|piQXinLG;>GP2=+#$A(R>L6v zOCleGE*tF|EB#b1xdA_oKmL&*xy_m{SggNzKP7_WPdOPwpxm)2+4$TgpQzs11e+(KM z8|#o>j9#J#%Jn z=bp09{8)_%KGvvU*Elr?C82C!Y|!&SW4D))kx}O}H~dXvX&(sRF~9rqdg$V#e&6|2 z;}W|k&t1f%d#u>##Tz@_Dz|-x@3@y+#jQb;4=YreLR?D`6Lf^|Z7TK4{OT%>_`V?s zW}gmT2#*~a%*x1^fvc;R7MQrIMW{xT!?-;zp(YhlbQMAn;NJF2Kw*~6XQ2~TMVSNr zWAl;%f_2G4Q+kK-%@mu?wE}kc1|J8fWTctEnR@nSgIyUxwVw~4fnXvcD2|2-BmB(d z6J~Jq>8XvQ z981T(%9WsyKjSkBQ^W{o_<6gh*TvR_ocfoTQ(GprtvV@}YMd=DMfh`#D%o<}TRhw3 zE%L<2EU!Op$f^E*HBK4&_$`_eOirb%K0-&|ax;-sq^BgdRFiUcXv=%XJ}GBAyOKyZs@H*$?bY!VU9T;F7n1RAct8Zyy9k*ES-tq>`wczxMDZe=fzq1QYyk&fDYCpJ=$J)S9#TRg0KGkkr0Q0>vwhs8UNPR@h( eO#2U|n*ozMLQIovP9w)ZtR_b0hGqJ0QU3$&SJ)u{ From a822db752f0bbb0113bb0b8eb314fced2283b330 Mon Sep 17 00:00:00 2001 From: nightwing Date: Wed, 25 Mar 2015 00:00:58 +0400 Subject: [PATCH 046/160] add download plugin to sdk --- configs/api.standalone.js | 226 ---------------------------- plugins/c9.ide.download/download.js | 94 ++++++++++++ 2 files changed, 94 insertions(+), 226 deletions(-) delete mode 100644 configs/api.standalone.js create mode 100644 plugins/c9.ide.download/download.js diff --git a/configs/api.standalone.js b/configs/api.standalone.js deleted file mode 100644 index c36cdca8..00000000 --- a/configs/api.standalone.js +++ /dev/null @@ -1,226 +0,0 @@ -#!/usr/bin/env node -"use strict"; - -module.exports.addApi = function(plugins, config) { - config.apiUrl = ""; - var apiPlugins = [{ - setup: function(options, imports, register) { - mockRedis(options, imports, register); - }, - provides: ["mq", "db", "mailer"], - consumes: ["api"] - }, { - packagePath: "./c9.logtimestamp/logtimestamp", - mode: config.mode - }, - "./c9.error/logger.raygun_mock", - "./c9.api/ping", - { - packagePath: "./c9.api/health", - revision: config.manifest.revision, - version: config.manifest.version, - }, - "./c9.api/user", - "./c9.api/project", - "./c9.api/applications", - "./c9.api/session", - "./c9.api/collab", - "./c9.api/settings", - "./c9.api/vfs", - "./c9.api/preview", - "connect-architect/connect.bodyparser", - "connect-architect/connect.query", - "./c9.passport/passport", - "./c9.passport/bearer", - "./c9.passport/basic"]; - - return plugins.concat(apiPlugins); -}; - -function mockRedis(options, imports, register) { - var api = imports.api; - if (api.bindUser) - return; - - api.bindUser = function(call) { - return function(req, res, next) { - call(req.user, req.params, function(err, json) { - if (err) return next(err); - res.json(json); - }); - }; - }; - api.authenticate = function() { - return function(req, res, next) { - req.user = new User(req.query.access_token); - next(); - }; - }; - var users = { - "-1": { - name: "John Doe", email: "johndoe@example.org", - } - }; - - var projects = [{ - owner: -1, members: ["rw", -1, 1, 2, 3, "r", 4, 5] - }]; - - function User(id) { - if (typeof id == "object") - id = id.id; - if (!/^\d+/.test(id)) - id = -1; - var u = users[id]; - if (!u) { - u = users[id] = { - name: "user" + id, - email: "user" + id + "@c9.io", - fullname: "User " + id - }; - } - - u.id = id; - return { - name: u.name, - fullname: u.fullname, - email: u.email, - id: id - }; - } - - function Project(id) { - if (typeof id == "object") - id = id.id; - var p = projects[id]; - if (!p) - return console.log(id); - return { - isPrivate: function() { - return false; - }, - owner: new User(p.owner), - getMembers: function(cb) { - var memebers = [], acl; - var ownerId = this.owner.id; - p.members.forEach(function(memberId) { - if (typeof memberId == "string") - return (acl = memberId); - memebers.push(new Member(memberId, acl, ownerId)); - }); - cb && cb(null, memebers); - return memebers; - }, - id: id - }; - } - - function Member(id, acl, ownerId) { - return { - user: id, - status: "", - acl: acl, - role: id == ownerId ? "a" : "c", - save: function(project, cb) { - cb(); - }, - remove: function(project, cb) { - var p = projects[project.id]; - var i = p.members.indexOf(id); - if (i != -1) - p.members.splice(i, 1); - cb(); - } - }; - } - - function DB(type) { - var key, query; - var dbApi = { - findOne: function(keyv, cb) { - key = keyv; - if (cb) - return dbApi.exec(cb); - return dbApi; - }, - populate: function(queryV) { - query = queryV; - return dbApi; - }, - exec: function(cb) { - var result; - switch (type) { - case "Project": - result = new Project(0); - break; - case "User": - result = new User(key.uid); - break; - case "AccessToken": - if (query == "user") { - var id = /\d/.test(key.token) ? key.token : -1; - result = {user: new User(id)}; - } - break; - case "WorkspaceMember": - var p = key.project; - var user = new User(key.user); - result = p.getMembers().filter(function(m) { - return m.user == user.id; - })[0]; - break; - default: - console.log(":((("); - } - cb(null, result); - return dbApi; - }, - }; - dbApi.ROLE_NONE = "n"; - dbApi.ROLE_VISITOR = "v"; // @deprecated - dbApi.ROLE_COLLABORATOR = "c"; - dbApi.ROLE_ADMIN = "a"; - dbApi.ACL_RW = "rw"; - dbApi.ACL_R = "r"; - dbApi.COLLABSTATE_PENDING_ADMIN = "pending-admin"; - dbApi.COLLABSTATE_PENDING_USER = "pending-user"; // @deprecated - dbApi.COLLABSTATE_PENDING_NONE = "pending-none"; - return dbApi; - } - - var pubsub = { - publish: function() { - - } - }; - - function noop() { return {}; } - - register(null, { - "mq": { - connection: noop, - close: noop, - onReady: noop, - onceReady: noop, - }, - "db": { - User: new DB("User"), - Project: new DB("Project"), - Remote: new DB("Remote"), - AccessToken: new DB("AccessToken"), - WorkspaceMember: new DB("WorkspaceMember"), - Vfs: new DB("Vfs"), - DockerHost: new DB("DockerHost"), - Container: new DB("Container"), - Image: new DB("Image"), - Lock: new DB("Lock"), - Nonce: new DB("Nonce"), - // PubSub as part of the database infrastructure - getSubscriber: function() { return pubsub }, - getPublisher: function() { return pubsub }, - }, - mailer: { - - } - }); -} diff --git a/plugins/c9.ide.download/download.js b/plugins/c9.ide.download/download.js new file mode 100644 index 00000000..05c3fdfa --- /dev/null +++ b/plugins/c9.ide.download/download.js @@ -0,0 +1,94 @@ +define(function(require, exports, module) { + "use strict"; + + main.consumes = [ + "Plugin", "c9", "ui", "menus", "tree", "info", "vfs" + ]; + main.provides = ["download"]; + return main; + + function main(options, imports, register) { + var Plugin = imports.Plugin; + var ui = imports.ui; + var c9 = imports.c9; + var menus = imports.menus; + var tree = imports.tree; + var vfs = imports.vfs; + var info = imports.info; + + /***** Initialization *****/ + + var plugin = new Plugin("Ajax.org", main.consumes); + + var loaded = false; + function load(){ + if (loaded) return false; + loaded = true; + + menus.addItemByPath("File/Download Project", new ui.item({ + onclick: downloadProject + }), 1300, plugin); + + // Context Menu + tree.getElement("mnuCtxTree", function(mnuCtxTree) { + menus.addItemToMenu(mnuCtxTree, new ui.item({ + match: "folder|project", + isAvailable: function(){ + return tree.selectedNode; + }, + caption: "Download", + onclick: download + }), 140, plugin); + }); + } + + function download() { + if (!c9.has(c9.STORAGE)) + return; + + var node = tree.selectedNode; + if (!node) return; + + var paths = tree.selectedNodes.map(function(node) { + return node.path; + }); + if (node.isFolder && node.path == "/") + downloadProject(); + else if (paths.length > 1) + vfs.download(paths); + else if (node.isFolder) + downloadFolder(node.path); + else + downloadFile(node.path); + + } + + function downloadProject() { + vfs.download("/", info.getWorkspace().name + ".tar.gz"); + } + + function downloadFolder(path) { + vfs.download(path.replace(/\/*$/, "/")); + } + + function downloadFile(path) { + vfs.download(path.replace(/\/*$/, ""), null, true); + } + + /***** Lifecycle *****/ + + plugin.on("load", function(){ + load(); + }); + + /***** Register and define API *****/ + + plugin.freezePublicAPI({ + + }); + + register(null, { + download: plugin + }); + } +}); \ No newline at end of file From 47171cb9931dee91c91e103103a73e6306a77d66 Mon Sep 17 00:00:00 2001 From: nightwing Date: Thu, 26 Mar 2015 21:15:48 +0400 Subject: [PATCH 047/160] fix sorting of favorites on chrome --- plugins/c9.ide.tree/favorites.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/plugins/c9.ide.tree/favorites.js b/plugins/c9.ide.tree/favorites.js index 01f112af..bd430aec 100644 --- a/plugins/c9.ide.tree/favorites.js +++ b/plugins/c9.ide.tree/favorites.js @@ -93,7 +93,8 @@ define(function(require, exports, module) { status: "loaded", map: {}, children: [], - noSelect: true + noSelect: true, + $sorted: true }] }; @@ -230,6 +231,7 @@ define(function(require, exports, module) { favRoot.children.splice(index, 0, favNode); fsCache.refresh(favRoot); emit("favoriteReorder"); + update(favNode); } }, true); From f811d9f734fda8db630e844059d821351fdaba67 Mon Sep 17 00:00:00 2001 From: nightwing Date: Fri, 27 Mar 2015 15:35:14 +0400 Subject: [PATCH 048/160] fix +5962 Cloned tab goes out of sync? --- plugins/c9.core/util.js | 4 ++-- plugins/c9.fs/fs.js | 2 +- plugins/c9.ide.editors/tabmanager.js | 5 +++++ 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/plugins/c9.core/util.js b/plugins/c9.core/util.js index 538a5aa6..fd78dff6 100644 --- a/plugins/c9.core/util.js +++ b/plugins/c9.core/util.js @@ -11,7 +11,7 @@ define(function(require, exports, module) { function main(options, imports, register) { var c9 = imports.c9; var Plugin = imports.Plugin; - var _ = require("lodash"); + var normalize = require("path").normalize; var plugin = new Plugin("Ajax.org", main.consumes); @@ -270,7 +270,7 @@ define(function(require, exports, module) { var reHome = new RegExp("^" + plugin.escapeRegExp(c9.home || "/home/ubuntu")); plugin.normalizePath = function(path){ if (!path || path.charAt(0) == "~") return path; - return (path.replace(/^[\/]+/, "/")).replace(reHome, "~"); + return normalize(path.replace(reHome, "~")); }; /** diff --git a/plugins/c9.fs/fs.js b/plugins/c9.fs/fs.js index cd8c8270..e725d694 100644 --- a/plugins/c9.fs/fs.js +++ b/plugins/c9.fs/fs.js @@ -64,7 +64,7 @@ define(function(require, exports, module) { throw new Error("Missing callback for " + name); if (!/^[!~/]/.test(path)) { - var e = new Error("Invalid path passed to fs"); + var e = new Error("Invalid path passed to fs " + name); e.data = { name: name, path: path }; setTimeout(function() { throw e }); return args[args.length - 1](e); diff --git a/plugins/c9.ide.editors/tabmanager.js b/plugins/c9.ide.editors/tabmanager.js index e8372b07..b0004111 100644 --- a/plugins/c9.ide.editors/tabmanager.js +++ b/plugins/c9.ide.editors/tabmanager.js @@ -1004,6 +1004,11 @@ define(function(require, module, exports) { && t.document.title === options.title)); })[0]); + // prevent opening of same tab twice in non cloned mode + // TODO move cloning into ace? + if (!tab) + tab = findTab(path); + // Clone Tab if (((options.document || 0).meta || 0).cloned) { if (!tab) { From 7c1d0cfccf20d657348eb8fcb6fe9f56933a5f4f Mon Sep 17 00:00:00 2001 From: Ruben Daniels Date: Fri, 27 Mar 2015 17:45:59 +0000 Subject: [PATCH 049/160] Doc based fixes --- package.json | 10 ++++---- plugins/c9.ide.keys/editor.js | 23 +++++++++++-------- plugins/c9.ide.preferences/general.js | 19 +++++---------- plugins/c9.ide.preferences/preferencepanel.js | 2 +- plugins/c9.ide.preferences/preferences.css | 5 ++-- plugins/c9.ide.preferences/project.js | 15 ++++-------- plugins/c9.ide.ui/forms.js | 16 ++++++++++--- plugins/c9.ide.ui/ui.js | 6 +++++ 8 files changed, 51 insertions(+), 45 deletions(-) diff --git a/package.json b/package.json index ea8bde68..31590b2f 100644 --- a/package.json +++ b/package.json @@ -60,7 +60,7 @@ "c9.ide.language.javascript.tern": "#7aab8b0b6a", "c9.ide.language.javascript.infer": "#ebb2daf81a", "c9.ide.language.jsonalyzer": "#d82c60fcb9", - "c9.ide.collab": "#7c770ca148", + "c9.ide.collab": "#7009f69cb0", "c9.ide.local": "#2bfd7ff051", "c9.ide.find": "#989c06e6a7", "c9.ide.find.infiles": "#f98dfef554", @@ -78,7 +78,7 @@ "c9.ide.configuration": "#b8470f4107", "c9.ide.dialog.wizard": "#a588b64050", "c9.ide.fontawesome": "#781602c5d8", - "c9.ide.format": "#1ae38e60e6", + "c9.ide.format": "#4295dcca4d", "c9.ide.help.support": "#60e88f5680", "c9.ide.imgeditor": "#08bbc53578", "c9.ide.immediate": "#e9ba147cc2", @@ -87,9 +87,9 @@ "c9.ide.navigate": "#64156c7f4a", "c9.ide.newresource": "#9a7464cc47", "c9.ide.openfiles": "#28a4f5af16", - "c9.ide.preview": "#f6d1bd9921", - "c9.ide.preview.browser": "#be197b0464", - "c9.ide.preview.markdown": "#bf952685f6", + "c9.ide.preview": "#dba2f4214d", + "c9.ide.preview.browser": "#ac18aaf31d", + "c9.ide.preview.markdown": "#ab8d30ad9f", "c9.ide.pubsub": "#92ec19ed3a", "c9.ide.readonly": "#f6f07bbe42", "c9.ide.recentfiles": "#7c099abf40", diff --git a/plugins/c9.ide.keys/editor.js b/plugins/c9.ide.keys/editor.js index e6c90708..3eb708ba 100644 --- a/plugins/c9.ide.keys/editor.js +++ b/plugins/c9.ide.keys/editor.js @@ -2,7 +2,7 @@ define(function(require, exports, module) { main.consumes = [ "PreferencePanel", "commands", "settings", "ui", "util", "Form", "c9", "dialog.alert", "tabManager", "save", "dialog.confirm", "layout", - "preferences", "menus" + "menus" // "preferenced" ]; main.provides = ["preferences.keybindings"]; return main; @@ -12,7 +12,7 @@ define(function(require, exports, module) { var commands = imports.commands; var settings = imports.settings; var layout = imports.layout; - var preferences = imports.preferences; + // var preferences = imports.preferences; var ui = imports.ui; var c9 = imports.c9; var util = imports.util; @@ -32,7 +32,7 @@ define(function(require, exports, module) { var plugin = new PreferencePanel("Ajax.org", main.consumes, { caption: "Keybindings", - className: "keybindings", + className: "keybindings flatform", form: true, noscroll: true, index: 200 @@ -211,7 +211,7 @@ define(function(require, exports, module) { node: container = new ui.bar({ anchors: "269 0 0 0", "class" : "keybindings", - style: "padding:44px 10px 10px 10px;position:relative" + style: "padding:44px 10px 10px 10px" }) } ], commands); @@ -509,16 +509,19 @@ define(function(require, exports, module) { }); plugin.on("resize", function(e) { datagrid && datagrid.resize(); - }); - plugin.on("enable", function() { - - }); - plugin.on("disable", function() { - }); plugin.on("unload", function() { loaded = false; drawn = false; + + model = null; + datagrid = null; + changed = null; + container = null; + filterbox = null; + appliedCustomSets = null; + intro = null; + reloading = null; }); /***** Register and define API *****/ diff --git a/plugins/c9.ide.preferences/general.js b/plugins/c9.ide.preferences/general.js index 67a811a0..1c656659 100644 --- a/plugins/c9.ide.preferences/general.js +++ b/plugins/c9.ide.preferences/general.js @@ -23,7 +23,7 @@ define(function(require, exports, module) { var emit = plugin.getEmitter(); emit.setMaxListeners(1000); - var navHtml, intro; + var intro; var loaded = false; function load() { @@ -44,7 +44,7 @@ define(function(require, exports, module) { prefs.on("add", function(e) { if (!("Project" in e.state)) plugin.add(e.state, e.plugin); - }); + }, plugin); } var drawn = false; @@ -52,8 +52,6 @@ define(function(require, exports, module) { if (drawn) return; drawn = true; - navHtml = e.navHtml; - plugin.add({ "General" : { position: 10, @@ -71,7 +69,7 @@ define(function(require, exports, module) { + "Cloud9 will return to it's original configuration", function(){ settings.reset(); - }, function(){}) + }, function(){}); } } }, @@ -109,8 +107,8 @@ define(function(require, exports, module) { + '

These settings are synced across all your workspaces.

'; intro.$int.querySelector("a").onclick = function(){ - emit("edit") - } + emit("edit"); + }; } /***** Methods *****/ @@ -123,16 +121,11 @@ define(function(require, exports, module) { }); plugin.on("draw", function(e) { draw(e); - }); - plugin.on("enable", function() { - - }); - plugin.on("disable", function() { - }); plugin.on("unload", function() { loaded = false; drawn = false; + intro = null; }); /***** Register and define API *****/ diff --git a/plugins/c9.ide.preferences/preferencepanel.js b/plugins/c9.ide.preferences/preferencepanel.js index 35088827..66acbaa4 100644 --- a/plugins/c9.ide.preferences/preferencepanel.js +++ b/plugins/c9.ide.preferences/preferencepanel.js @@ -261,7 +261,7 @@ define(function(require, module, exports) { "textarea" : 400, "checked-spinner" : 50 } - }); + }, plugin); } }); diff --git a/plugins/c9.ide.preferences/preferences.css b/plugins/c9.ide.preferences/preferences.css index c5450847..74ccdc48 100644 --- a/plugins/c9.ide.preferences/preferences.css +++ b/plugins/c9.ide.preferences/preferences.css @@ -148,14 +148,15 @@ .bar-preferences .keybindings{ min-height: 250px; } -.bar-preferences .keybindings .container > .hsplitbox, .bar-preferences .keybindings .container > .basic{ +.bar-preferences .flatform .container > .hsplitbox, +.bar-preferences .flatform .container > .basic{ border-top : 1px solid @preferences-border-top-color-light; box-sizing: border-box; } .bar-preferences .keybindings .intro when(@preferences-flat){ margin-bottom: 8px !important; } -.bar-preferences .keybindings .container > .hsplitbox:last-child when(@preferences-flat){ +.bar-preferences .flatform .container > .hsplitbox:last-child when(@preferences-flat){ height: 49px !important; } .bar-preferences .container>.hsplitbox:last-child{ diff --git a/plugins/c9.ide.preferences/project.js b/plugins/c9.ide.preferences/project.js index 1b9aafee..bc28a828 100644 --- a/plugins/c9.ide.preferences/project.js +++ b/plugins/c9.ide.preferences/project.js @@ -21,7 +21,7 @@ define(function(require, exports, module) { var emit = plugin.getEmitter(); emit.setMaxListeners(1000); - var navHtml, intro; + var intro; var loaded = false; function load() { @@ -42,12 +42,12 @@ define(function(require, exports, module) { prefs.on("add", function(e) { if ("Project" in e.state) plugin.add(e.state, e.plugin); - }); + }, plugin); prefs.on("draw", function(e) { if (!prefs.activePanel) prefs.activate(plugin); - }); + }, plugin); } var drawn = false; @@ -65,8 +65,6 @@ define(function(require, exports, module) { intro.$int.querySelector("a").onclick = function(){ emit("edit"); } - - navHtml = e.navHtml; } /***** Methods *****/ @@ -78,16 +76,11 @@ define(function(require, exports, module) { }); plugin.on("draw", function(e) { draw(e); - }); - plugin.on("enable", function() { - - }); - plugin.on("disable", function() { - }); plugin.on("unload", function() { loaded = false; drawn = false; + intro = null; }); /***** Register and define API *****/ diff --git a/plugins/c9.ide.ui/forms.js b/plugins/c9.ide.ui/forms.js index a8b39694..354a32cf 100644 --- a/plugins/c9.ide.ui/forms.js +++ b/plugins/c9.ide.ui/forms.js @@ -10,7 +10,7 @@ define(function(require, exports, module) { /***** Initialization *****/ - function Form(options) { + function Form(options, forPlugin) { var plugin = new Plugin("Ajax.org", main.consumes); var emit = plugin.getEmitter(); @@ -41,6 +41,9 @@ define(function(require, exports, module) { if (options.form) add(options.form); + + if (forPlugin) + forPlugin.addOther(function(){ plugin.unload(); }); } var drawn = false; @@ -398,7 +401,7 @@ define(function(require, exports, module) { function update(items) { items.forEach(function(item) { var el = plugin.getElement(item.id); - switch(el.type) { + switch (el.type) { case "dropdown": var dropdown = el.lastChild; @@ -412,7 +415,14 @@ define(function(require, exports, module) { dropdown.setAttribute("value", item.value); break; default: - el.lastChild.setAttribute('value', item.value); + if ("value" in item) + el.lastChild.setAttribute('value', item.value); + if ("onclick" in item) + el.lastChild.onclick = item.onclick; + if ("visible" in item) + el.lastChild.setAttribute("visible", item.visible) + if ("zindex" in item) + el.lastChild.setAttribute("zindex", item.zindex) break; } }) diff --git a/plugins/c9.ide.ui/ui.js b/plugins/c9.ide.ui/ui.js index f44aec7c..311cd574 100644 --- a/plugins/c9.ide.ui/ui.js +++ b/plugins/c9.ide.ui/ui.js @@ -40,6 +40,12 @@ define(function(require, module, exports) { apf.Class.prototype.emit = apf.Class.prototype.dispatchEvent; apf.Class.prototype.off = apf.Class.prototype.removeEventListener; + Object.defineProperty(apf.Class.prototype, '$html', { + get: function() { return this.$int || this.$container || this.$ext; }, + enumerable: false, + configurable: false + }); + apf.preProcessCSS = insertLess; // Load a basic document into APF From 226f27ac236ace4c20cb749c6144a5f312b68309 Mon Sep 17 00:00:00 2001 From: Ruben Daniels Date: Fri, 27 Mar 2015 18:22:08 +0000 Subject: [PATCH 050/160] remove commented out code --- plugins/c9.ide.keys/editor.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/plugins/c9.ide.keys/editor.js b/plugins/c9.ide.keys/editor.js index 3eb708ba..970e4e08 100644 --- a/plugins/c9.ide.keys/editor.js +++ b/plugins/c9.ide.keys/editor.js @@ -2,7 +2,7 @@ define(function(require, exports, module) { main.consumes = [ "PreferencePanel", "commands", "settings", "ui", "util", "Form", "c9", "dialog.alert", "tabManager", "save", "dialog.confirm", "layout", - "menus" // "preferenced" + "menus" ]; main.provides = ["preferences.keybindings"]; return main; @@ -12,7 +12,6 @@ define(function(require, exports, module) { var commands = imports.commands; var settings = imports.settings; var layout = imports.layout; - // var preferences = imports.preferences; var ui = imports.ui; var c9 = imports.c9; var util = imports.util; From 2b29604421205096c4dfc7bae82bcef8eaec6803 Mon Sep 17 00:00:00 2001 From: Robin Date: Sat, 28 Mar 2015 18:28:40 +0000 Subject: [PATCH 051/160] Added reload button to plugin manager --- package.json | 13 +- plugins/c9.ide.plugins/manager.js | 343 +++++++++++++++++++----------- 2 files changed, 224 insertions(+), 132 deletions(-) diff --git a/package.json b/package.json index ea8bde68..0b8ac707 100644 --- a/package.json +++ b/package.json @@ -60,7 +60,7 @@ "c9.ide.language.javascript.tern": "#7aab8b0b6a", "c9.ide.language.javascript.infer": "#ebb2daf81a", "c9.ide.language.jsonalyzer": "#d82c60fcb9", - "c9.ide.collab": "#7c770ca148", + "c9.ide.collab": "#7009f69cb0", "c9.ide.local": "#2bfd7ff051", "c9.ide.find": "#989c06e6a7", "c9.ide.find.infiles": "#f98dfef554", @@ -78,7 +78,7 @@ "c9.ide.configuration": "#b8470f4107", "c9.ide.dialog.wizard": "#a588b64050", "c9.ide.fontawesome": "#781602c5d8", - "c9.ide.format": "#1ae38e60e6", + "c9.ide.format": "#f51451ac57", "c9.ide.help.support": "#60e88f5680", "c9.ide.imgeditor": "#08bbc53578", "c9.ide.immediate": "#e9ba147cc2", @@ -87,18 +87,19 @@ "c9.ide.navigate": "#64156c7f4a", "c9.ide.newresource": "#9a7464cc47", "c9.ide.openfiles": "#28a4f5af16", - "c9.ide.preview": "#f6d1bd9921", - "c9.ide.preview.browser": "#be197b0464", - "c9.ide.preview.markdown": "#bf952685f6", + "c9.ide.preview": "#dba2f4214d", + "c9.ide.preview.browser": "#ac18aaf31d", + "c9.ide.preview.markdown": "#ab8d30ad9f", "c9.ide.pubsub": "#92ec19ed3a", "c9.ide.readonly": "#f6f07bbe42", "c9.ide.recentfiles": "#7c099abf40", "c9.ide.remote": "#f531d62cfb", "c9.ide.run": "#3349df7c52", "c9.ide.run.build": "#915e48b363", + "c9.ide.run.debug.xdebug": "#b91d23f48b", "c9.ide.save": "#a32a8f4346", "c9.ide.terminal.monitor": "#b0b4d03280", - "c9.ide.theme.flat": "#5c7c27ab74", + "c9.ide.theme.flat": "#b1d65fa9bb", "c9.ide.threewaymerge": "#229382aa0b", "c9.ide.undo": "#b028bcb4d5", "c9.ide.upload": "#0bd010d3dc", diff --git a/plugins/c9.ide.plugins/manager.js b/plugins/c9.ide.plugins/manager.js index ec27acfd..b1f990b0 100644 --- a/plugins/c9.ide.plugins/manager.js +++ b/plugins/c9.ide.plugins/manager.js @@ -1,3 +1,4 @@ +/*global requirejs*/ define(function(require, exports, module) { main.consumes = [ "PreferencePanel", "settings", "ui", "util", "Form", "ext", "c9", @@ -6,7 +7,7 @@ define(function(require, exports, module) { ]; main.provides = ["plugin.manager"]; return main; - + /* - Show Packages to be updated - Open Plugin Store @@ -23,16 +24,16 @@ define(function(require, exports, module) { - * - Custom packages - * - + - Actions: - Uninstall - Report Issue - Open README - Open in Cloud9 - + DataProvider.variableHeightRowMixin.call(this) in datagrid constructor and set node.height - + harutyun [1:11 PM] or add a custom getItemHeight function like https://github.com/c9/newclient/blob/master/node_modules/ace_tree/demo/demo.js#L63 (edited) */ @@ -54,17 +55,17 @@ define(function(require, exports, module) { var confirm = imports["dialog.confirm"].show; var showError = imports["dialog.error"].show; var favs = imports["tree.favorites"]; - + var search = require("../c9.ide.navigate/search"); var Tree = require("ace_tree/tree"); var TreeData = require("./managerdp"); var join = require("path").join; var basename = require("path").basename; var dirname = require("path").dirname; - + var staticPrefix = options.staticPrefix; var architect; - + var CORE = { "c9.core":1,"c9.fs":1,"c9.ide.preferences":1,"c9.ide.panels":1, "c9.ide.plugins":1,"c9.ide.login":1,"c9.vfs.client":1, @@ -85,11 +86,11 @@ define(function(require, exports, module) { "plugin.simple": "Empty Plugin", "plugin.default": "Full Plugin" }; - + // @TODO add sorting - + /***** Initialization *****/ - + var plugin = new PreferencePanel("Ajax.org", main.consumes, { caption: "Plugin Manager", className: "plugins", @@ -98,31 +99,31 @@ define(function(require, exports, module) { index: 200 }); // var emit = plugin.getEmitter(); - + var HASSDK = c9.location.indexOf("sdk=0") === -1; var ENABLED = c9.location.indexOf("sdk=1") > -1; - + var model, datagrid, filterbox; - var btnUninstall, btnReport, btnReadme, btnCloud9; - + var btnUninstall, btnReport, btnReadme, btnCloud9, btnReload; + var loaded = false; function load() { if (loaded) return false; loaded = true; - + if (!HASSDK) return; - + // @TODO enable/disable plugins -> move to ext - + // settings.on("read", function(e) { // updateCommandsFromSettings(); // }, plugin); - + // commands.on("update", function(){ // changed = true; // updateCommandsFromSettings(); // }, plugin); - + if (ENABLED) { menus.addItemByPath("File/New Plugin", null, 210, plugin); Object.keys(TEMPLATES).forEach(function(name){ @@ -134,15 +135,15 @@ define(function(require, exports, module) { }); } } - + var drawn; function draw(e) { if (drawn) return; drawn = true; - + model = new TreeData(); model.emptyMessage = "No plugins found"; - + model.columns = [{ caption: "Name", value: "name", @@ -154,8 +155,8 @@ define(function(require, exports, module) { }, { caption: "Version", // value: "version", - getText: function(p){ - return p.version || + getText: function(p){ + return p.version || (p.isPackage ? p.items.length && p.items[0].version || "" : ""); @@ -165,16 +166,16 @@ define(function(require, exports, module) { caption: "Startup Time", // value: "time", width: "100", - getText: function(p){ + getText: function(p){ if (p.time !== undefined) - return (p.time || 0) + "ms"; - + return (p.time || 0) + "ms"; + var total = 0; if (p.isPackage || p.name == "runtime") { p.items.forEach(function(item){ total += item.time || 0 }); } else { - p.items.forEach(function(p){ + p.items.forEach(function(p){ p.items && p.items.forEach(function(item){ total += item.time || 0 }); }); } @@ -192,24 +193,24 @@ define(function(require, exports, module) { caption: "Developer", // value: "developer", getText: function(p){ - return p.developer || + return p.developer || (p.isPackage ? p.items.length && p.items[0].developer || "" : ""); }, width: "150" }]; - + layout.on("eachTheme", function(e){ var height = parseInt(ui.getStyleRule(".bar-preferences .blackdg .tree-row", "height"), 10) || 24; model.rowHeightInner = height; model.rowHeight = height; - + if (e.changed) datagrid.resize(true); }); - + reloadModel(); - + // type: "custom", // title: "Introduction", // position: 1, @@ -218,16 +219,16 @@ define(function(require, exports, module) { // "class" : "intro", // style: "padding:12px;position:relative;" // }) - - // intro.$int.innerHTML = + + // intro.$int.innerHTML = // '

Keybindings

Change these settings to configure ' // + 'how Cloud9 responds to your keyboard commands.

' // + '

You can also manually edit your keymap file.

' // + '

Hint: Double click on the keystroke cell in the table below to change the keybinding.

'; - + // intro.$int.querySelector("a").onclick = function(){ editUserKeys(); }; - + var hbox = new ui.hbox({ htmlNode: e.html, padding: 5, @@ -270,30 +271,40 @@ define(function(require, exports, module) { btnCloud9 = new ui.button({ skin: "btn-default-css3", caption: "Open in Cloud9" + }), + btnReload = new ui.button({ + skin: "btn-default-css3", + caption: "Reload", + onclick: function(){ + var item = datagrid.selection.getCursor(); + console.log(item); + if (item.enabled && item.name) + reload(item.name); + } }) ] }); - + var div = e.html.appendChild(document.createElement("div")); div.style.position = "absolute"; div.style.left = "10px"; div.style.right = "10px"; div.style.bottom = "10px"; div.style.top = "50px"; - + datagrid = new Tree(div); datagrid.setTheme({ cssClass: "blackdg" }); datagrid.setDataProvider(model); - + layout.on("resize", function(){ datagrid.resize() }, plugin); - + function setTheme(e) { - filterbox.setAttribute("class", + filterbox.setAttribute("class", e.theme.indexOf("dark") > -1 ? "dark" : ""); } layout.on("themeChange", setTheme); setTheme({ theme: settings.get("user/general/@skin") }); - + filterbox.ace.commands.addCommands([ { bindKey: "Enter", @@ -303,25 +314,26 @@ define(function(require, exports, module) { exec: function(ace){ ace.setValue(""); } } ]); - + filterbox.ace.on("input", function(e) { applyFilter(); }); - + // when tab is restored datagrids size might be wrong // todo: remove this when apf bug is fixed datagrid.once("mousemove", function() { datagrid.resize(true); }); - + datagrid.on("changeSelection", function(e){ var item = datagrid.selection.getCursor(); - + if (item.isGroup) { btnUninstall.disable(); btnReport.disable(); btnReadme.disable(); btnCloud9.disable(); + btnReload.disable(); } else { if (item.isPackage) { @@ -332,31 +344,34 @@ define(function(require, exports, module) { btnUninstall.setCaption(item.enabled == "true" ? "Disable" : "Enable"); btnUninstall.setAttribute("class", item.enabled == "true" ? "btn-red" : "btn-green"); } - - if (CORE[item.name] || item.parent.parent && item.parent.parent.isType == "core") + + if (CORE[item.name] || item.parent.parent && item.parent.parent.isType == "core") { btnUninstall.disable(); - else + btnReload.disable(); + } else { btnUninstall.enable(); - + btnReload.enable(); + } + btnReport.enable(); btnReadme.enable(); btnCloud9.enable(); } }); } - + /***** Methods *****/ - + function reloadModel() { if (!model) return; - + var groups = {}; var packages = {}; var root = []; - + ["custom", "pre", "core", "runtime"].forEach(function(name){ - root.push(groups[name] = { - items: [], + root.push(groups[name] = { + items: [], isOpen: name != "runtime", className: "group", isGroup: true, @@ -365,18 +380,18 @@ define(function(require, exports, module) { name: GROUPS[name] }); }); - + var lut = ext.named; - + ext.plugins.forEach(function(plugin) { var info = architect.pluginToPackage[plugin.name]; var packageName = info && info.package || "runtime"; - + var groupName; if (CORE[packageName]) groupName = "core"; else if (info && info.isAdditionalMode) groupName = "custom"; else groupName = "pre"; - + var package; if (packageName == "runtime") { package = groups.runtime; @@ -384,15 +399,15 @@ define(function(require, exports, module) { else { package = packages[packageName]; if (!package) - groups[groupName].items.push(package = packages[packageName] = { - items: [], + groups[groupName].items.push(package = packages[packageName] = { + items: [], isPackage: true, className: "package", parent: groups[groupName], - name: packageName + name: packageName }); } - + package.items.push({ name: plugin.name, enabled: lut[plugin.name].loaded ? "true" : "false", @@ -405,42 +420,42 @@ define(function(require, exports, module) { : plugin.developer }); }); - + model.cachedRoot = { items: root }; applyFilter(); } - + function applyFilter() { model.keyword = filterbox && filterbox.getValue(); - + if (!model.keyword) { model.reKeyword = null; model.setRoot(model.cachedRoot); - + // model.isOpen = function(node){ return node.isOpen; } } else { - model.reKeyword = new RegExp("(" + model.reKeyword = new RegExp("(" + util.escapeRegExp(model.keyword) + ")", 'i'); var root = search.treeSearch(model.cachedRoot.items, model.keyword, true); model.setRoot(root); - + // model.isOpen = function(node){ return true; }; } } - + function uninstall(name){ btnUninstall.setAttribute("caption", "..."); btnUninstall.disable(); - + // @TODO first disable the plugin - + proc.spawn("c9", { args: ["uninstall", name] }, function(err, p){ p.stdout.on("data", function(c){ - + }); p.stderr.on("data", function(c){ - + }); p.on("exit", function(code){ if (code) { @@ -448,13 +463,13 @@ define(function(require, exports, module) { "Could not uninstall plugin", "Could not uninstall plugin"); } - + btnUninstall.setAttribute("caption", "Uninstall"); btnUninstall.enable(); }); }); } - + function enable(name){ try{ ext.enablePlugin(name); } catch(e){ @@ -463,21 +478,21 @@ define(function(require, exports, module) { e.message); return false; } - + reloadModel(); } - + function disable(name, callback){ var deps = ext.getDependencies(name); var plugins = ext.named; - + for (var i = 0; i < deps.length; i++) { ext.getDependencies(deps[i]).forEach(function(name){ if (deps.indexOf(name) == -1) deps.push(name); }); } - + if (deps.length) { confirm("Found " + deps.length + " plugins that depend on this plugin.", "Would you like to disable all the plugins that depend on '" + name + "'?", @@ -502,24 +517,24 @@ define(function(require, exports, module) { if (!e) reloadModel(); callback(e); } - + function recurDisable(name){ var deps = ext.getDependencies(name); - + if (deps.length) { if (!deps.every(function(name){ return !recurDisable(name); })) return false; } - + return disable(name); } - - function disable(name) { + + function disable(name) { if (!plugins[name].loaded) return; - + try{ ext.disablePlugin(name); } - catch(e){ + catch(e){ alert("Could not disable plugin", "Got an error when disabling plugin: " + name, e.message); @@ -527,15 +542,15 @@ define(function(require, exports, module) { } } } - + function createNewPlugin(template){ if (!template) template = "c9.ide.default"; - + var url = staticPrefix + "/" + join("templates", template + ".tar.gz"); if (!url.match(/^http/)) url = location.origin + url; - + function getPath(callback, i){ i = i || 0; var path = join("~", ".c9/plugins/", template + (i ? "." + i : "")); @@ -544,47 +559,47 @@ define(function(require, exports, module) { callback(null, path); }); } - + function handleError(err){ showError("Could not create plugin."); console.error(err); } - + getPath(function(err, path){ if (err) return handleError(err); - + var pluginsDir = join("~", ".c9/plugins/_/"); var pluginsDirAbsolute = pluginsDir.replace(/^~/, c9.home); var tarPath = join(pluginsDir, template + ".tar.gz"); var tarPathAbsolute = tarPath.replace(/^~/, c9.home); - + // Download tar file with template for plugin proc.execFile("bash", { args: ["-c", ["curl", "-L", url, "--create-dirs", "-o", tarPathAbsolute].join(" ")] }, function(err, stderr, stdout){ if (err) return handleError(err); - + // Untar tar file proc.execFile("bash", { args: ["-c", ["tar", "-zxvf", tarPath, "-C", pluginsDirAbsolute].join(" ")] }, function(err, stderr, stdout){ - if (err) + if (err) return handleError(err); - + // Move template to the right folder var dirPath = join(dirname(tarPath), template); fs.rename(dirPath, path, function(err){ - if (err) + if (err) return handleError(err); - + // Remove .tar.gz fs.unlink(tarPath, function(){ - + // Add plugin to favorites favs.addFavorite(dirname(pluginsDir), "plugins"); - + // Select and expand the folder of the plugin tree.expandAndSelect(path); }); @@ -593,9 +608,79 @@ define(function(require, exports, module) { }); }); } - + + function reload(name) { + for (var plugin in architect.lut) { + if (architect.lut[plugin].provides.indexOf(name) < 0) + continue; + + var unloaded = []; + var recurUnload = function(name){ + var plugin = architect.services[name]; + unloaded.push(name); + + // Find all the dependencies + var deps = ext.getDependencies(plugin.name); + + // Unload all the dependencies (and their deps) + deps.forEach(function(name){ + recurUnload(name); + }); + + // Unload plugin + plugin.unload(); + } + + // Recursively unload plugin + var p = architect.lut[plugin]; + if (p.provides) { // Plugin might not been initialized all the way + p.provides.forEach(function(name){ + recurUnload(name); + }); + } + + // create reverse lookup table + var rlut = {}; + for (var packagePath in architect.lut) { + var provides = architect.lut[packagePath].provides; + if (provides) { // Plugin might not been initialized all the way + provides.forEach(function(name){ + rlut[name] = packagePath; + }); + } + } + + // Build config of unloaded plugins + var config = [], done = {}; + unloaded.forEach(function(name){ + var packagePath = rlut[name]; + + // Make sure we include each plugin only once + if (done[packagePath]) return; + done[packagePath] = true; + + var options = architect.lut[packagePath]; + delete options.provides; + delete options.consumes; + delete options.setup; + + config.push(options); + + // Clear require cache + requirejs.undef(options.packagePath); // global + }); + + // Load all plugins again + architect.loadAdditionalPlugins(config, function(err){ + if (err) console.error(err); + }); + + return; + } + } + /***** Lifecycle *****/ - + plugin.on("load", function() { load(); }); @@ -609,15 +694,15 @@ define(function(require, exports, module) { datagrid && datagrid.resize(); }); plugin.on("enable", function() { - + }); plugin.on("disable", function() { - + }); plugin.on("unload", function() { loaded = false; drawn = false; - + architect = null; model = null; datagrid = null; @@ -626,48 +711,54 @@ define(function(require, exports, module) { btnReport = null; btnReadme = null; btnCloud9 = null; + btnReload = null; }); - + /***** Register and define API *****/ - + /** - * + * **/ plugin.freezePublicAPI({ /** - * + * */ get architect(){ throw new Error(); }, - set architect(v){ - architect = v; + set architect(v){ + architect = v; architect.on("ready-additional", function(){ reloadModel(); }); }, - + /** - * + * */ createNewPlugin: createNewPlugin, - + /** - * + * */ uninstall: uninstall, - + /** - * + * */ enable: enable, - + /** - * + * */ - disable: disable + disable: disable, + + /** + * + */ + reload: reload }); - - register(null, { - "plugin.manager" : plugin + + register(null, { + "plugin.manager" : plugin }); } }); \ No newline at end of file From 2b98d36f59942b28f21835624e4b31c49c1e84fb Mon Sep 17 00:00:00 2001 From: nightwing Date: Sun, 29 Mar 2015 03:35:23 +0400 Subject: [PATCH 052/160] workaround for broken menu on local --- local/index.html | 6 +++++- package.json | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/local/index.html b/local/index.html index 35c9e6fc..7a262984 100644 --- a/local/index.html +++ b/local/index.html @@ -428,7 +428,11 @@ fatalError(err); }); - app.on("service", function(name, plugin){ + app.on("service", function(name, plugin) { + if (name == "plugin.loader" || name == "plugin.installer" || name == "plugin.debug" || name == "plugin.manager") + plugin.architect = app; // TODO why we rename app to architect? + if (name == "c9") + plugin.startLoadTime = start; if (!plugin.name) plugin.name = name; }); diff --git a/package.json b/package.json index 31590b2f..107997a8 100644 --- a/package.json +++ b/package.json @@ -98,7 +98,7 @@ "c9.ide.run.build": "#915e48b363", "c9.ide.save": "#a32a8f4346", "c9.ide.terminal.monitor": "#b0b4d03280", - "c9.ide.theme.flat": "#5c7c27ab74", + "c9.ide.theme.flat": "#b1d65fa9bb", "c9.ide.threewaymerge": "#229382aa0b", "c9.ide.undo": "#b028bcb4d5", "c9.ide.upload": "#0bd010d3dc", From 0a6a7aa3131794724f87357a1d566ec55b4eb2d7 Mon Sep 17 00:00:00 2001 From: nightwing Date: Mon, 30 Mar 2015 01:12:36 +0400 Subject: [PATCH 053/160] enable download plugin in sdk --- configs/client-default.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/configs/client-default.js b/configs/client-default.js index 5f42b148..a01313ee 100644 --- a/configs/client-default.js +++ b/configs/client-default.js @@ -501,6 +501,8 @@ module.exports = function(options) { "plugins/c9.ide.format/formatters/jsbeautify", // Other + "plugins/c9.ide.download/download", + { packagePath: "plugins/c9.ide.info/info", installPath: options.installPath, From 41518496d4dca66e25e4f976cea3ae753c500dd4 Mon Sep 17 00:00:00 2001 From: nightwing Date: Mon, 30 Mar 2015 01:14:06 +0400 Subject: [PATCH 054/160] fix package name regex --- node_modules/architect/architect.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/node_modules/architect/architect.js b/node_modules/architect/architect.js index 512f2994..17c5fe43 100644 --- a/node_modules/architect/architect.js +++ b/node_modules/architect/architect.js @@ -448,7 +448,8 @@ function Architect(config) { }); } - var packageName = (plugin.packagePath || "").replace(/.*plugins\/([^\/]*)\/.*$/, "$1"); + var m = /^plugins\/([^\/]+)|\/plugins\/[^\/]+\/([^\/]+)/.exec(plugin.packagePath); + var packageName = m && (m[1] || m[2]); if (!app.packages[packageName]) app.packages[packageName] = []; if (DEBUG) { From 7479523eb99ffc813763e58c7fc4afd515099b6c Mon Sep 17 00:00:00 2001 From: nightwing Date: Mon, 30 Mar 2015 03:15:52 +0400 Subject: [PATCH 055/160] create __packed__.js before publishing --- plugins/c9.cli.publish/publish.js | 36 +++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/plugins/c9.cli.publish/publish.js b/plugins/c9.cli.publish/publish.js index deb301c6..17ebcd32 100644 --- a/plugins/c9.cli.publish/publish.js +++ b/plugins/c9.cli.publish/publish.js @@ -36,6 +36,7 @@ define(function(require, exports, module) { var FormData = require("form-data"); var http = require(APIHOST.indexOf("localhost") > -1 ? "http" : "https"); var basename = require("path").basename; + var dirname = require("path").dirname; var verbose = false; var force = false; @@ -433,6 +434,41 @@ define(function(require, exports, module) { // @TODO add a .c9exclude file that excludes files var zipFilePath; function build(){ + var base = dirname(cwd); + var packageName = json.name; + var config = Object.keys(plugins).map(function(p) { + return packageName + "/" + p; + }); + var paths = {}; + paths[packageName] = cwd; + + var build = require("architect-build/build"); + build(config, { + paths: paths, + enableBrowser: true, + includeConfig: false, + noArchitect: true, + compress: true, + obfuscate: true, + oneLine: true, + filter: [], + ignore: [], + withRequire: false, + stripLess: false, + basepath: base, + }, function(e, result) { + var packedFiles = result.sources.map(function(m) { + return m.file + }); + fs.writeFile("__packed__.js", result.code, "utf8", function(err, result) { + if (err) console.log(err); + + zip(packedFiles); + }); + }); + } + + function zip(ignore){ zipFilePath = join(os.tmpDir(), json.name + "@" + json.version); var tarArgs = ["-zcvf", zipFilePath, "."]; var c9ignore = process.env.HOME + "/.c9/.c9ignore"; From e10fa11588759045fe08cb2419bfb09701068e52 Mon Sep 17 00:00:00 2001 From: nightwing Date: Tue, 31 Mar 2015 11:06:33 +0400 Subject: [PATCH 056/160] fix typo --- node_modules/ace/lib/ace/selection.js | 2 +- package.json | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/node_modules/ace/lib/ace/selection.js b/node_modules/ace/lib/ace/selection.js index b712fc6b..ed57682f 100644 --- a/node_modules/ace/lib/ace/selection.js +++ b/node_modules/ace/lib/ace/selection.js @@ -923,7 +923,7 @@ var Selection = function(session) { this.toSingleRange(data[0]); for (var i = data.length; i--; ) { var r = Range.fromPoints(data[i].start, data[i].end); - if (data.isBackwards) + if (data[i].isBackwards) r.cursor = r.start; this.addRange(r, true); } diff --git a/package.json b/package.json index 107997a8..af85add3 100644 --- a/package.json +++ b/package.json @@ -96,6 +96,7 @@ "c9.ide.remote": "#f531d62cfb", "c9.ide.run": "#3349df7c52", "c9.ide.run.build": "#915e48b363", + "c9.ide.run.debug.xdebug": "#b91d23f48b", "c9.ide.save": "#a32a8f4346", "c9.ide.terminal.monitor": "#b0b4d03280", "c9.ide.theme.flat": "#b1d65fa9bb", From 66b60ed2ea899aff6afb253ea86860aa35211b73 Mon Sep 17 00:00:00 2001 From: nightwing Date: Tue, 31 Mar 2015 13:05:56 +0400 Subject: [PATCH 057/160] fix +6725 Add more js-beautify options to settings --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index af85add3..0b8ac707 100644 --- a/package.json +++ b/package.json @@ -78,7 +78,7 @@ "c9.ide.configuration": "#b8470f4107", "c9.ide.dialog.wizard": "#a588b64050", "c9.ide.fontawesome": "#781602c5d8", - "c9.ide.format": "#4295dcca4d", + "c9.ide.format": "#f51451ac57", "c9.ide.help.support": "#60e88f5680", "c9.ide.imgeditor": "#08bbc53578", "c9.ide.immediate": "#e9ba147cc2", From a4a6c0364b8ba390eaaeb5e98e977d64cb17b5ff Mon Sep 17 00:00:00 2001 From: Fabian Jakobs Date: Tue, 31 Mar 2015 12:50:31 +0000 Subject: [PATCH 058/160] add "d9 checkout" --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index 30a67ac7..26d542fd 100644 --- a/.gitignore +++ b/.gitignore @@ -9,6 +9,8 @@ plugins/c9.vfs.standalone/www/less.html plugins/c9.ide.run/todo plugins/c9.vfs.standalone/www/charts plugins/c9.ide.language.javascript.tern/util/sigs_ts +plugins/c9.account.billing/node_modules/ +plugins/c9.account/node_modules/ scripts/build build/output build/standalone/ From 9c1f27d6d86d38be8bdc1dbec90a011c11b96ffc Mon Sep 17 00:00:00 2001 From: nightwing Date: Sun, 29 Mar 2015 23:57:13 +0400 Subject: [PATCH 059/160] improve ux of patterns input field in findinfiles --- package.json | 2 +- plugins/c9.ide.ui/lib_apf.js | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 0b8ac707..07beeb6d 100644 --- a/package.json +++ b/package.json @@ -63,7 +63,7 @@ "c9.ide.collab": "#7009f69cb0", "c9.ide.local": "#2bfd7ff051", "c9.ide.find": "#989c06e6a7", - "c9.ide.find.infiles": "#f98dfef554", + "c9.ide.find.infiles": "#1b83cf12f1", "c9.ide.find.replace": "#e4daf722b8", "c9.ide.run.debug": "#379e508be6", "c9.ide.ace.emmet": "#e5f1a92ac3", diff --git a/plugins/c9.ide.ui/lib_apf.js b/plugins/c9.ide.ui/lib_apf.js index c7893793..4d12f382 100644 --- a/plugins/c9.ide.ui/lib_apf.js +++ b/plugins/c9.ide.ui/lib_apf.js @@ -9016,6 +9016,9 @@ var modules = { boxFlex: function(oHtml, value, center) { oHtml.style[apf.CSS_FLEX_PROP] = value; }, + boxFlexGrow: function(oHtml, value, center) { + oHtml.style[apf.CSS_FLEX_PROP + "-grow"] = value; + }, "height-rsz": function(oHtml, value, center) { oHtml.style.height = value + PX; if (apf.hasSingleResizeEvent && apf.layout.$onresize) From 539cf4b6e2956887ba6860b5ed585b2b40b2135d Mon Sep 17 00:00:00 2001 From: nightwing Date: Tue, 31 Mar 2015 17:00:25 +0400 Subject: [PATCH 060/160] make sure operationEnd events are not emitted to wrong session --- node_modules/ace/lib/ace/editor.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/node_modules/ace/lib/ace/editor.js b/node_modules/ace/lib/ace/editor.js index 1dc7321b..1768c0a2 100644 --- a/node_modules/ace/lib/ace/editor.js +++ b/node_modules/ace/lib/ace/editor.js @@ -275,6 +275,10 @@ var Editor = function(renderer, session) { this.setSession = function(session) { if (this.session == session) return; + + // make sure operationEnd events are not emitted to wrong session + if (this.curOp) this.endOperation(); + this.curOp = {}; var oldSession = this.session; if (oldSession) { @@ -372,6 +376,8 @@ var Editor = function(renderer, session) { oldSession: oldSession }); + this.curOp = null; + oldSession && oldSession._signal("changeEditor", {oldEditor: this}); session && session._signal("changeEditor", {editor: this}); }; From 61c7ae04b8122f755f82fd472dc4579935589365 Mon Sep 17 00:00:00 2001 From: Fabian Jakobs Date: Tue, 31 Mar 2015 13:31:51 +0000 Subject: [PATCH 061/160] rename git_url_parse into scm_url_parse and make it more generic --- node_modules/c9/git.js | 2 +- node_modules/c9/git_test.js | 31 --------- .../c9/{git_url_parse.js => scm_url_parse.js} | 13 +++- node_modules/c9/scm_url_parse_test.js | 69 +++++++++++++++++++ 4 files changed, 82 insertions(+), 33 deletions(-) rename node_modules/c9/{git_url_parse.js => scm_url_parse.js} (67%) create mode 100644 node_modules/c9/scm_url_parse_test.js diff --git a/node_modules/c9/git.js b/node_modules/c9/git.js index 307d5402..dea02285 100644 --- a/node_modules/c9/git.js +++ b/node_modules/c9/git.js @@ -5,7 +5,7 @@ require("amd-loader"); var Fs = require("fs"); var Path = require("path"); var exec = require("child_process").exec; -exports.parse = require("./git_url_parse"); +exports.parse = require("./scm_url_parse"); exports.isValidUrl = function(url) { return !!exports.parse(url); diff --git a/node_modules/c9/git_test.js b/node_modules/c9/git_test.js index 04234bfc..4954438a 100644 --- a/node_modules/c9/git_test.js +++ b/node_modules/c9/git_test.js @@ -18,37 +18,6 @@ module.exports = { assert.equal(git.isValidUrl("god"), false); }, - "test parse ssh url" : function() { - var url = git.parse("git@github.com:fjakobs/lispjs.git"); - assert.equal(url.protocol, "ssh:"); - assert.equal(url.auth, "git"); - assert.equal(url.hostname, "github.com"); - assert.equal(url.pathname, "fjakobs/lispjs.git"); - }, - - "test parse git url" : function() { - var url = git.parse("git://github.com/fjakobs/lispjs.git"); - assert.equal(url.protocol, "git:"); - assert.equal(url.hostname, "github.com"); - assert.equal(url.pathname, "fjakobs/lispjs.git"); - }, - - "test parse https url" : function() { - var url = git.parse("https://fjakobs@github.com/fjakobs/lispjs.git"); - assert.equal(url.protocol, "https:"); - assert.equal(url.auth, "fjakobs"); - assert.equal(url.hostname, "github.com"); - assert.equal(url.pathname, "fjakobs/lispjs.git"); - }, - - "test parse Bitbucket url" : function() { - var url = git.parse("git@bitbucket.org/Richard/expressling.git"); - assert.equal(url.protocol, "ssh:"); - assert.equal(url.auth, "git"); - assert.equal(url.hostname, "bitbucket.org"); - assert.equal(url.pathname, "Richard/expressling.git"); - }, - "test get head revision": function(next) { git.getHeadRevision(__dirname, function(err, rev) { assert.equal(err, null); diff --git a/node_modules/c9/git_url_parse.js b/node_modules/c9/scm_url_parse.js similarity index 67% rename from node_modules/c9/git_url_parse.js rename to node_modules/c9/scm_url_parse.js index e701228a..30b7da60 100644 --- a/node_modules/c9/git_url_parse.js +++ b/node_modules/c9/scm_url_parse.js @@ -3,11 +3,19 @@ define(function(require, exports, module) { var Url = require("url"); + var providers = { + "bitbucket.org": "bitbucket", + "github.com": "github" + }; + var defaultProvider = "unknown"; + module.exports = function(url) { var m = url.match(/^(git)@([\w\.\d\-\_]+)(?:\/|:)([\w\.\d\-\_\/]+)/); if (m) { return { protocol: "ssh:", + scm: "git", + provider: providers[m[2]] || defaultProvider, auth: m[1], hostname: m[2], pathname: m[3] @@ -15,16 +23,19 @@ define(function(require, exports, module) { } var parsed = Url.parse(url); + if ( parsed && parsed.protocol && - parsed.protocol.match(/^(git|http|https):$/) && + parsed.protocol.match(/^(git|http|https|ssh):$/) && parsed.hostname && parsed.slashes && parsed.pathname ) return { protocol: parsed.protocol, + scm: parsed.pathname.match(/\.git$/) ? "git": "hg", + provider: providers[parsed.hostname] || defaultProvider, auth: parsed.auth || "", hostname: parsed.hostname, pathname: parsed.pathname.replace(/^\/+/, ""), diff --git a/node_modules/c9/scm_url_parse_test.js b/node_modules/c9/scm_url_parse_test.js new file mode 100644 index 00000000..34fb3367 --- /dev/null +++ b/node_modules/c9/scm_url_parse_test.js @@ -0,0 +1,69 @@ +#!/usr/bin/env node +/*global describe it before after beforeEach afterEach */ +"use strict"; + +"use server"; +"use mocha"; + +require("c9/inline-mocha")(module); +require("amd-loader"); + +var assert = require("assert"); +var parse = require("./scm_url_parse"); + +describe(__filename, function(){ + + describe("#parse", function() { + it("should parse ssh url", function(done) { + var url = parse("git@github.com:fjakobs/lispjs.git"); + assert.equal(url.scm, "git"); + assert.equal(url.protocol, "ssh:"); + assert.equal(url.auth, "git"); + assert.equal(url.hostname, "github.com"); + assert.equal(url.pathname, "fjakobs/lispjs.git"); + done(); + + }), + + it("should parse git url", function(done) { + var url = parse("git://github.com/fjakobs/lispjs.git"); + assert.equal(url.scm, "git"); + assert.equal(url.protocol, "git:"); + assert.equal(url.hostname, "github.com"); + assert.equal(url.pathname, "fjakobs/lispjs.git"); + done(); + + }), + + it("should parse https url", function(done) { + var url = parse("https://fjakobs@github.com/fjakobs/lispjs.git"); + assert.equal(url.protocol, "https:"); + assert.equal(url.scm, "git"); + assert.equal(url.auth, "fjakobs"); + assert.equal(url.hostname, "github.com"); + assert.equal(url.pathname, "fjakobs/lispjs.git"); + done(); + + }), + + it("should parse Bitbucket url", function(done) { + var url = parse("git@bitbucket.org/Richard/expressling.git"); + assert.equal(url.protocol, "ssh:"); + assert.equal(url.scm, "git"); + assert.equal(url.auth, "git"); + assert.equal(url.hostname, "bitbucket.org"); + assert.equal(url.pathname, "Richard/expressling.git"); + done(); + }); + + it("should parse Bitbucket hg ssh url", function(done) { + var url = parse("ssh://hg@bitbucket.org/fjakobs/juhu"); + assert.equal(url.protocol, "ssh:"); + assert.equal(url.scm, "hg"); + assert.equal(url.hostname, "bitbucket.org"); + assert.equal(url.pathname, "fjakobs/juhu"); + done(); + }); + }); + +}); \ No newline at end of file From f428acbb42e314d012e3e2f4f7b084f5e2d52680 Mon Sep 17 00:00:00 2001 From: Fabian Jakobs Date: Mon, 23 Mar 2015 12:57:14 +0000 Subject: [PATCH 062/160] use the new db code for project creation --- package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/package.json b/package.json index 107997a8..af85add3 100644 --- a/package.json +++ b/package.json @@ -96,6 +96,7 @@ "c9.ide.remote": "#f531d62cfb", "c9.ide.run": "#3349df7c52", "c9.ide.run.build": "#915e48b363", + "c9.ide.run.debug.xdebug": "#b91d23f48b", "c9.ide.save": "#a32a8f4346", "c9.ide.terminal.monitor": "#b0b4d03280", "c9.ide.theme.flat": "#b1d65fa9bb", From c6ef0a95bff1746b9e98cd5a3bc3ec5a054132ef Mon Sep 17 00:00:00 2001 From: Fabian Jakobs Date: Wed, 25 Mar 2015 12:25:08 +0000 Subject: [PATCH 063/160] prevent frontdoor from crashing --- node_modules/frontdoor/lib/types.js | 1 + 1 file changed, 1 insertion(+) diff --git a/node_modules/frontdoor/lib/types.js b/node_modules/frontdoor/lib/types.js index 9256c8aa..1980238a 100644 --- a/node_modules/frontdoor/lib/types.js +++ b/node_modules/frontdoor/lib/types.js @@ -53,6 +53,7 @@ exports.RegExp.prototype.parse = function(value) { return value.toString(); }; exports.RegExp.prototype.check = function(value) { + if (typeof value !== "string") return false; value = value.toString(); var match = value.match(this.re); return match && value === match[0]; From 298c5518f17fef4db237aaeb21c44d863ce2fcdd Mon Sep 17 00:00:00 2001 From: Fabian Jakobs Date: Wed, 25 Mar 2015 12:25:28 +0000 Subject: [PATCH 064/160] fix c9/ssh --- node_modules/c9/ssh.js | 108 ++++++++++++++++++++++------------------- 1 file changed, 58 insertions(+), 50 deletions(-) diff --git a/node_modules/c9/ssh.js b/node_modules/c9/ssh.js index 3dddbeb9..7d8f7917 100644 --- a/node_modules/c9/ssh.js +++ b/node_modules/c9/ssh.js @@ -5,9 +5,12 @@ * @license http://github.com/ajaxorg/node-sftp/blob/master/LICENSE MIT License */ +"use strict"; + var child_process = require("child_process"); var fs = require("fs"); -var uuid = require("node-uuid"); +var tmp = require("tmp"); +var debug = require("debug")("ssh"); exports.buildArgs = function(prvkeyFile, host) { var args = [ @@ -35,37 +38,42 @@ exports.buildArgs = function(prvkeyFile, host) { exports.spawnWithKeyFile = function(prvkeyFile, host, command, args) { var sshArgs = exports.buildArgs(prvkeyFile, host); - var args = sshArgs.concat(command ? [command] : []).concat(args || []); - console.log("executing: ssh " + args.join(" ")); + args = sshArgs.concat(command ? [command] : []).concat(args || []); + debug("executing: ssh " + args.join(" ")); return child_process.spawn("ssh", args); }; exports.writeKeyFile = function(prvkey, callback) { - var filename = Util.DEFAULT_TMPDIR + "/" + uuid(); - fs.writeFile(filename, prvkey, function(err) { - if (err) - return callback(err); - - fs.chmod(filename, "0600", function(err) { - callback(err, filename); + tmp.tmpName(function(err, filename) { + if (err) return callback(err); + + fs.writeFile(filename, prvkey, function(err) { + if (err) return callback(err); + + fs.chmod(filename, "0600", function(err) { + callback(err, filename); + }); }); }); }; exports.writeKeyFiles = function(prvkey, pubkey, callback) { - var filename = Util.DEFAULT_TMPDIR + "/" + uuid(); - fs.writeFile(filename, prvkey, function(err) { - if (err) - return callback(err); - - fs.chmod(filename, "0600", function(err) { - fs.writeFile(filename + ".pub", pubkey, function(err) { - if (err) - return callback(err); - - fs.chmod(filename + ".pub", "0600", function(err) { - callback(err, filename); + tmp.tmpName(function(err, filename) { + if (err) return callback(err); + + fs.writeFile(filename, prvkey, function(err) { + if (err) return callback(err); + + fs.chmod(filename, "0600", function(err) { + if (err) return callback(err); + + fs.writeFile(filename + ".pub", pubkey, function(err) { + if (err) return callback(err); + + fs.chmod(filename + ".pub", "0600", function(err) { + callback(err, filename); + }); }); }); }); @@ -74,6 +82,8 @@ exports.writeKeyFiles = function(prvkey, pubkey, callback) { exports.spawn = function(prvkey, host, command, args, callback) { exports.writeKeyFile(prvkey, function(err, filename) { + if (err) return callback(err); + var child = exports.spawnWithKeyFile(filename, host, command, args); child.on("exit", function(code) { @@ -106,33 +116,31 @@ exports.exec = function(prvkey, host, command, args, callback) { }; exports.generateKeyPair = function(email, callback) { - var tmp = process.env.TMP || process.env.TMPDIR || process.env.TMP_DIR || "/tmp"; - var filename = tmp + "/" + uuid(); - var phrase = ""; - - var command = "ssh-keygen -t rsa " + - "-f \"" + filename + "\" " + - "-P \"" + phrase + "\" " + - "-C \"" + email + "\" "; - - child_process.exec(command, function (err, stdout, stderr) { - if (err) - return callback(err); - - fs.readFile(filename + ".pub", function (err, pubkey) { - if (err) - return callback(err); - - fs.readFile(filename, function (err, prvkey) { - if (err) - return callback(err); - - fs.unlink(filename + ".pub", function() { - fs.unlink(filename, function() { - callback(null, pubkey.toString(), prvkey.toString()); + tmp.tmpName(function(err, filename) { + if (err) return callback(err); + + var phrase = ""; + + var command = "ssh-keygen -t rsa " + + "-f \"" + filename + "\" " + + "-P \"" + phrase + "\" " + + "-C \"" + email + "\" "; + + child_process.exec(command, function (err, stdout, stderr) { + if (err) return callback(err); + + fs.readFile(filename + ".pub", function (err, pubkey) { + if (err) return callback(err); + + fs.readFile(filename, function (err, prvkey) { + if (err) return callback(err); + + fs.unlink(filename + ".pub", function() { + fs.unlink(filename, function() { + callback(null, pubkey.toString(), prvkey.toString()); + }); }); }); - }); }); }); @@ -140,9 +148,9 @@ exports.generateKeyPair = function(email, callback) { exports.validateSSHKey = function(prvkey, host, callback) { exports.exec(prvkey, host, "", [], function(err, stdout, stderr) { - //console.log("out >> " + stdout) - //console.log("err >> " + stderr) - //console.log(err) + // console.log("out >> " + stdout); + // console.log("err >> " + stderr); + // console.log(err); callback(null, !stderr.match(/Permission denied \(.*publickey/)); }); }; From 94d56636a4e025f4eaf49ccf7070d5ed7f908555 Mon Sep 17 00:00:00 2001 From: Fabian Jakobs Date: Tue, 31 Mar 2015 12:57:20 +0000 Subject: [PATCH 065/160] show clone output in the IDE --- configs/client-default.js | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/configs/client-default.js b/configs/client-default.js index a01313ee..05dd0512 100644 --- a/configs/client-default.js +++ b/configs/client-default.js @@ -390,7 +390,34 @@ module.exports = function(options) { }, { packagePath: "plugins/c9.ide.console/console", - staticPrefix: staticPrefix + "/plugins/c9.ide.layout.classic" + staticPrefix: staticPrefix + "/plugins/c9.ide.layout.classic", + defaultState: options.project.scmurl ? { + type: "pane", + nodes: [{ + type: "tab", + editorType: "terminal", + active: "true", + document: { + changed: false, + meta: { + timestamp: Date.now() + }, + filter: true, + title: "bash - \"Cloning ...\"", + tooltip: "bash - \"Cloning ...\"", + terminal: { + id: "clone", + cwd: "" + } + } + }, { + type: "tab", + editorType: "immediate", + document: { + title: "Immediate" + } + }] + } : null }, // Layout & Panels From 888a30992ae1c104749b173909a09d0f0985637a Mon Sep 17 00:00:00 2001 From: Fabian Jakobs Date: Tue, 31 Mar 2015 12:59:23 +0000 Subject: [PATCH 066/160] add support for mercurial cloning --- configs/client-default.js | 1 - 1 file changed, 1 deletion(-) diff --git a/configs/client-default.js b/configs/client-default.js index 05dd0512..887ca652 100644 --- a/configs/client-default.js +++ b/configs/client-default.js @@ -14,7 +14,6 @@ module.exports = function(options) { var collab = options.collab; var packaging = options.packaging; var staticPrefix = options.staticPrefix; - var ssh = options.ssh; var nodeBin = options.nodeBin || ["node"]; var nodePath = options.nodePath || ""; From 7f86f73804c77e46319e4c5dc17666d11bb17138 Mon Sep 17 00:00:00 2001 From: Ruben Daniels Date: Tue, 31 Mar 2015 09:37:49 -0700 Subject: [PATCH 067/160] Merge pull request +6693 from c9/feature/xdebug Add Xdebug debugger --- configs/client-default.js | 2 ++ package.json | 6 +++--- plugins/c9.vfs.standalone/www/test.html | 2 +- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/configs/client-default.js b/configs/client-default.js index a01313ee..ef29d895 100644 --- a/configs/client-default.js +++ b/configs/client-default.js @@ -355,6 +355,8 @@ module.exports = function(options) { "plugins/c9.ide.run.debug/variables", "plugins/c9.ide.run.debug/watches", "plugins/c9.ide.run.debug/liveinspect", + + "plugins/c9.ide.run.debug.xdebug/xdebug", // Console { diff --git a/package.json b/package.json index 107997a8..2e54d29f 100644 --- a/package.json +++ b/package.json @@ -65,7 +65,7 @@ "c9.ide.find": "#989c06e6a7", "c9.ide.find.infiles": "#f98dfef554", "c9.ide.find.replace": "#e4daf722b8", - "c9.ide.run.debug": "#379e508be6", + "c9.ide.run.debug": "#5b3e30ce44", "c9.ide.ace.emmet": "#e5f1a92ac3", "c9.ide.ace.gotoline": "#4d1a93172c", "c9.ide.ace.keymaps": "#6c4bb65b1f", @@ -81,7 +81,7 @@ "c9.ide.format": "#4295dcca4d", "c9.ide.help.support": "#60e88f5680", "c9.ide.imgeditor": "#08bbc53578", - "c9.ide.immediate": "#e9ba147cc2", + "c9.ide.immediate": "#6845a93705", "c9.ide.installer": "#24e7d6f399", "c9.ide.mount": "#32e79866ee", "c9.ide.navigate": "#64156c7f4a", @@ -94,7 +94,7 @@ "c9.ide.readonly": "#f6f07bbe42", "c9.ide.recentfiles": "#7c099abf40", "c9.ide.remote": "#f531d62cfb", - "c9.ide.run": "#3349df7c52", + "c9.ide.run": "#dd21c8c310", "c9.ide.run.build": "#915e48b363", "c9.ide.save": "#a32a8f4346", "c9.ide.terminal.monitor": "#b0b4d03280", diff --git a/plugins/c9.vfs.standalone/www/test.html b/plugins/c9.vfs.standalone/www/test.html index 49578f7c..6df502d7 100644 --- a/plugins/c9.vfs.standalone/www/test.html +++ b/plugins/c9.vfs.standalone/www/test.html @@ -186,7 +186,7 @@ tests = JSON.parse(tests); allFiles = tests.list.slice(); - if (!files.length && location.href.slice(-1) == "?") { + if (!files.length && (location.search === "?" || location.search === "")) { var disabled = tests.blacklist.slice().sort(); var enabled = tests.list.slice().sort(); var all = "run all"; From 209e97de67b15691fc1572ac852ab34e57ff0161 Mon Sep 17 00:00:00 2001 From: Fabian Jakobs Date: Wed, 1 Apr 2015 08:36:16 +0000 Subject: [PATCH 068/160] add package.json in order to run tests and coverage in c9.api.project --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 26d542fd..1d4bcfff 100644 --- a/.gitignore +++ b/.gitignore @@ -11,6 +11,7 @@ plugins/c9.vfs.standalone/www/charts plugins/c9.ide.language.javascript.tern/util/sigs_ts plugins/c9.account.billing/node_modules/ plugins/c9.account/node_modules/ +plugins/c9.api.project/coverage/ scripts/build build/output build/standalone/ From cb368e4ab9ef845d1d38ffe3db2d088bc46af38f Mon Sep 17 00:00:00 2001 From: Fabian Jakobs Date: Thu, 2 Apr 2015 08:40:49 +0000 Subject: [PATCH 069/160] fix scm detection for specific git urls --- node_modules/c9/scm_url_parse.js | 22 ++++++++++++++++++---- node_modules/c9/scm_url_parse_test.js | 10 ++++++++++ 2 files changed, 28 insertions(+), 4 deletions(-) diff --git a/node_modules/c9/scm_url_parse.js b/node_modules/c9/scm_url_parse.js index 30b7da60..f7789bdd 100644 --- a/node_modules/c9/scm_url_parse.js +++ b/node_modules/c9/scm_url_parse.js @@ -31,17 +31,31 @@ define(function(require, exports, module) { parsed.hostname && parsed.slashes && parsed.pathname - ) + ) { + var scm; + var provider = providers[parsed.hostname] || defaultProvider; + switch (provider) { + case "github": + scm = "git"; + break; + case "bitbucket": + scm = parsed.pathname.match(/\.git$/) ? "git": "hg"; + break; + default: + scm = parsed.pathname.match(/\.git$/) ? "git": "hg"; + } return { protocol: parsed.protocol, - scm: parsed.pathname.match(/\.git$/) ? "git": "hg", - provider: providers[parsed.hostname] || defaultProvider, + scm: scm, + provider: provider, auth: parsed.auth || "", hostname: parsed.hostname, pathname: parsed.pathname.replace(/^\/+/, ""), full: url }; - else + } + else { return null; + } }; }); \ No newline at end of file diff --git a/node_modules/c9/scm_url_parse_test.js b/node_modules/c9/scm_url_parse_test.js index 34fb3367..44151967 100644 --- a/node_modules/c9/scm_url_parse_test.js +++ b/node_modules/c9/scm_url_parse_test.js @@ -64,6 +64,16 @@ describe(__filename, function(){ assert.equal(url.pathname, "fjakobs/juhu"); done(); }); + + it("should parse github URL without .git", function(done) { + var url = parse("https://github.com/arunoda/meteor-streams"); + assert.equal(url.protocol, "https:"); + assert.equal(url.scm, "git"); + assert.equal(url.provider, "github"); + assert.equal(url.hostname, "github.com"); + assert.equal(url.pathname, "arunoda/meteor-streams"); + done(); + }); }); }); \ No newline at end of file From 96f2e5740c5c2f9f0e7dc8166bed9413f83e7c1d Mon Sep 17 00:00:00 2001 From: Alex Brausewetter Date: Thu, 2 Apr 2015 12:23:24 +0000 Subject: [PATCH 070/160] Fix runner for non-dbg processes Fixes +6792 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 3d123598..7a5a8228 100644 --- a/package.json +++ b/package.json @@ -65,7 +65,7 @@ "c9.ide.find": "#989c06e6a7", "c9.ide.find.infiles": "#1b83cf12f1", "c9.ide.find.replace": "#e4daf722b8", - "c9.ide.run.debug": "#5b3e30ce44", + "c9.ide.run.debug": "#36864bf2b6", "c9.ide.ace.emmet": "#e5f1a92ac3", "c9.ide.ace.gotoline": "#4d1a93172c", "c9.ide.ace.keymaps": "#6c4bb65b1f", From 55d4527a0d553c3999db114c59b6f3b1539a18a9 Mon Sep 17 00:00:00 2001 From: Alex Brausewetter Date: Thu, 2 Apr 2015 12:43:18 +0000 Subject: [PATCH 071/160] Fix runner for non-dbg processes --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 7a5a8228..6e40a70e 100644 --- a/package.json +++ b/package.json @@ -65,7 +65,7 @@ "c9.ide.find": "#989c06e6a7", "c9.ide.find.infiles": "#1b83cf12f1", "c9.ide.find.replace": "#e4daf722b8", - "c9.ide.run.debug": "#36864bf2b6", + "c9.ide.run.debug": "#534281a4a1", "c9.ide.ace.emmet": "#e5f1a92ac3", "c9.ide.ace.gotoline": "#4d1a93172c", "c9.ide.ace.keymaps": "#6c4bb65b1f", From 757511070b6cda539bda153f709ef9c4dde35f7c Mon Sep 17 00:00:00 2001 From: Alex Brausewetter Date: Thu, 2 Apr 2015 12:52:02 +0000 Subject: [PATCH 072/160] Fix runner for non-dbg processes --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 6e40a70e..e268e572 100644 --- a/package.json +++ b/package.json @@ -65,7 +65,7 @@ "c9.ide.find": "#989c06e6a7", "c9.ide.find.infiles": "#1b83cf12f1", "c9.ide.find.replace": "#e4daf722b8", - "c9.ide.run.debug": "#534281a4a1", + "c9.ide.run.debug": "#3caa6a00cb", "c9.ide.ace.emmet": "#e5f1a92ac3", "c9.ide.ace.gotoline": "#4d1a93172c", "c9.ide.ace.keymaps": "#6c4bb65b1f", From 9cc2265cb1fe210b6bdfb9eee9a5056637eacb29 Mon Sep 17 00:00:00 2001 From: Alex Brausewetter Date: Thu, 2 Apr 2015 13:17:20 +0000 Subject: [PATCH 073/160] Refactor run calls for simpler flow --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index e268e572..1b954eb9 100644 --- a/package.json +++ b/package.json @@ -65,7 +65,7 @@ "c9.ide.find": "#989c06e6a7", "c9.ide.find.infiles": "#1b83cf12f1", "c9.ide.find.replace": "#e4daf722b8", - "c9.ide.run.debug": "#3caa6a00cb", + "c9.ide.run.debug": "#638e6b00b3", "c9.ide.ace.emmet": "#e5f1a92ac3", "c9.ide.ace.gotoline": "#4d1a93172c", "c9.ide.ace.keymaps": "#6c4bb65b1f", @@ -94,7 +94,7 @@ "c9.ide.readonly": "#f6f07bbe42", "c9.ide.recentfiles": "#7c099abf40", "c9.ide.remote": "#f531d62cfb", - "c9.ide.run": "#dd21c8c310", + "c9.ide.run": "#00719ba8fa", "c9.ide.run.build": "#915e48b363", "c9.ide.run.debug.xdebug": "#b91d23f48b", "c9.ide.save": "#a32a8f4346", From 9bd75f95b8ea4ed8f841486c879d2d5b6f0d1cae Mon Sep 17 00:00:00 2001 From: Lennart Kats Date: Thu, 2 Apr 2015 15:26:25 +0200 Subject: [PATCH 074/160] Twea minor API things --- package.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 107997a8..c47f08c3 100644 --- a/package.json +++ b/package.json @@ -59,7 +59,7 @@ "c9.ide.language.javascript.eslint": "#8832423ad1", "c9.ide.language.javascript.tern": "#7aab8b0b6a", "c9.ide.language.javascript.infer": "#ebb2daf81a", - "c9.ide.language.jsonalyzer": "#d82c60fcb9", + "c9.ide.language.jsonalyzer": "#f9db62af49", "c9.ide.collab": "#7009f69cb0", "c9.ide.local": "#2bfd7ff051", "c9.ide.find": "#989c06e6a7", @@ -96,6 +96,7 @@ "c9.ide.remote": "#f531d62cfb", "c9.ide.run": "#3349df7c52", "c9.ide.run.build": "#915e48b363", + "c9.ide.run.debug.xdebug": "#b91d23f48b", "c9.ide.save": "#a32a8f4346", "c9.ide.terminal.monitor": "#b0b4d03280", "c9.ide.theme.flat": "#b1d65fa9bb", From 153435750bdd43a545f15e53c3621469ec903d3a Mon Sep 17 00:00:00 2001 From: Lennart kats Date: Thu, 2 Apr 2015 13:53:41 +0000 Subject: [PATCH 075/160] Move out-of-date stuff to readme.io so we don't have to maintain it in two places --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index c47f08c3..7ebb86ed 100644 --- a/package.json +++ b/package.json @@ -49,7 +49,7 @@ }, "licenses": [], "c9plugins": { - "c9.ide.language": "#de3c644b88", + "c9.ide.language": "#afda452919", "c9.ide.language.css": "#afda1f867c", "c9.ide.language.generic": "#87a4a44671", "c9.ide.language.html": "#fa4833e117", From d247b9324b6b8380022188e414d6f163df81325f Mon Sep 17 00:00:00 2001 From: nightwing Date: Thu, 2 Apr 2015 18:23:51 +0400 Subject: [PATCH 076/160] do not throw on setting ready fixes +6754 --- plugins/c9.ide.editors/document.js | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/plugins/c9.ide.editors/document.js b/plugins/c9.ide.editors/document.js index a7ec71ab..c305ad8f 100644 --- a/plugins/c9.ide.editors/document.js +++ b/plugins/c9.ide.editors/document.js @@ -1,5 +1,5 @@ define(function(require, module, exports) { - main.consumes = ["Plugin", "UndoManager", "util"]; + main.consumes = ["Plugin", "UndoManager", "util", "error_handler"]; main.provides = ["Document"]; return main; @@ -7,6 +7,7 @@ define(function(require, module, exports) { var Plugin = imports.Plugin; var util = imports.util; var UndoManager = imports.UndoManager; + var reportError = imports.error_handler.reportError; function Document(options) { var plugin = new Plugin("Ajax.org", main.consumes); @@ -341,8 +342,11 @@ define(function(require, module, exports) { */ get ready(){ return ready; }, set ready(v) { - if (ready) throw new Error("Permission Denied"); - ready = true; + // try to find out why is this called twice + var e = new Error("Setting ready on ready document"); + if (ready) + reportError(e, {ready: ready}); + ready = e.stack || true; emit.sticky("ready", { doc: plugin }); }, /** From 4b1848ea0f683aca5e66d8e0e2b03fdc0ec5615e Mon Sep 17 00:00:00 2001 From: Robin Date: Sun, 5 Apr 2015 15:50:14 +0200 Subject: [PATCH 077/160] Imported debug plugin and moved to reloadPackage --- plugins/c9.ide.plugins/manager.js | 68 ++----------------------------- 1 file changed, 4 insertions(+), 64 deletions(-) diff --git a/plugins/c9.ide.plugins/manager.js b/plugins/c9.ide.plugins/manager.js index b1f990b0..981a23e8 100644 --- a/plugins/c9.ide.plugins/manager.js +++ b/plugins/c9.ide.plugins/manager.js @@ -3,7 +3,7 @@ define(function(require, exports, module) { main.consumes = [ "PreferencePanel", "settings", "ui", "util", "Form", "ext", "c9", "dialog.alert", "dialog.confirm", "layout", "proc", "menus", "commands", - "dialog.error", "tree.favorites", "fs", "tree" + "dialog.error", "tree.favorites", "fs", "tree", "plugin.debug" ]; main.provides = ["plugin.manager"]; return main; @@ -55,6 +55,7 @@ define(function(require, exports, module) { var confirm = imports["dialog.confirm"].show; var showError = imports["dialog.error"].show; var favs = imports["tree.favorites"]; + var pluginDebug = imports["plugin.debug"]; var search = require("../c9.ide.navigate/search"); var Tree = require("ace_tree/tree"); @@ -277,7 +278,6 @@ define(function(require, exports, module) { caption: "Reload", onclick: function(){ var item = datagrid.selection.getCursor(); - console.log(item); if (item.enabled && item.name) reload(item.name); } @@ -614,67 +614,7 @@ define(function(require, exports, module) { if (architect.lut[plugin].provides.indexOf(name) < 0) continue; - var unloaded = []; - var recurUnload = function(name){ - var plugin = architect.services[name]; - unloaded.push(name); - - // Find all the dependencies - var deps = ext.getDependencies(plugin.name); - - // Unload all the dependencies (and their deps) - deps.forEach(function(name){ - recurUnload(name); - }); - - // Unload plugin - plugin.unload(); - } - - // Recursively unload plugin - var p = architect.lut[plugin]; - if (p.provides) { // Plugin might not been initialized all the way - p.provides.forEach(function(name){ - recurUnload(name); - }); - } - - // create reverse lookup table - var rlut = {}; - for (var packagePath in architect.lut) { - var provides = architect.lut[packagePath].provides; - if (provides) { // Plugin might not been initialized all the way - provides.forEach(function(name){ - rlut[name] = packagePath; - }); - } - } - - // Build config of unloaded plugins - var config = [], done = {}; - unloaded.forEach(function(name){ - var packagePath = rlut[name]; - - // Make sure we include each plugin only once - if (done[packagePath]) return; - done[packagePath] = true; - - var options = architect.lut[packagePath]; - delete options.provides; - delete options.consumes; - delete options.setup; - - config.push(options); - - // Clear require cache - requirejs.undef(options.packagePath); // global - }); - - // Load all plugins again - architect.loadAdditionalPlugins(config, function(err){ - if (err) console.error(err); - }); - + pluginDebug.reloadPackage(plugin); return; } } @@ -761,4 +701,4 @@ define(function(require, exports, module) { "plugin.manager" : plugin }); } -}); \ No newline at end of file +}); From 88b32e0924bf93c2ce13f0ab5c6d56ec6cd3f0a4 Mon Sep 17 00:00:00 2001 From: Robin Date: Sun, 5 Apr 2015 15:57:39 +0200 Subject: [PATCH 078/160] Disabled reload button on packages --- plugins/c9.ide.plugins/manager.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/plugins/c9.ide.plugins/manager.js b/plugins/c9.ide.plugins/manager.js index 981a23e8..9058bfbc 100644 --- a/plugins/c9.ide.plugins/manager.js +++ b/plugins/c9.ide.plugins/manager.js @@ -347,9 +347,13 @@ define(function(require, exports, module) { if (CORE[item.name] || item.parent.parent && item.parent.parent.isType == "core") { btnUninstall.disable(); - btnReload.disable(); } else { btnUninstall.enable(); + } + + if (item.isPackage || CORE[item.name] || item.parent.parent && item.parent.parent.isType == "core") { + btnReload.disable(); + } else { btnReload.enable(); } From 65f932ba5559d0a6fe2269421637b00c3041d6d1 Mon Sep 17 00:00:00 2001 From: Tim Robinson Date: Tue, 7 Apr 2015 09:53:02 +0000 Subject: [PATCH 079/160] Merge remote-tracking branch 'origin/master' into fix/save-test-2 --- package.json | 2 +- plugins/c9.ide.editors/undomanager.js | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 5e1f600b..a969b56d 100644 --- a/package.json +++ b/package.json @@ -97,7 +97,7 @@ "c9.ide.run": "#00719ba8fa", "c9.ide.run.build": "#915e48b363", "c9.ide.run.debug.xdebug": "#b91d23f48b", - "c9.ide.save": "#a32a8f4346", + "c9.ide.save": "#b876d87d55", "c9.ide.terminal.monitor": "#b0b4d03280", "c9.ide.theme.flat": "#b1d65fa9bb", "c9.ide.threewaymerge": "#229382aa0b", diff --git a/plugins/c9.ide.editors/undomanager.js b/plugins/c9.ide.editors/undomanager.js index c88355c2..6ab1adc9 100644 --- a/plugins/c9.ide.editors/undomanager.js +++ b/plugins/c9.ide.editors/undomanager.js @@ -99,13 +99,13 @@ define(function(require, module, exports) { } function bookmark(index) { - mark = index !== undefined ? index : this.position; + mark = index !== undefined ? index : position; emit("change"); } function isAtBookmark(){ - return mark !== null && mark == this.position + return mark !== null && mark == position || mark === null && position == -1; } From c89d8246fd22116b7d2a79e1aa688722eae2688a Mon Sep 17 00:00:00 2001 From: Tim Robinson Date: Tue, 7 Apr 2015 10:29:10 +0000 Subject: [PATCH 080/160] Merge remote-tracking branch 'origin/master' into fix/test-ui-improvements Conflicts: plugins/c9.vfs.standalone/www/test.html --- README.md | 12 ++++++++++++ plugins/c9.vfs.standalone/www/test.html | 7 +++++-- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index c16e3ba8..2cdc0732 100644 --- a/README.md +++ b/README.md @@ -66,6 +66,18 @@ The following options can be used: Now visit [http://localhost:8181/ide.html](http://localhost:8181/ide.html) to load Cloud9. +#### Running Tests #### + +Run server side tests with: + + npm run test + +Run client side tests with: + + npm run ctest + +Then visit [http://localhost:8181/static/test](http://localhost:8181/static/test) in your browser. + #### Contributing #### We actively encourage and support contributions. We accept pull requests to the core as well as to any of the open source plugins and libraries that we maintain under the c9 organization on GitHub. diff --git a/plugins/c9.vfs.standalone/www/test.html b/plugins/c9.vfs.standalone/www/test.html index 6df502d7..11d99d24 100644 --- a/plugins/c9.vfs.standalone/www/test.html +++ b/plugins/c9.vfs.standalone/www/test.html @@ -189,7 +189,7 @@ if (!files.length && (location.search === "?" || location.search === "")) { var disabled = tests.blacklist.slice().sort(); var enabled = tests.list.slice().sort(); - var all = "run all"; + var all = "run all"; var initErr = document.getElementById('jserror').innerHTML; setupDom("" + "

Enabled tests" + all + "

" @@ -376,8 +376,11 @@ c9Test.run = run; c9Test.runAll = runAll; c9Test.allFiles = allFiles; + if (location.href.match(/\?runAllTests/)) { + files = allFiles; + } c9Test.find = function(r) { - return c9Test.allFiles.filter(function(x) { return x.match(r) }); + return c9Test.allFiles.filter(function(x) { return x.match(r); }); }; c9Test.reRun = c9Test.run; // wait for test.js to initialise chai From 13f79415216e464d929c40001715f05c8fce5fe1 Mon Sep 17 00:00:00 2001 From: Lennart Kats Date: Tue, 7 Apr 2015 14:06:40 +0200 Subject: [PATCH 081/160] Improve warnings --- package.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 107997a8..1ec2bf5a 100644 --- a/package.json +++ b/package.json @@ -54,7 +54,7 @@ "c9.ide.language.generic": "#87a4a44671", "c9.ide.language.html": "#fa4833e117", "c9.ide.language.html.diff": "#a7311cfc9f", - "c9.ide.language.javascript": "#ec9ecf31cf", + "c9.ide.language.javascript": "#8479d0a9c1", "c9.ide.language.javascript.immediate": "#9a2cce9121", "c9.ide.language.javascript.eslint": "#8832423ad1", "c9.ide.language.javascript.tern": "#7aab8b0b6a", @@ -96,6 +96,7 @@ "c9.ide.remote": "#f531d62cfb", "c9.ide.run": "#3349df7c52", "c9.ide.run.build": "#915e48b363", + "c9.ide.run.debug.xdebug": "#b91d23f48b", "c9.ide.save": "#a32a8f4346", "c9.ide.terminal.monitor": "#b0b4d03280", "c9.ide.theme.flat": "#b1d65fa9bb", From 9dbcde00bc1a022b917c145250ed362c8a055a4a Mon Sep 17 00:00:00 2001 From: Lennart Kats Date: Tue, 7 Apr 2015 14:07:09 +0200 Subject: [PATCH 082/160] Allow unregistering of jsonalyzer handlers --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 1ec2bf5a..08b87dec 100644 --- a/package.json +++ b/package.json @@ -59,7 +59,7 @@ "c9.ide.language.javascript.eslint": "#8832423ad1", "c9.ide.language.javascript.tern": "#7aab8b0b6a", "c9.ide.language.javascript.infer": "#ebb2daf81a", - "c9.ide.language.jsonalyzer": "#d82c60fcb9", + "c9.ide.language.jsonalyzer": "#7d09e3c599", "c9.ide.collab": "#7009f69cb0", "c9.ide.local": "#2bfd7ff051", "c9.ide.find": "#989c06e6a7", From 49e9748b119bf149ea284f45a04e929d6856e84f Mon Sep 17 00:00:00 2001 From: Tim Robinson Date: Tue, 7 Apr 2015 15:51:18 +0000 Subject: [PATCH 083/160] Increasing timeout of net_test --- plugins/c9.fs/net_test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/c9.fs/net_test.js b/plugins/c9.fs/net_test.js index 359281b2..c4ef2a30 100644 --- a/plugins/c9.fs/net_test.js +++ b/plugins/c9.fs/net_test.js @@ -40,7 +40,7 @@ require(["lib/architect/architect", "lib/chai/chai"], function (architect, chai) describe('net', function() { describe('connect()', function() { - this.timeout(10000); + this.timeout(30000); it("should connect to a port", function(done) { var code = From c5e91cd12662109e6e4f577837acbe6d94f561ff Mon Sep 17 00:00:00 2001 From: Tim Robinson Date: Tue, 7 Apr 2015 16:06:20 +0000 Subject: [PATCH 084/160] Increasing test timeout --- plugins/c9.core/c9_test.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/plugins/c9.core/c9_test.js b/plugins/c9.core/c9_test.js index ecb33c61..bdd0049b 100644 --- a/plugins/c9.core/c9_test.js +++ b/plugins/c9.core/c9_test.js @@ -37,6 +37,8 @@ require(["lib/architect/architect", "lib/chai/chai"], function (architect, chai) var vfs = imports.vfs; describe('c9', function() { + this.timeout(30000); + it('should send proper events during connecting', function(done) { // var count = 0; From d6097b990b5d68280bde3518454283a7d96912e4 Mon Sep 17 00:00:00 2001 From: Lennart Kats Date: Wed, 8 Apr 2015 10:47:16 +0200 Subject: [PATCH 085/160] Rename c9.analytics to analytics --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 5e1f600b..d6cdba33 100644 --- a/package.json +++ b/package.json @@ -94,7 +94,7 @@ "c9.ide.readonly": "#f6f07bbe42", "c9.ide.recentfiles": "#7c099abf40", "c9.ide.remote": "#f531d62cfb", - "c9.ide.run": "#00719ba8fa", + "c9.ide.run": "#d07c872ee1", "c9.ide.run.build": "#915e48b363", "c9.ide.run.debug.xdebug": "#b91d23f48b", "c9.ide.save": "#a32a8f4346", From 2c7e6ba414994fd38c4e494a15e1de3ea8d46032 Mon Sep 17 00:00:00 2001 From: Tim Robinson Date: Wed, 8 Apr 2015 09:34:51 +0000 Subject: [PATCH 086/160] Merge remote-tracking branch 'origin/master' into docker-ci2 --- .gitignore | 1 + package.json | 1 + 2 files changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index 1d4bcfff..5b0b4700 100644 --- a/.gitignore +++ b/.gitignore @@ -77,3 +77,4 @@ plugins/c9.proxy/haproxy-* npm-debug.log foo.js hello.js +plugins/c9.docker/containers/ci/files/github_c9_newclient \ No newline at end of file diff --git a/package.json b/package.json index a969b56d..e33c8f83 100644 --- a/package.json +++ b/package.json @@ -66,6 +66,7 @@ "c9.ide.find.infiles": "#1b83cf12f1", "c9.ide.find.replace": "#e4daf722b8", "c9.ide.run.debug": "#638e6b00b3", + "c9.automate": "#86bf1ee1ca", "c9.ide.ace.emmet": "#e5f1a92ac3", "c9.ide.ace.gotoline": "#4d1a93172c", "c9.ide.ace.keymaps": "#6c4bb65b1f", From cdf2dc6ba71b88227d4f48baab418e4a3c922657 Mon Sep 17 00:00:00 2001 From: Lennart Kats Date: Wed, 8 Apr 2015 11:38:41 +0200 Subject: [PATCH 087/160] Merge remote-tracking branch 'origin/master' into metrics-plugin Conflicts: plugins/c9.ide.metrics/metrics_analytics.js --- configs/client-default.js | 4 ++++ configs/standalone.js | 1 + plugins/c9.nodeapi/util.js | 4 +++- plugins/c9.vfs.client/endpoint.js | 7 +++++-- plugins/c9.vfs.client/vfs.ping.js | 3 ++- plugins/c9.vfs.client/vfs_client.js | 9 +++++++-- plugins/c9.vfs.standalone/standalone.js | 2 +- plugins/c9.vfs.standalone/www/test.js | 4 ++++ settings/standalone.js | 2 ++ 9 files changed, 29 insertions(+), 7 deletions(-) diff --git a/configs/client-default.js b/configs/client-default.js index 3c5cbac5..ea4f66e0 100644 --- a/configs/client-default.js +++ b/configs/client-default.js @@ -156,6 +156,10 @@ module.exports = function(options) { staticPrefix: staticPrefix + "/plugins/c9.ide.layout.classic", defaultShow: options.local }, + { + packagePath: "plugins/c9.ide.metrics/metrics", + hosted: hosted + }, // Ace && Commands "plugins/c9.ide.keys/commands", diff --git a/configs/standalone.js b/configs/standalone.js index 22a63d77..7cad6942 100644 --- a/configs/standalone.js +++ b/configs/standalone.js @@ -150,6 +150,7 @@ module.exports = function(config, optimist) { "./c9.nodeapi/nodeapi", { packagePath: "./c9.vfs.standalone/standalone", + sdk: config.sdk, local: config.local, packed: argv.packed, collab: config.collab, diff --git a/plugins/c9.nodeapi/util.js b/plugins/c9.nodeapi/util.js index 9fbff737..9628e42c 100644 --- a/plugins/c9.nodeapi/util.js +++ b/plugins/c9.nodeapi/util.js @@ -463,7 +463,9 @@ function isPrimitive(arg) { exports.isPrimitive = isPrimitive; function isBuffer(arg) { - return arg instanceof Buffer; + // Not relevant outside of node + // return arg instanceof Buffer; + return false; } exports.isBuffer = isBuffer; diff --git a/plugins/c9.vfs.client/endpoint.js b/plugins/c9.vfs.client/endpoint.js index 102b5723..1ed7ee29 100644 --- a/plugins/c9.vfs.client/endpoint.js +++ b/plugins/c9.vfs.client/endpoint.js @@ -1,7 +1,7 @@ define(function(require, exports, module) { "use strict"; - main.consumes = ["Plugin", "auth", "http", "api", "error_handler"]; + main.consumes = ["Plugin", "auth", "http", "api", "error_handler", "metrics"]; main.provides = ["vfs.endpoint"]; return main; @@ -11,6 +11,7 @@ define(function(require, exports, module) { var http = imports.http; var api = imports.api; var errorHandler = imports.error_handler; + var metrics = imports.metrics; /***** Initialization *****/ @@ -168,8 +169,10 @@ define(function(require, exports, module) { // just take the first server that doesn't return an error (function tryNext(i) { - if (i >= servers.length) + if (i >= servers.length) { + metrics.increment("connect_failed_all", 1, true); return callback(new Error("Disconnected: Could not reach your workspace. Please try again later.")); + } var server = servers[i]; auth.request(server.url + "/" + options.pid, { diff --git a/plugins/c9.vfs.client/vfs.ping.js b/plugins/c9.vfs.client/vfs.ping.js index 13ae4c44..fcebcf6e 100644 --- a/plugins/c9.vfs.client/vfs.ping.js +++ b/plugins/c9.vfs.client/vfs.ping.js @@ -1,7 +1,7 @@ define(function(require, exports, module) { "use strict"; - main.consumes = ["Plugin", "ext", "c9", "vfs"]; + main.consumes = ["Plugin", "ext", "c9", "vfs", "metrics"]; main.provides = ["vfs.ping"]; return main; @@ -9,6 +9,7 @@ define(function(require, exports, module) { var Plugin = imports.Plugin; var c9 = imports.c9; var ext = imports.ext; + var metrics = imports.metrics; /***** Initialization *****/ diff --git a/plugins/c9.vfs.client/vfs_client.js b/plugins/c9.vfs.client/vfs_client.js index b44e2c30..0398223f 100644 --- a/plugins/c9.vfs.client/vfs_client.js +++ b/plugins/c9.vfs.client/vfs_client.js @@ -7,7 +7,10 @@ define(function(require, exports, module) { "use strict"; - main.consumes = ["Plugin", "auth", "vfs.endpoint", "dialog.error", "dialog.alert", "error_handler"]; + main.consumes = [ + "Plugin", "auth", "vfs.endpoint", "dialog.error", + "dialog.alert", "error_handler", "metrics" + ]; main.provides = ["vfs"]; return main; @@ -34,6 +37,7 @@ define(function(require, exports, module) { var hideError = errorDialog.hide; var showAlert = imports["dialog.alert"].show; var errorHandler = imports.error_handler; + var metrics = imports.metrics; var eio = require("engine.io"); var Consumer = require("vfs-socket/consumer").Consumer; @@ -50,7 +54,7 @@ define(function(require, exports, module) { var plugin = new Plugin("Ajax.org", main.consumes); var emit = plugin.getEmitter(); - // Give reference to vfs to plugin + // Give reference to vfs to plugins errorDialog.vfs = plugin; var buffer = []; @@ -209,6 +213,7 @@ define(function(require, exports, module) { vfsEndpoint.get(protocolVersion, function(err, urls) { if (err) { + metrics.increment("connect_failed", 1, true); if (!showErrorTimer) { showErrorTimer = setTimeout(function() { showVfsError(showErrorTimerMessage); diff --git a/plugins/c9.vfs.standalone/standalone.js b/plugins/c9.vfs.standalone/standalone.js index 55d2c8a4..ff449c2f 100644 --- a/plugins/c9.vfs.standalone/standalone.js +++ b/plugins/c9.vfs.standalone/standalone.js @@ -48,7 +48,7 @@ function plugin(options, imports, register) { imports.connect.use(api); api.get("/", function(req, res, next) { - res.writeHead(302, { "Location": "/ide.html" }); + res.writeHead(302, { "Location": options.sdk ? "/ide.html" : "/static/places.html" }); res.end(); }); diff --git a/plugins/c9.vfs.standalone/www/test.js b/plugins/c9.vfs.standalone/www/test.js index a4ac2afb..414b1b37 100644 --- a/plugins/c9.vfs.standalone/www/test.js +++ b/plugins/c9.vfs.standalone/www/test.js @@ -407,6 +407,10 @@ require([ } }, + "metrics": { + getLastPing: function() { throw Error("Not implemented"); }, + getLastest: function() { throw Error("Not implemented"); }, + }, error_handler: {reportError: function(){}}, installer: { show: function(){} diff --git a/settings/standalone.js b/settings/standalone.js index 92a162c9..11821818 100644 --- a/settings/standalone.js +++ b/settings/standalone.js @@ -11,6 +11,7 @@ module.exports = function(manifest, installPath) { var builders = require("../plugins/c9.ide.run.build/builders_list"); var workspaceDir = path.resolve(__dirname + "/../"); + var sdk = !path.existsSync(workspaceDir + "/.sdkconfig.js"); if (process.platform == "win32" && process.env.HOME === undefined) { process.env.HOME = process.env.HOMEDRIVE + process.env.HOMEPATH; @@ -37,6 +38,7 @@ module.exports = function(manifest, installPath) { home: home, uid: "-1", dev: true, + sdk: sdk, pid: process.pid, port: process.env.PORT || 8181, host: process.env.IP || "0.0.0.0", From b251c4ea98de4426310a084d0fcfe35c8f7de5f2 Mon Sep 17 00:00:00 2001 From: Lennart Kats Date: Wed, 8 Apr 2015 17:10:36 +0200 Subject: [PATCH 088/160] Use log() method also used in server-side error.logger, metrics, analytics --- plugins/c9.ide.errorhandler/raygun_error_handler.js | 4 +++- plugins/c9.ide.errorhandler/simple_error_handler.js | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/plugins/c9.ide.errorhandler/raygun_error_handler.js b/plugins/c9.ide.errorhandler/raygun_error_handler.js index 43e46239..12be8f71 100644 --- a/plugins/c9.ide.errorhandler/raygun_error_handler.js +++ b/plugins/c9.ide.errorhandler/raygun_error_handler.js @@ -75,7 +75,9 @@ define(function(require, exports, module) { /***** Register and define API *****/ plugin.freezePublicAPI({ - reportError: reportError + /** @deprecated Use log() instead. */ + reportError: reportError, + log: reportError }); register(null, { "error_handler" : plugin }); diff --git a/plugins/c9.ide.errorhandler/simple_error_handler.js b/plugins/c9.ide.errorhandler/simple_error_handler.js index d9b71362..36f530d1 100644 --- a/plugins/c9.ide.errorhandler/simple_error_handler.js +++ b/plugins/c9.ide.errorhandler/simple_error_handler.js @@ -108,7 +108,9 @@ define(function(require, exports, module) { /***** Register and define API *****/ plugin.freezePublicAPI({ - reportError: reportError + /** @deprecated Use log() instead. */ + reportError: reportError, + log: reportError }); register(null, { "error_handler" : plugin }); From 04b3fa397da55e983300a50045f143918fbb3f1e Mon Sep 17 00:00:00 2001 From: Lennart Kats Date: Wed, 8 Apr 2015 17:12:15 +0200 Subject: [PATCH 089/160] Remove existsSync hack --- settings/standalone.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/settings/standalone.js b/settings/standalone.js index 11821818..fae2cb23 100644 --- a/settings/standalone.js +++ b/settings/standalone.js @@ -11,7 +11,7 @@ module.exports = function(manifest, installPath) { var builders = require("../plugins/c9.ide.run.build/builders_list"); var workspaceDir = path.resolve(__dirname + "/../"); - var sdk = !path.existsSync(workspaceDir + "/.sdkconfig.js"); + var sdk = !!manifest.sdk; if (process.platform == "win32" && process.env.HOME === undefined) { process.env.HOME = process.env.HOMEDRIVE + process.env.HOMEPATH; From dfe60b63c1dccc368ffc2e03c3eaa92c85b86080 Mon Sep 17 00:00:00 2001 From: nightwing Date: Wed, 8 Apr 2015 21:35:50 +0400 Subject: [PATCH 090/160] fix typo --- settings/standalone.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/settings/standalone.js b/settings/standalone.js index fae2cb23..d7cf1d34 100644 --- a/settings/standalone.js +++ b/settings/standalone.js @@ -11,7 +11,7 @@ module.exports = function(manifest, installPath) { var builders = require("../plugins/c9.ide.run.build/builders_list"); var workspaceDir = path.resolve(__dirname + "/../"); - var sdk = !!manifest.sdk; + var sdk = !manifest.sdk; if (process.platform == "win32" && process.env.HOME === undefined) { process.env.HOME = process.env.HOMEDRIVE + process.env.HOMEPATH; From 65f9eb0c2f6911576a9f0a03133f45c1f438cd4d Mon Sep 17 00:00:00 2001 From: Ruben Daniels Date: Sat, 28 Mar 2015 00:00:46 +0000 Subject: [PATCH 091/160] Automate and installer plugin for the installer. --- configs/client-default.js | 11 +++++++++-- package.json | 3 ++- plugins/c9.vfs.client/vfs_client.js | 28 +--------------------------- 3 files changed, 12 insertions(+), 30 deletions(-) diff --git a/configs/client-default.js b/configs/client-default.js index ea4f66e0..c17cbb38 100644 --- a/configs/client-default.js +++ b/configs/client-default.js @@ -92,7 +92,6 @@ module.exports = function(options) { "plugins/c9.vfs.client/vfs.ping", { packagePath: "plugins/c9.vfs.client/vfs_client", - withInstall: false, debug: debug, installPath: options.installPath, dashboardUrl: options.dashboardUrl, @@ -495,7 +494,15 @@ module.exports = function(options) { }, "plugins/c9.ide.panels/panel", "plugins/c9.ide.panels/area", - "plugins/c9.ide.installer/installer_mock", + + // Installer + "plugins/c9.ide.installer/automate", + "plugins/c9.ide.installer/ui", + { + packagePath: "plugins/c9.ide.installer/installer", + homeDir: options.homeDir, + installSelfCheck: true + }, // Previewer { diff --git a/package.json b/package.json index 18807e8b..fc9fcc6e 100644 --- a/package.json +++ b/package.json @@ -66,6 +66,7 @@ "c9.ide.find.infiles": "#1b83cf12f1", "c9.ide.find.replace": "#e4daf722b8", "c9.ide.run.debug": "#638e6b00b3", + "c9.automate": "#86bf1ee1ca", "c9.ide.ace.emmet": "#e5f1a92ac3", "c9.ide.ace.gotoline": "#4d1a93172c", "c9.ide.ace.keymaps": "#6c4bb65b1f", @@ -82,7 +83,7 @@ "c9.ide.help.support": "#60e88f5680", "c9.ide.imgeditor": "#08bbc53578", "c9.ide.immediate": "#6845a93705", - "c9.ide.installer": "#24e7d6f399", + "c9.ide.installer": "#875687d14c", "c9.ide.mount": "#32e79866ee", "c9.ide.navigate": "#64156c7f4a", "c9.ide.newresource": "#9a7464cc47", diff --git a/plugins/c9.vfs.client/vfs_client.js b/plugins/c9.vfs.client/vfs_client.js index 0398223f..a873bce5 100644 --- a/plugins/c9.vfs.client/vfs_client.js +++ b/plugins/c9.vfs.client/vfs_client.js @@ -1,9 +1,3 @@ -/** - * Smith.io client - * - * @copyright 2013, Ajax.org B.V. - */ - define(function(require, exports, module) { "use strict"; @@ -58,7 +52,6 @@ define(function(require, exports, module) { errorDialog.vfs = plugin; var buffer = []; - var installChecked = false; var withInstall = options.withInstall; var dashboardUrl = options.dashboardUrl; var region, vfsBaseUrl, homeUrl, projectUrl, pingUrl, serviceUrl; @@ -287,13 +280,8 @@ define(function(require, exports, module) { return; } - if (!installChecked) { - checkInstall(_vfs, callback); - installChecked = true; - } - else { + if (emit("beforeConnect", { done: callback, vfs: _vfs }) !== false) callback(); - } function callback(shouldReconnect) { if (shouldReconnect) { @@ -320,19 +308,6 @@ define(function(require, exports, module) { }); } - function checkInstall(vfs, callback) { - if (!withInstall) - return callback(false); - - vfs.stat(options.installPath + "/installed", {}, function(err, stat) { - if (err && err.code == "ENOENT") { - emit.sticky("install", { callback: callback, vfs: vfs }); - } - else - callback(); - }); - } - var bufferedVfsCalls = []; function vfsCall(method, path, options, callback) { if (Array.isArray(method)) @@ -354,7 +329,6 @@ define(function(require, exports, module) { id = null; buffer = []; - installChecked = false; region = null; vfsBaseUrl = null; homeUrl = null; From 13cf3673593daf5046d614c987f6558e50fe9832 Mon Sep 17 00:00:00 2001 From: Ruben Daniels Date: Sun, 29 Mar 2015 00:10:52 +0000 Subject: [PATCH 092/160] Add commands for the installer --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index fc9fcc6e..63f44eb3 100644 --- a/package.json +++ b/package.json @@ -83,7 +83,7 @@ "c9.ide.help.support": "#60e88f5680", "c9.ide.imgeditor": "#08bbc53578", "c9.ide.immediate": "#6845a93705", - "c9.ide.installer": "#875687d14c", + "c9.ide.installer": "#b56fb9a697", "c9.ide.mount": "#32e79866ee", "c9.ide.navigate": "#64156c7f4a", "c9.ide.newresource": "#9a7464cc47", From 746326859ea76d0eb75f175e1173cdc32f239107 Mon Sep 17 00:00:00 2001 From: Ruben Daniels Date: Sun, 29 Mar 2015 00:17:58 +0000 Subject: [PATCH 093/160] Added to client-default --- configs/client-default.js | 8 +++++++- package.json | 2 +- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/configs/client-default.js b/configs/client-default.js index c17cbb38..e2630ada 100644 --- a/configs/client-default.js +++ b/configs/client-default.js @@ -496,8 +496,14 @@ module.exports = function(options) { "plugins/c9.ide.panels/area", // Installer + "plugins/c9.ide.installer/gui", "plugins/c9.ide.installer/automate", - "plugins/c9.ide.installer/ui", + "plugins/c9.ide.installer/commands/centos", + "plugins/c9.ide.installer/commands/bash", + "plugins/c9.ide.installer/commands/npm", + "plugins/c9.ide.installer/commands/symlink", + "plugins/c9.ide.installer/commands/tar.gz", + "plugins/c9.ide.installer/commands/ubuntu", { packagePath: "plugins/c9.ide.installer/installer", homeDir: options.homeDir, diff --git a/package.json b/package.json index 63f44eb3..b6ebdd6a 100644 --- a/package.json +++ b/package.json @@ -83,7 +83,7 @@ "c9.ide.help.support": "#60e88f5680", "c9.ide.imgeditor": "#08bbc53578", "c9.ide.immediate": "#6845a93705", - "c9.ide.installer": "#b56fb9a697", + "c9.ide.installer": "#a4cefa7992", "c9.ide.mount": "#32e79866ee", "c9.ide.navigate": "#64156c7f4a", "c9.ide.newresource": "#9a7464cc47", From 7e66c37bc6b14c079c7be93b15bedb16bd988c65 Mon Sep 17 00:00:00 2001 From: Ruben Daniels Date: Mon, 30 Mar 2015 01:13:30 +0000 Subject: [PATCH 094/160] First step towards generic instaler GUI --- configs/client-default.js | 5 +++-- package.json | 4 ++-- plugins/c9.ide.dialog/dialog.js | 5 +++++ settings/standalone.js | 1 + 4 files changed, 11 insertions(+), 4 deletions(-) diff --git a/configs/client-default.js b/configs/client-default.js index e2630ada..94c4ae24 100644 --- a/configs/client-default.js +++ b/configs/client-default.js @@ -1,6 +1,5 @@ var assert = require("assert"); - module.exports = function(options) { assert(options.staticPrefix, "Option 'staticPrefix' must be set"); assert(options.workspaceDir, "Option 'workspaceDir' must be set"); @@ -47,6 +46,7 @@ module.exports = function(options) { env: options.env || "devel", home: options.home, platform: options.platform, + architecture: options.architecture, installed: options.installed, projectId: options.project.id, projectName: options.projectName || "Project", @@ -507,7 +507,8 @@ module.exports = function(options) { { packagePath: "plugins/c9.ide.installer/installer", homeDir: options.homeDir, - installSelfCheck: true + installSelfCheck: true, + installPath: options.installPath }, // Previewer diff --git a/package.json b/package.json index b6ebdd6a..61d2f441 100644 --- a/package.json +++ b/package.json @@ -77,13 +77,13 @@ "c9.ide.behaviors": "#6aad7006a0", "c9.ide.closeconfirmation": "#a28bfd8272", "c9.ide.configuration": "#b8470f4107", - "c9.ide.dialog.wizard": "#a588b64050", + "c9.ide.dialog.wizard": "#4a9be8ae70", "c9.ide.fontawesome": "#781602c5d8", "c9.ide.format": "#f51451ac57", "c9.ide.help.support": "#60e88f5680", "c9.ide.imgeditor": "#08bbc53578", "c9.ide.immediate": "#6845a93705", - "c9.ide.installer": "#a4cefa7992", + "c9.ide.installer": "#0e473cecfb", "c9.ide.mount": "#32e79866ee", "c9.ide.navigate": "#64156c7f4a", "c9.ide.newresource": "#9a7464cc47", diff --git a/plugins/c9.ide.dialog/dialog.js b/plugins/c9.ide.dialog/dialog.js index 452bf1e8..1f61dea5 100644 --- a/plugins/c9.ide.dialog/dialog.js +++ b/plugins/c9.ide.dialog/dialog.js @@ -465,6 +465,11 @@ define(function(require, module, exports) { * @readonly */ get modal(){ return modal; }, + /** + * @property {Boolean} visible + * @readonly + */ + get visible(){ return dialog && dialog.visible; }, /** * @property {Boolean} allowClose */ diff --git a/settings/standalone.js b/settings/standalone.js index d7cf1d34..c65482db 100644 --- a/settings/standalone.js +++ b/settings/standalone.js @@ -44,6 +44,7 @@ module.exports = function(manifest, installPath) { host: process.env.IP || "0.0.0.0", testing: false, platform: process.platform, + arch: process.arch, tmux: path.join(installPath, "bin/tmux"), nakBin: path.join(__dirname, "../node_modules/nak/bin/nak"), bashBin: "bash", From 3d777d8b1961043a63ab21703dfe4cf30f99b59f Mon Sep 17 00:00:00 2001 From: Ruben Daniels Date: Mon, 30 Mar 2015 01:36:34 +0000 Subject: [PATCH 095/160] GUI now starts installation process. --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 61d2f441..b2701107 100644 --- a/package.json +++ b/package.json @@ -77,13 +77,13 @@ "c9.ide.behaviors": "#6aad7006a0", "c9.ide.closeconfirmation": "#a28bfd8272", "c9.ide.configuration": "#b8470f4107", - "c9.ide.dialog.wizard": "#4a9be8ae70", + "c9.ide.dialog.wizard": "#9ec0eafb28", "c9.ide.fontawesome": "#781602c5d8", "c9.ide.format": "#f51451ac57", "c9.ide.help.support": "#60e88f5680", "c9.ide.imgeditor": "#08bbc53578", "c9.ide.immediate": "#6845a93705", - "c9.ide.installer": "#0e473cecfb", + "c9.ide.installer": "#f0d8fe9d26", "c9.ide.mount": "#32e79866ee", "c9.ide.navigate": "#64156c7f4a", "c9.ide.newresource": "#9a7464cc47", From f00b6bf581d4cbcf07168c0c877fb7bfed27905c Mon Sep 17 00:00:00 2001 From: Ruben Daniels Date: Tue, 31 Mar 2015 03:09:05 +0000 Subject: [PATCH 096/160] UI Fixes --- package.json | 4 ++-- plugins/c9.ide.dialog/dialog.js | 21 +++++++++++++------ .../c9.ide.layout.classic/less/bk-window.less | 10 ++++++++- 3 files changed, 26 insertions(+), 9 deletions(-) diff --git a/package.json b/package.json index b2701107..5ec20f56 100644 --- a/package.json +++ b/package.json @@ -77,13 +77,13 @@ "c9.ide.behaviors": "#6aad7006a0", "c9.ide.closeconfirmation": "#a28bfd8272", "c9.ide.configuration": "#b8470f4107", - "c9.ide.dialog.wizard": "#9ec0eafb28", + "c9.ide.dialog.wizard": "#3641096e13", "c9.ide.fontawesome": "#781602c5d8", "c9.ide.format": "#f51451ac57", "c9.ide.help.support": "#60e88f5680", "c9.ide.imgeditor": "#08bbc53578", "c9.ide.immediate": "#6845a93705", - "c9.ide.installer": "#f0d8fe9d26", + "c9.ide.installer": "#ca02a6312b", "c9.ide.mount": "#32e79866ee", "c9.ide.navigate": "#64156c7f4a", "c9.ide.newresource": "#9a7464cc47", diff --git a/plugins/c9.ide.dialog/dialog.js b/plugins/c9.ide.dialog/dialog.js index 1f61dea5..f240aa71 100644 --- a/plugins/c9.ide.dialog/dialog.js +++ b/plugins/c9.ide.dialog/dialog.js @@ -67,10 +67,12 @@ define(function(require, module, exports) { var left = options.left; var top = options.top; var width = options.width || 512; + var height = options.height; var title = options.title; var heading = options.heading; var body = options.body; var custom = options.custom; + var className = options.class; var modal = options.modal; var zindex = options.zindex; var allowClose = options.allowClose; @@ -101,9 +103,13 @@ define(function(require, module, exports) { modal: modal, buttons: allowClose ? "close" : "", width: width, + height: height, zindex: zindex || "", skin: "bk-window2", - class: "relative" + (options.dark ? " dark" : ""), + class: "dialog " + + (height ? "" : "relative") + + (options.dark ? " dark" : "") + + (className ? " " + className : ""), childNodes: [ new ui.vbox({ id: "titles", @@ -439,11 +445,14 @@ define(function(require, module, exports) { dialog.setAttribute("height", v ? dialog.getHeight() : ""); dialog.setAttribute("width", v ? dialog.getWidth() : ""); - dialog.setAttribute("class", v ? "" : "relative"); - titles.setAttribute("anchors", v ? "0 0 46 0" : ""); - buttons.setAttribute("bottom", v ? "0" : ""); - buttons.setAttribute("left", v ? "0" : ""); - buttons.setAttribute("right", v ? "0" : ""); + dialog.setAttribute("class", "dialog " + + (v ? "" : "relative") + + (options.dark ? " dark" : "") + + (className ? " " + className : "")); + // titles.setAttribute("anchors", v ? "0 0 46 0" : ""); + // buttons.setAttribute("bottom", v ? "0" : ""); + // buttons.setAttribute("left", v ? "0" : ""); + // buttons.setAttribute("right", v ? "0" : ""); dialog.setAttribute("resizable", v); }, /** diff --git a/plugins/c9.ide.layout.classic/less/bk-window.less b/plugins/c9.ide.layout.classic/less/bk-window.less index 5f48e02d..aee25a91 100644 --- a/plugins/c9.ide.layout.classic/less/bk-window.less +++ b/plugins/c9.ide.layout.classic/less/bk-window.less @@ -129,4 +129,12 @@ right: 20px; top: 25px; } - \ No newline at end of file + +.bk-window.dialog .bk-container{ + display: flex; + flex-direction: column; +} +.bk-window.dialog .bk-container > div:first-child{ + flex: 1; + position: relative; +} \ No newline at end of file From 5039e34d3c9e9b99056683b1b460e0ef669ad632 Mon Sep 17 00:00:00 2001 From: Ruben Daniels Date: Tue, 31 Mar 2015 16:34:26 +0000 Subject: [PATCH 097/160] Work on adding checkbox to ace tree --- .../ace_tree/lib/ace_tree/data_provider.js | 1 - .../ace_tree/lib/ace_tree/layer/cells.js | 1 + .../lib/ace_tree/mouse/default_handlers.js | 2 ++ package.json | 2 +- plugins/c9.ide.ui/widgets.list.js | 17 +++++++++++++++++ 5 files changed, 21 insertions(+), 2 deletions(-) diff --git a/node_modules/ace_tree/lib/ace_tree/data_provider.js b/node_modules/ace_tree/lib/ace_tree/data_provider.js index b57d6a77..1f4926c3 100644 --- a/node_modules/ace_tree/lib/ace_tree/data_provider.js +++ b/node_modules/ace_tree/lib/ace_tree/data_provider.js @@ -319,7 +319,6 @@ var DataProvider = function(root) { index = Math.min(Math.max(0, index), this.visibleItems.length - 1); return this.visibleItems[index]; }; - this.getIconHTML = function(node) { return ""; }; diff --git a/node_modules/ace_tree/lib/ace_tree/layer/cells.js b/node_modules/ace_tree/lib/ace_tree/layer/cells.js index 58721e89..fa583eff 100644 --- a/node_modules/ace_tree/lib/ace_tree/layer/cells.js +++ b/node_modules/ace_tree/lib/ace_tree/layer/cells.js @@ -98,6 +98,7 @@ var Cells = function(parentEl) { ? (provider.isOpen(datarow) ? "open" : "closed") : "empty") + "'>" + + (provider.getCheckboxHTML ? provider.getCheckboxHTML(datarow) : "") + provider.getIconHTML(datarow) + ( provider.getContentHTML ? provider.getContentHTML(datarow) : "" 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 2cab0499..ba2d0b18 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 @@ -136,6 +136,8 @@ function DefaultHandlers(mouseHandler) { } } this.$clickNode = null; + } else if (dom.hasCssClass(target, "checkbox")) { + editor.selection.toggleSelect(node); } else if (dom.hasCssClass(target, "icon-ok")) { if (ev.getShiftKey()) { editor.selection.expandSelection(node, null, true); diff --git a/package.json b/package.json index 5ec20f56..07003e15 100644 --- a/package.json +++ b/package.json @@ -83,7 +83,7 @@ "c9.ide.help.support": "#60e88f5680", "c9.ide.imgeditor": "#08bbc53578", "c9.ide.immediate": "#6845a93705", - "c9.ide.installer": "#ca02a6312b", + "c9.ide.installer": "#f996c8aa17", "c9.ide.mount": "#32e79866ee", "c9.ide.navigate": "#64156c7f4a", "c9.ide.newresource": "#9a7464cc47", diff --git a/plugins/c9.ide.ui/widgets.list.js b/plugins/c9.ide.ui/widgets.list.js index 1306b2a9..8bf49e0f 100644 --- a/plugins/c9.ide.ui/widgets.list.js +++ b/plugins/c9.ide.ui/widgets.list.js @@ -254,6 +254,18 @@ define(function(require, exports, module) { ? new AceTreeEditor(acetree) : null; }, + /** + * + */ + get enableCheckboxes(){ return model.getCheckboxHTML ? true : false; }, + set enableCheckboxes(value){ + model.getCheckboxHTML = value + ? function(node){ + return ""; + } + : null; + }, /** * */ @@ -339,6 +351,11 @@ define(function(require, exports, module) { */ get getIconHTML(){ return model.getIconHTML; }, set getIconHTML(fn){ model.getIconHTML = fn; }, + /** + * + */ + get getCheckboxHTML(){ return model.getCheckboxHTML; }, + set getCheckboxHTML(fn){ model.getCheckboxHTML = fn; }, /** * */ From cc9334a30eba88fb64f05218876793a238922ccc Mon Sep 17 00:00:00 2001 From: Ruben Daniels Date: Tue, 31 Mar 2015 16:53:23 +0000 Subject: [PATCH 098/160] Added check toggling --- .../ace_tree/lib/ace_tree/mouse/default_handlers.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) 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 ba2d0b18..4fe20010 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 @@ -137,7 +137,11 @@ function DefaultHandlers(mouseHandler) { } this.$clickNode = null; } else if (dom.hasCssClass(target, "checkbox")) { - editor.selection.toggleSelect(node); + var nodes = editor.selection.getSelectedNodes(); + node.isChecked = !node.isChecked; + nodes.forEach(function(n){ n.isChecked = node.isChecked }); + provider._signal(node.isChecked ? "check" : "uncheck", nodes); + provider._signal("change") } else if (dom.hasCssClass(target, "icon-ok")) { if (ev.getShiftKey()) { editor.selection.expandSelection(node, null, true); From 71bfc0da7f9c7f90f46226e399fa0fa7edaa95ef Mon Sep 17 00:00:00 2001 From: Ruben Daniels Date: Tue, 31 Mar 2015 22:17:41 +0000 Subject: [PATCH 099/160] A working installer --- configs/client-default.js | 5 +++- .../lib/ace_tree/mouse/default_handlers.js | 8 +++--- package.json | 4 +-- plugins/c9.fs/proc.js | 20 ++++++++++++++ plugins/c9.fs/proc2pty.js | 27 +++++++++++++++++++ plugins/c9.ide.dialog/dialog.js | 26 +++++++++--------- plugins/c9.ide.ui/widgets.datagrid.js | 5 ++-- plugins/c9.ide.ui/widgets.less | 21 ++++++++++++++- plugins/c9.ide.ui/widgets.list.js | 12 ++++++--- 9 files changed, 104 insertions(+), 24 deletions(-) create mode 100644 plugins/c9.fs/proc2pty.js diff --git a/configs/client-default.js b/configs/client-default.js index 94c4ae24..e6bdcd70 100644 --- a/configs/client-default.js +++ b/configs/client-default.js @@ -502,7 +502,10 @@ module.exports = function(options) { "plugins/c9.ide.installer/commands/bash", "plugins/c9.ide.installer/commands/npm", "plugins/c9.ide.installer/commands/symlink", - "plugins/c9.ide.installer/commands/tar.gz", + { + packagePath: "plugins/c9.ide.installer/commands/tar.gz", + bashBin: options.bashBin + }, "plugins/c9.ide.installer/commands/ubuntu", { packagePath: "plugins/c9.ide.installer/installer", 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 4fe20010..7fd87c06 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 @@ -137,10 +137,12 @@ function DefaultHandlers(mouseHandler) { } this.$clickNode = null; } else if (dom.hasCssClass(target, "checkbox")) { - var nodes = editor.selection.getSelectedNodes(); node.isChecked = !node.isChecked; - nodes.forEach(function(n){ n.isChecked = node.isChecked }); - provider._signal(node.isChecked ? "check" : "uncheck", nodes); + if (inSelection) { + var nodes = editor.selection.getSelectedNodes(); + nodes.forEach(function(n){ n.isChecked = node.isChecked }); + } + provider._signal(node.isChecked ? "check" : "uncheck", inSelection ? nodes : [node]); provider._signal("change") } else if (dom.hasCssClass(target, "icon-ok")) { if (ev.getShiftKey()) { diff --git a/package.json b/package.json index 07003e15..dd171e66 100644 --- a/package.json +++ b/package.json @@ -77,13 +77,13 @@ "c9.ide.behaviors": "#6aad7006a0", "c9.ide.closeconfirmation": "#a28bfd8272", "c9.ide.configuration": "#b8470f4107", - "c9.ide.dialog.wizard": "#3641096e13", + "c9.ide.dialog.wizard": "#e03db0af98", "c9.ide.fontawesome": "#781602c5d8", "c9.ide.format": "#f51451ac57", "c9.ide.help.support": "#60e88f5680", "c9.ide.imgeditor": "#08bbc53578", "c9.ide.immediate": "#6845a93705", - "c9.ide.installer": "#f996c8aa17", + "c9.ide.installer": "#a04eed6a5f", "c9.ide.mount": "#32e79866ee", "c9.ide.navigate": "#64156c7f4a", "c9.ide.newresource": "#9a7464cc47", diff --git a/plugins/c9.fs/proc.js b/plugins/c9.fs/proc.js index 2ce7ece1..9aac1923 100644 --- a/plugins/c9.fs/proc.js +++ b/plugins/c9.fs/proc.js @@ -7,11 +7,14 @@ define(function(require, exports, module) { var vfs = imports.vfs; var Plugin = imports.Plugin; + var ProcessToPty = require("./proc2pty"); + /***** Initialization *****/ var plugin = new Plugin("Ajax.org", main.consumes); var emit = plugin.getEmitter(); + var installMode; var tmuxName = options.tmuxName; /***** Register and define API *****/ @@ -171,6 +174,15 @@ define(function(require, exports, module) { * @singleton **/ plugin.freezePublicAPI({ + /** + * @ignore + */ + get installMode(){ return installMode; }, + set installMode(_vfs) { + vfs = _vfs || imports.vfs; + installMode = _vfs ? true : false; + }, + _events: [ /** * @event beforeSpawn Fires right before a file is executed @@ -334,6 +346,14 @@ define(function(require, exports, module) { * @fires afterPty */ pty: function(path, options, callback) { + if (installMode) { + plugin.spawn(path, options, function(err, process){ + if (err) return callback(err); + callback(null, new ProcessToPty(process)); + }); + return; + } + emit("beforePty", {path: path, options: options}); if (!options.encoding) diff --git a/plugins/c9.fs/proc2pty.js b/plugins/c9.fs/proc2pty.js new file mode 100644 index 00000000..249cda20 --- /dev/null +++ b/plugins/c9.fs/proc2pty.js @@ -0,0 +1,27 @@ +define(function(require, exports, module) { + var EventEmitter = require("events").EventEmitter; + + module.exports = function(process){ + var pty = new EventEmitter(); + pty.write = function(data){ + process.stdin.write(data); + }; + pty.resize = function(){}; + pty.destroy = + pty.end = function(){ + process.kill(); + }; + + process.stdout.on("data", function(chunk){ + pty.emit("data", chunk); + }); + process.stderr.on("data", function(chunk){ + pty.emit("data", chunk); + }); + process.on("exit", function(code){ + pty.emit("exit", code); + }); + + return pty; + } +}); \ No newline at end of file diff --git a/plugins/c9.ide.dialog/dialog.js b/plugins/c9.ide.dialog/dialog.js index f240aa71..c2b5da11 100644 --- a/plugins/c9.ide.dialog/dialog.js +++ b/plugins/c9.ide.dialog/dialog.js @@ -71,24 +71,17 @@ define(function(require, module, exports) { var title = options.title; var heading = options.heading; var body = options.body; - var custom = options.custom; var className = options.class; var modal = options.modal; var zindex = options.zindex; var allowClose = options.allowClose; var elements = options.elements || []; - var resizable = options.resizable || false; + var resizable = false; var widths = options.widths || {}; var count = 0; var dialog, buttons, titles; - var loaded; - function load(){ - if (loaded) return; - loaded = true; - } - var drawn = false; function draw(htmlNode) { if (drawn) return; @@ -168,8 +161,8 @@ define(function(require, module, exports) { html: titles.$int }); - if (resizable) - plugin.resizable = resizable; + if (options.resizable) + plugin.resizable = options.resizable; } /***** Method *****/ @@ -365,6 +358,11 @@ define(function(require, module, exports) { return node; } + plugin.on("unload", function(){ + drawn = false; + resizable = false; + }); + /***** Register and define API *****/ plugin.freezePublicAPI.baseclass(); @@ -443,12 +441,16 @@ define(function(require, module, exports) { resizable = v; if (!dialog) return; - dialog.setAttribute("height", v ? dialog.getHeight() : ""); - dialog.setAttribute("width", v ? dialog.getWidth() : ""); + if (!height) + dialog.setAttribute("height", v ? dialog.getHeight() : ""); + if (!width) + dialog.setAttribute("width", v ? dialog.getWidth() : ""); + dialog.setAttribute("class", "dialog " + (v ? "" : "relative") + (options.dark ? " dark" : "") + (className ? " " + className : "")); + // titles.setAttribute("anchors", v ? "0 0 46 0" : ""); // buttons.setAttribute("bottom", v ? "0" : ""); // buttons.setAttribute("left", v ? "0" : ""); diff --git a/plugins/c9.ide.ui/widgets.datagrid.js b/plugins/c9.ide.ui/widgets.datagrid.js index fbf087ee..329c3764 100644 --- a/plugins/c9.ide.ui/widgets.datagrid.js +++ b/plugins/c9.ide.ui/widgets.datagrid.js @@ -16,9 +16,10 @@ define(function(require, exports, module) { if (!options) throw new Error("options are required"); if (!options.baseName) - options.baseName = "tree"; + options.baseName = "datagrid"; + if (!options.theme) - options.theme = "blackdg"; + options.theme = "blackdg ace-tree-" + (options.baseName || "datagrid"); var model = new TreeModel(); model.columns = options.columns; diff --git a/plugins/c9.ide.ui/widgets.less b/plugins/c9.ide.ui/widgets.less index f70ce2f8..7035b5c0 100644 --- a/plugins/c9.ide.ui/widgets.less +++ b/plugins/c9.ide.ui/widgets.less @@ -1,7 +1,7 @@ .custom-tree.ace_tree { background: transparent; border: none; - font: 11px Tahoma, Arial; + // font: @general-font-size @general-font-family; .font-smoothing(@tree-font-smoothing) } @@ -43,6 +43,25 @@ line-height: 1.5em; } +.ace_tree .tree-row .checkbox{ + outline: 1px solid rgba(0, 0, 0, 0.16); + background: white; + width: 13px; + height: 13px; + margin: -2px 5px 0 0px; + display: inline-block; + vertical-align: middle; + pointer-events: auto; +} +.ace_tree .tree-row .checkbox.checked{ + background: white url("@{image-path}/@{menu-check}"); + background-position: -2px -2px; +} +.ace_tree .tree-row .checkbox.half-checked{ + background: #DDDDDD url("@{image-path}/@{menu-check}"); + background-position: -2px -2px; +} + .custom-tree.ace_tree .tree-row .toggler{ .image-2x("@{tree-arrow}", 20px, 10px); margin: 0 1px 0 0; diff --git a/plugins/c9.ide.ui/widgets.list.js b/plugins/c9.ide.ui/widgets.list.js index 8bf49e0f..f2c76caf 100644 --- a/plugins/c9.ide.ui/widgets.list.js +++ b/plugins/c9.ide.ui/widgets.list.js @@ -56,6 +56,7 @@ define(function(require, exports, module) { ? new TreeModel() : new ListModel()); model.filterCaseInsensitive = true; + model.$sortNodes = false; if (!options.rowHeight) options.rowHeight = 23; @@ -80,7 +81,9 @@ define(function(require, exports, module) { scrollbarVisibilityChanged: acetree.renderer, resize: acetree.renderer, expand: model, - collapse: model + collapse: model, + check: model, + uncheck: model }; emit.sticky("draw"); @@ -262,7 +265,10 @@ define(function(require, exports, module) { model.getCheckboxHTML = value ? function(node){ return ""; + + (node.isChecked == -1 + ? "half-checked " + : (node.isChecked ? "checked " : "")) + + "'>"; } : null; }, @@ -360,7 +366,7 @@ define(function(require, exports, module) { * */ get sort(){ return model.sort; }, - set sort(fn){ + set sort(fn){ debugger; model.$sortNodes = fn ? true : false; model.$sorted = fn ? true : false; model.sort = fn; From c5014956da32ad286f2d392d693cbff48f835a5e Mon Sep 17 00:00:00 2001 From: Ruben Daniels Date: Tue, 31 Mar 2015 22:49:59 +0000 Subject: [PATCH 100/160] Added missing interface and keyboard support for checkbox --- package.json | 4 ++-- plugins/c9.ide.ui/widgets.list.js | 40 ++++++++++++++++++++++++++++++- 2 files changed, 41 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index dd171e66..69a5e20f 100644 --- a/package.json +++ b/package.json @@ -77,13 +77,13 @@ "c9.ide.behaviors": "#6aad7006a0", "c9.ide.closeconfirmation": "#a28bfd8272", "c9.ide.configuration": "#b8470f4107", - "c9.ide.dialog.wizard": "#e03db0af98", + "c9.ide.dialog.wizard": "#dc21825084", "c9.ide.fontawesome": "#781602c5d8", "c9.ide.format": "#f51451ac57", "c9.ide.help.support": "#60e88f5680", "c9.ide.imgeditor": "#08bbc53578", "c9.ide.immediate": "#6845a93705", - "c9.ide.installer": "#a04eed6a5f", + "c9.ide.installer": "#3a484a66b5", "c9.ide.mount": "#32e79866ee", "c9.ide.navigate": "#64156c7f4a", "c9.ide.newresource": "#9a7464cc47", diff --git a/plugins/c9.ide.ui/widgets.list.js b/plugins/c9.ide.ui/widgets.list.js index f2c76caf..22333c6f 100644 --- a/plugins/c9.ide.ui/widgets.list.js +++ b/plugins/c9.ide.ui/widgets.list.js @@ -88,7 +88,7 @@ define(function(require, exports, module) { emit.sticky("draw"); } - + plugin.on("load", function(){ if (options.container) plugin.attachTo(options.container); @@ -271,6 +271,20 @@ define(function(require, exports, module) { + "'>"; } : null; + + if (value) { + acetree.commands.bindKey("Space", function(e) { + var nodes = acetree.selection.getSelectedNodes(); + var node = acetree.selection.getCursor(); + node.isChecked = !node.isChecked; + nodes.forEach(function(n){ n.isChecked = node.isChecked }); + model._signal(node.isChecked ? "check" : "uncheck", nodes); + model._signal("change"); + }); + } + else { + // @TODO + } }, /** * @@ -440,6 +454,14 @@ define(function(require, exports, module) { * @event afterRename Fires */ "afterRename", + /** + * @event check Fires + */ + "check", + /** + * @event uncheck Fires + */ + "uncheck", /** * @event select Fires */ @@ -517,6 +539,22 @@ define(function(require, exports, module) { disable: function(){ return acetree.enable(); }, + /** + * + */ + check: function(node, half){ + node.isChecked = half ? -1 : true; + model._signal("check", node); + model._signal("change"); + }, + /** + * + */ + uncheck: function(node){ + node.isChecked = false; + model._signal("uncheck", node); + model._signal("change"); + }, /** * */ From 1cdf7358d0fed67221b64f4326c1287f65333565 Mon Sep 17 00:00:00 2001 From: Ruben Daniels Date: Tue, 31 Mar 2015 23:07:17 +0000 Subject: [PATCH 101/160] Now with working exclusion of non selected items --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 69a5e20f..2d17ee3d 100644 --- a/package.json +++ b/package.json @@ -83,7 +83,7 @@ "c9.ide.help.support": "#60e88f5680", "c9.ide.imgeditor": "#08bbc53578", "c9.ide.immediate": "#6845a93705", - "c9.ide.installer": "#3a484a66b5", + "c9.ide.installer": "#cb5f4d70c6", "c9.ide.mount": "#32e79866ee", "c9.ide.navigate": "#64156c7f4a", "c9.ide.newresource": "#9a7464cc47", From d41c82b003ab9e8d4464adc4bf45453ec6183b83 Mon Sep 17 00:00:00 2001 From: Ruben Daniels Date: Wed, 1 Apr 2015 00:07:23 +0000 Subject: [PATCH 102/160] Fully integrated installer back into cloud9 --- configs/client-default.js | 12 +++++++++--- package.json | 6 +++--- plugins/c9.core/c9.js | 6 ++++++ plugins/c9.ide.ui/widgets.list.js | 2 +- plugins/c9.vfs.standalone/www/install.html | 1 + 5 files changed, 20 insertions(+), 7 deletions(-) diff --git a/configs/client-default.js b/configs/client-default.js index e6bdcd70..042f7642 100644 --- a/configs/client-default.js +++ b/configs/client-default.js @@ -46,7 +46,7 @@ module.exports = function(options) { env: options.env || "devel", home: options.home, platform: options.platform, - architecture: options.architecture, + arch: options.arch, installed: options.installed, projectId: options.project.id, projectName: options.projectName || "Project", @@ -222,7 +222,10 @@ module.exports = function(options) { autoInit: !options.local }, "plugins/c9.ide.ui/forms", - "plugins/c9.ide.ui/widgets.list", + { + packagePath: "plugins/c9.ide.ui/widgets.list", + staticPrefix: staticPrefix + "/plugins/c9.ide.layout.classic" + }, "plugins/c9.ide.ui/widgets.tree", "plugins/c9.ide.ui/widgets.datagrid", "plugins/c9.ide.ui/focus", @@ -496,7 +499,10 @@ module.exports = function(options) { "plugins/c9.ide.panels/area", // Installer - "plugins/c9.ide.installer/gui", + { + packagePath: "plugins/c9.ide.installer/gui", + staticPrefix: staticPrefix + "/plugins/c9.ide.layout.classic", + }, "plugins/c9.ide.installer/automate", "plugins/c9.ide.installer/commands/centos", "plugins/c9.ide.installer/commands/bash", diff --git a/package.json b/package.json index 2d17ee3d..3823e6fb 100644 --- a/package.json +++ b/package.json @@ -60,9 +60,9 @@ "c9.ide.language.javascript.tern": "#7aab8b0b6a", "c9.ide.language.javascript.infer": "#ebb2daf81a", "c9.ide.language.jsonalyzer": "#efa4426f1f", - "c9.ide.collab": "#7009f69cb0", + "c9.ide.collab": "#ce60175443", "c9.ide.local": "#2bfd7ff051", - "c9.ide.find": "#989c06e6a7", + "c9.ide.find": "#9fc6f4cfa5", "c9.ide.find.infiles": "#1b83cf12f1", "c9.ide.find.replace": "#e4daf722b8", "c9.ide.run.debug": "#638e6b00b3", @@ -83,7 +83,7 @@ "c9.ide.help.support": "#60e88f5680", "c9.ide.imgeditor": "#08bbc53578", "c9.ide.immediate": "#6845a93705", - "c9.ide.installer": "#cb5f4d70c6", + "c9.ide.installer": "#d9153a0489", "c9.ide.mount": "#32e79866ee", "c9.ide.navigate": "#64156c7f4a", "c9.ide.newresource": "#9a7464cc47", diff --git a/plugins/c9.core/c9.js b/plugins/c9.core/c9.js index 502871af..0e310961 100644 --- a/plugins/c9.core/c9.js +++ b/plugins/c9.core/c9.js @@ -24,6 +24,7 @@ define(function(require, module, exports) { var loaded = false; var loggedIn = false; + var isReady = false; var state = 0; var STORAGE = 1 << 1; @@ -109,6 +110,7 @@ define(function(require, module, exports) { } function ready(){ + isReady = true; emit.sticky("ready"); } @@ -284,6 +286,10 @@ define(function(require, module, exports) { */ get startLoadTime(){ return startLoadTime; }, set startLoadTime(v){ startLoadTime = v; }, + /** + * + */ + get isReady(){ return isReady; }, _events: [ /** diff --git a/plugins/c9.ide.ui/widgets.list.js b/plugins/c9.ide.ui/widgets.list.js index 22333c6f..87fc71b8 100644 --- a/plugins/c9.ide.ui/widgets.list.js +++ b/plugins/c9.ide.ui/widgets.list.js @@ -19,7 +19,7 @@ define(function(require, exports, module) { }; ui.on("load", function(){ - ui.insertCss(require("text!./widgets.less"), ui); + ui.insertCss(require("text!./widgets.less"), options.staticPrefix, ui); }); /***** Constructors *****/ diff --git a/plugins/c9.vfs.standalone/www/install.html b/plugins/c9.vfs.standalone/www/install.html index d7e3dce9..0cee36a6 100644 --- a/plugins/c9.vfs.standalone/www/install.html +++ b/plugins/c9.vfs.standalone/www/install.html @@ -35,6 +35,7 @@ app.on("ready", function(){ // if (app.services.c9.debug) window.app = app.services; + app.services.c9.ready(); }); }); }); From b2ba535e26d1bde9496cdf7ed7407608bca85626 Mon Sep 17 00:00:00 2001 From: Ruben Daniels Date: Wed, 1 Apr 2015 00:57:02 +0000 Subject: [PATCH 103/160] Cleanup --- configs/client-default.js | 2 +- configs/standalone.js | 1 + package.json | 4 ++-- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/configs/client-default.js b/configs/client-default.js index 042f7642..69da96b9 100644 --- a/configs/client-default.js +++ b/configs/client-default.js @@ -503,7 +503,7 @@ module.exports = function(options) { packagePath: "plugins/c9.ide.installer/gui", staticPrefix: staticPrefix + "/plugins/c9.ide.layout.classic", }, - "plugins/c9.ide.installer/automate", + "plugins/c9.automate/automate", "plugins/c9.ide.installer/commands/centos", "plugins/c9.ide.installer/commands/bash", "plugins/c9.ide.installer/commands/npm", diff --git a/configs/standalone.js b/configs/standalone.js index 7cad6942..40a6cd7f 100644 --- a/configs/standalone.js +++ b/configs/standalone.js @@ -139,6 +139,7 @@ module.exports = function(config, optimist) { whitelist: { "c9.core": true, "c9.fs": true, + "c9.automate": true, "c9.login.client": true, "c9.vfs.client": true, "c9.cli.bridge": true, diff --git a/package.json b/package.json index 3823e6fb..3aa0423d 100644 --- a/package.json +++ b/package.json @@ -66,7 +66,7 @@ "c9.ide.find.infiles": "#1b83cf12f1", "c9.ide.find.replace": "#e4daf722b8", "c9.ide.run.debug": "#638e6b00b3", - "c9.automate": "#86bf1ee1ca", + "c9.automate": "#0e0c83401f", "c9.ide.ace.emmet": "#e5f1a92ac3", "c9.ide.ace.gotoline": "#4d1a93172c", "c9.ide.ace.keymaps": "#6c4bb65b1f", @@ -83,7 +83,7 @@ "c9.ide.help.support": "#60e88f5680", "c9.ide.imgeditor": "#08bbc53578", "c9.ide.immediate": "#6845a93705", - "c9.ide.installer": "#d9153a0489", + "c9.ide.installer": "#ea145f1cf3", "c9.ide.mount": "#32e79866ee", "c9.ide.navigate": "#64156c7f4a", "c9.ide.newresource": "#9a7464cc47", From d87ddd79ec9565c5ad6fb5bee7096c2125d585e4 Mon Sep 17 00:00:00 2001 From: Ruben Daniels Date: Wed, 1 Apr 2015 00:58:14 +0000 Subject: [PATCH 104/160] Remove artificial error --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 3aa0423d..b36d0e11 100644 --- a/package.json +++ b/package.json @@ -66,7 +66,7 @@ "c9.ide.find.infiles": "#1b83cf12f1", "c9.ide.find.replace": "#e4daf722b8", "c9.ide.run.debug": "#638e6b00b3", - "c9.automate": "#0e0c83401f", + "c9.automate": "#86bf1ee1ca", "c9.ide.ace.emmet": "#e5f1a92ac3", "c9.ide.ace.gotoline": "#4d1a93172c", "c9.ide.ace.keymaps": "#6c4bb65b1f", @@ -83,7 +83,7 @@ "c9.ide.help.support": "#60e88f5680", "c9.ide.imgeditor": "#08bbc53578", "c9.ide.immediate": "#6845a93705", - "c9.ide.installer": "#ea145f1cf3", + "c9.ide.installer": "#97aedbc249", "c9.ide.mount": "#32e79866ee", "c9.ide.navigate": "#64156c7f4a", "c9.ide.newresource": "#9a7464cc47", From de878d4b23395e86617c5de2d612b73a425a7ca2 Mon Sep 17 00:00:00 2001 From: Ruben Daniels Date: Wed, 1 Apr 2015 01:18:40 +0000 Subject: [PATCH 105/160] Fix tests --- plugins/c9.vfs.standalone/www/test.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/plugins/c9.vfs.standalone/www/test.js b/plugins/c9.vfs.standalone/www/test.js index 414b1b37..77f0ae67 100644 --- a/plugins/c9.vfs.standalone/www/test.js +++ b/plugins/c9.vfs.standalone/www/test.js @@ -400,6 +400,7 @@ require([ console.warn(msg); } }, + "installer": { createSession : function(){} }, "run.gui": { getElement : function(){} }, "debugger": {debug: function() {}, stop: function(){}}, "focusManager": { @@ -412,9 +413,6 @@ require([ getLastest: function() { throw Error("Not implemented"); }, }, error_handler: {reportError: function(){}}, - installer: { - show: function(){} - }, proc: { execFile: function() {}, spawn: function() {} From 26079366c1432c490be43e83a76d506165f77978 Mon Sep 17 00:00:00 2001 From: Ruben Daniels Date: Wed, 1 Apr 2015 01:38:39 +0000 Subject: [PATCH 106/160] Fixes bug that called each task of a set --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index b36d0e11..94e6acf8 100644 --- a/package.json +++ b/package.json @@ -66,7 +66,7 @@ "c9.ide.find.infiles": "#1b83cf12f1", "c9.ide.find.replace": "#e4daf722b8", "c9.ide.run.debug": "#638e6b00b3", - "c9.automate": "#86bf1ee1ca", + "c9.automate": "#dd868bb7fe", "c9.ide.ace.emmet": "#e5f1a92ac3", "c9.ide.ace.gotoline": "#4d1a93172c", "c9.ide.ace.keymaps": "#6c4bb65b1f", @@ -83,7 +83,7 @@ "c9.ide.help.support": "#60e88f5680", "c9.ide.imgeditor": "#08bbc53578", "c9.ide.immediate": "#6845a93705", - "c9.ide.installer": "#97aedbc249", + "c9.ide.installer": "#303774d147", "c9.ide.mount": "#32e79866ee", "c9.ide.navigate": "#64156c7f4a", "c9.ide.newresource": "#9a7464cc47", From 943b890cf6a4d176fab20e4da9ca3f3275e24a95 Mon Sep 17 00:00:00 2001 From: Ruben Daniels Date: Wed, 1 Apr 2015 02:08:52 +0000 Subject: [PATCH 107/160] A proper abort flow --- package.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 94e6acf8..082baa81 100644 --- a/package.json +++ b/package.json @@ -66,7 +66,7 @@ "c9.ide.find.infiles": "#1b83cf12f1", "c9.ide.find.replace": "#e4daf722b8", "c9.ide.run.debug": "#638e6b00b3", - "c9.automate": "#dd868bb7fe", + "c9.automate": "#7e2612a88c", "c9.ide.ace.emmet": "#e5f1a92ac3", "c9.ide.ace.gotoline": "#4d1a93172c", "c9.ide.ace.keymaps": "#6c4bb65b1f", @@ -77,13 +77,13 @@ "c9.ide.behaviors": "#6aad7006a0", "c9.ide.closeconfirmation": "#a28bfd8272", "c9.ide.configuration": "#b8470f4107", - "c9.ide.dialog.wizard": "#dc21825084", + "c9.ide.dialog.wizard": "#305ff018ea", "c9.ide.fontawesome": "#781602c5d8", "c9.ide.format": "#f51451ac57", "c9.ide.help.support": "#60e88f5680", "c9.ide.imgeditor": "#08bbc53578", "c9.ide.immediate": "#6845a93705", - "c9.ide.installer": "#303774d147", + "c9.ide.installer": "#34bcccefb6", "c9.ide.mount": "#32e79866ee", "c9.ide.navigate": "#64156c7f4a", "c9.ide.newresource": "#9a7464cc47", From 4e9c87f80b40e8428613566a15b4c02033d9449b Mon Sep 17 00:00:00 2001 From: Ruben Daniels Date: Wed, 1 Apr 2015 02:15:02 +0000 Subject: [PATCH 108/160] Execute npm install after installing a plugin --- package.json | 2 +- plugins/c9.cli.publish/publish.js | 24 +++++++++++++++++++++--- 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index 082baa81..9ec64936 100644 --- a/package.json +++ b/package.json @@ -66,7 +66,7 @@ "c9.ide.find.infiles": "#1b83cf12f1", "c9.ide.find.replace": "#e4daf722b8", "c9.ide.run.debug": "#638e6b00b3", - "c9.automate": "#7e2612a88c", + "c9.automate": "#86bf1ee1ca", "c9.ide.ace.emmet": "#e5f1a92ac3", "c9.ide.ace.gotoline": "#4d1a93172c", "c9.ide.ace.keymaps": "#6c4bb65b1f", diff --git a/plugins/c9.cli.publish/publish.js b/plugins/c9.cli.publish/publish.js index 17ebcd32..02aefdc5 100644 --- a/plugins/c9.cli.publish/publish.js +++ b/plugins/c9.cli.publish/publish.js @@ -741,9 +741,27 @@ define(function(require, exports, module) { ? new Error("Failed to unpack package") : null; - // Done - callback(err, { - version: version + proc.spawn(join(process.env.HOME, ".c9/node/bin/npm"), { + args: ["install"], + cwd: packagePath + }, function(err, p){ + if (err) return callback(err); + + if (verbose) { + p.stdout.on("data", function(c){ + process.stdout.write(c.toString("utf8")); + }); + p.stderr.on("data", function(c){ + process.stderr.write(c.toString("utf8")); + }); + } + + p.on("exit", function(code){ + // Done + callback(err, { + version: version + }); + }); }); }); }); From b6cdb6d0cd73a832efb632269d0b364bc5832a2e Mon Sep 17 00:00:00 2001 From: Ruben Daniels Date: Wed, 1 Apr 2015 02:15:30 +0000 Subject: [PATCH 109/160] Handle error --- plugins/c9.cli.publish/publish.js | 1 + 1 file changed, 1 insertion(+) diff --git a/plugins/c9.cli.publish/publish.js b/plugins/c9.cli.publish/publish.js index 02aefdc5..516d1374 100644 --- a/plugins/c9.cli.publish/publish.js +++ b/plugins/c9.cli.publish/publish.js @@ -740,6 +740,7 @@ define(function(require, exports, module) { var err = code !== 0 ? new Error("Failed to unpack package") : null; + if (err) return callback(err) proc.spawn(join(process.env.HOME, ".c9/node/bin/npm"), { args: ["install"], From c29315eab6312083fc9aaa1485d8f5db59f43cc9 Mon Sep 17 00:00:00 2001 From: Ruben Daniels Date: Wed, 1 Apr 2015 14:51:46 +0000 Subject: [PATCH 110/160] Survive disconnect --- package.json | 2 +- plugins/c9.cli.publish/publish.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 9ec64936..e86753a1 100644 --- a/package.json +++ b/package.json @@ -83,7 +83,7 @@ "c9.ide.help.support": "#60e88f5680", "c9.ide.imgeditor": "#08bbc53578", "c9.ide.immediate": "#6845a93705", - "c9.ide.installer": "#34bcccefb6", + "c9.ide.installer": "#61908c1bf0", "c9.ide.mount": "#32e79866ee", "c9.ide.navigate": "#64156c7f4a", "c9.ide.newresource": "#9a7464cc47", diff --git a/plugins/c9.cli.publish/publish.js b/plugins/c9.cli.publish/publish.js index 516d1374..476bb923 100644 --- a/plugins/c9.cli.publish/publish.js +++ b/plugins/c9.cli.publish/publish.js @@ -740,7 +740,7 @@ define(function(require, exports, module) { var err = code !== 0 ? new Error("Failed to unpack package") : null; - if (err) return callback(err) + if (err) return callback(err); proc.spawn(join(process.env.HOME, ".c9/node/bin/npm"), { args: ["install"], From f3716c64caacabf55a5d5f1e58996091e8000b7c Mon Sep 17 00:00:00 2001 From: Ruben Daniels Date: Wed, 1 Apr 2015 20:43:42 +0000 Subject: [PATCH 111/160] small tweaks for documentation --- package.json | 6 +++--- plugins/c9.ide.layout.classic/less/bk-window.less | 9 +++++++++ plugins/c9.ide.ui/widgets.list.js | 4 ++-- 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index e86753a1..24d241f4 100644 --- a/package.json +++ b/package.json @@ -66,7 +66,7 @@ "c9.ide.find.infiles": "#1b83cf12f1", "c9.ide.find.replace": "#e4daf722b8", "c9.ide.run.debug": "#638e6b00b3", - "c9.automate": "#86bf1ee1ca", + "c9.automate": "#0290f721f3", "c9.ide.ace.emmet": "#e5f1a92ac3", "c9.ide.ace.gotoline": "#4d1a93172c", "c9.ide.ace.keymaps": "#6c4bb65b1f", @@ -77,13 +77,13 @@ "c9.ide.behaviors": "#6aad7006a0", "c9.ide.closeconfirmation": "#a28bfd8272", "c9.ide.configuration": "#b8470f4107", - "c9.ide.dialog.wizard": "#305ff018ea", + "c9.ide.dialog.wizard": "#c6401bdd13", "c9.ide.fontawesome": "#781602c5d8", "c9.ide.format": "#f51451ac57", "c9.ide.help.support": "#60e88f5680", "c9.ide.imgeditor": "#08bbc53578", "c9.ide.immediate": "#6845a93705", - "c9.ide.installer": "#61908c1bf0", + "c9.ide.installer": "#de66f446f1", "c9.ide.mount": "#32e79866ee", "c9.ide.navigate": "#64156c7f4a", "c9.ide.newresource": "#9a7464cc47", diff --git a/plugins/c9.ide.layout.classic/less/bk-window.less b/plugins/c9.ide.layout.classic/less/bk-window.less index aee25a91..4cad75a1 100644 --- a/plugins/c9.ide.layout.classic/less/bk-window.less +++ b/plugins/c9.ide.layout.classic/less/bk-window.less @@ -137,4 +137,13 @@ .bk-window.dialog .bk-container > div:first-child{ flex: 1; position: relative; +} + +.bk-window.wizard .bk-container > div:first-child > div{ + position: absolute; + left: 0; + top: 0; + right: 0; + bottom: 0; + padding: 20px; } \ No newline at end of file diff --git a/plugins/c9.ide.ui/widgets.list.js b/plugins/c9.ide.ui/widgets.list.js index 87fc71b8..8c62a39c 100644 --- a/plugins/c9.ide.ui/widgets.list.js +++ b/plugins/c9.ide.ui/widgets.list.js @@ -261,7 +261,7 @@ define(function(require, exports, module) { * */ get enableCheckboxes(){ return model.getCheckboxHTML ? true : false; }, - set enableCheckboxes(value){ + set enableCheckboxes(value){ model.getCheckboxHTML = value ? function(node){ return " Date: Wed, 1 Apr 2015 21:05:29 +0000 Subject: [PATCH 113/160] implement reinstall --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 2fd07f23..5dd3db89 100644 --- a/package.json +++ b/package.json @@ -83,7 +83,7 @@ "c9.ide.help.support": "#60e88f5680", "c9.ide.imgeditor": "#08bbc53578", "c9.ide.immediate": "#6845a93705", - "c9.ide.installer": "#a9c68556ce", + "c9.ide.installer": "#847b414eb6", "c9.ide.mount": "#32e79866ee", "c9.ide.navigate": "#64156c7f4a", "c9.ide.newresource": "#9a7464cc47", From 6b243625cae51e68c636ee768e7b6275721136bf Mon Sep 17 00:00:00 2001 From: Ruben Daniels Date: Wed, 1 Apr 2015 21:14:31 +0000 Subject: [PATCH 114/160] fixes issue when installed is not there --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 5dd3db89..942c7cfe 100644 --- a/package.json +++ b/package.json @@ -83,7 +83,7 @@ "c9.ide.help.support": "#60e88f5680", "c9.ide.imgeditor": "#08bbc53578", "c9.ide.immediate": "#6845a93705", - "c9.ide.installer": "#847b414eb6", + "c9.ide.installer": "#c37674e5fa", "c9.ide.mount": "#32e79866ee", "c9.ide.navigate": "#64156c7f4a", "c9.ide.newresource": "#9a7464cc47", From 26b9cb269a7d4f69ced762379e64c1dbc1ce59da Mon Sep 17 00:00:00 2001 From: Ruben Daniels Date: Wed, 1 Apr 2015 21:15:35 +0000 Subject: [PATCH 115/160] SMall style fix --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 942c7cfe..4e001093 100644 --- a/package.json +++ b/package.json @@ -83,7 +83,7 @@ "c9.ide.help.support": "#60e88f5680", "c9.ide.imgeditor": "#08bbc53578", "c9.ide.immediate": "#6845a93705", - "c9.ide.installer": "#c37674e5fa", + "c9.ide.installer": "#079cc38f00", "c9.ide.mount": "#32e79866ee", "c9.ide.navigate": "#64156c7f4a", "c9.ide.newresource": "#9a7464cc47", From ea3e7f8a52e171ee8d0886ed5b9ab69b7f6191a3 Mon Sep 17 00:00:00 2001 From: Ruben Daniels Date: Wed, 1 Apr 2015 21:52:01 +0000 Subject: [PATCH 116/160] Fix tar.gz bug --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 4e001093..b7dbd6dd 100644 --- a/package.json +++ b/package.json @@ -83,7 +83,7 @@ "c9.ide.help.support": "#60e88f5680", "c9.ide.imgeditor": "#08bbc53578", "c9.ide.immediate": "#6845a93705", - "c9.ide.installer": "#079cc38f00", + "c9.ide.installer": "#0b344f1a9b", "c9.ide.mount": "#32e79866ee", "c9.ide.navigate": "#64156c7f4a", "c9.ide.newresource": "#9a7464cc47", From cdb13b9a3f0d7e551d6544be66faaec9b35a3e15 Mon Sep 17 00:00:00 2001 From: Ruben Daniels Date: Wed, 1 Apr 2015 21:59:58 +0000 Subject: [PATCH 117/160] quote everything --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index b7dbd6dd..401db856 100644 --- a/package.json +++ b/package.json @@ -83,7 +83,7 @@ "c9.ide.help.support": "#60e88f5680", "c9.ide.imgeditor": "#08bbc53578", "c9.ide.immediate": "#6845a93705", - "c9.ide.installer": "#0b344f1a9b", + "c9.ide.installer": "#53b3b1221d", "c9.ide.mount": "#32e79866ee", "c9.ide.navigate": "#64156c7f4a", "c9.ide.newresource": "#9a7464cc47", From 9816286581320a53b4c91d638cccb3e6571987f6 Mon Sep 17 00:00:00 2001 From: Ruben Daniels Date: Wed, 1 Apr 2015 22:04:42 +0000 Subject: [PATCH 118/160] installed should be set --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 401db856..90d96fbf 100644 --- a/package.json +++ b/package.json @@ -83,7 +83,7 @@ "c9.ide.help.support": "#60e88f5680", "c9.ide.imgeditor": "#08bbc53578", "c9.ide.immediate": "#6845a93705", - "c9.ide.installer": "#53b3b1221d", + "c9.ide.installer": "#7c86c188e5", "c9.ide.mount": "#32e79866ee", "c9.ide.navigate": "#64156c7f4a", "c9.ide.newresource": "#9a7464cc47", From 0f5376cdd3d95b399fa378acedbd94e604e39525 Mon Sep 17 00:00:00 2001 From: Ruben Daniels Date: Wed, 1 Apr 2015 22:16:47 +0000 Subject: [PATCH 119/160] fixes collab --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 90d96fbf..8fc1aa7d 100644 --- a/package.json +++ b/package.json @@ -60,7 +60,7 @@ "c9.ide.language.javascript.tern": "#7aab8b0b6a", "c9.ide.language.javascript.infer": "#ebb2daf81a", "c9.ide.language.jsonalyzer": "#efa4426f1f", - "c9.ide.collab": "#2ed9be9e8c", + "c9.ide.collab": "#b473a86be8", "c9.ide.local": "#2bfd7ff051", "c9.ide.find": "#9fc6f4cfa5", "c9.ide.find.infiles": "#1b83cf12f1", @@ -83,7 +83,7 @@ "c9.ide.help.support": "#60e88f5680", "c9.ide.imgeditor": "#08bbc53578", "c9.ide.immediate": "#6845a93705", - "c9.ide.installer": "#7c86c188e5", + "c9.ide.installer": "#1635e34f43", "c9.ide.mount": "#32e79866ee", "c9.ide.navigate": "#64156c7f4a", "c9.ide.newresource": "#9a7464cc47", From 80cab80824b5c8dfa3555a1e4097d75cad568eb8 Mon Sep 17 00:00:00 2001 From: Ruben Daniels Date: Wed, 1 Apr 2015 22:18:50 +0000 Subject: [PATCH 120/160] correct paths --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 8fc1aa7d..7206f6fc 100644 --- a/package.json +++ b/package.json @@ -60,7 +60,7 @@ "c9.ide.language.javascript.tern": "#7aab8b0b6a", "c9.ide.language.javascript.infer": "#ebb2daf81a", "c9.ide.language.jsonalyzer": "#efa4426f1f", - "c9.ide.collab": "#b473a86be8", + "c9.ide.collab": "#8b62605e88", "c9.ide.local": "#2bfd7ff051", "c9.ide.find": "#9fc6f4cfa5", "c9.ide.find.infiles": "#1b83cf12f1", From 7dbeb29fca8f5b660c52b5216c79b722ad9dd8a1 Mon Sep 17 00:00:00 2001 From: Ruben Daniels Date: Wed, 1 Apr 2015 22:34:07 +0000 Subject: [PATCH 121/160] Make collab install more robust --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 7206f6fc..658cd5ed 100644 --- a/package.json +++ b/package.json @@ -60,7 +60,7 @@ "c9.ide.language.javascript.tern": "#7aab8b0b6a", "c9.ide.language.javascript.infer": "#ebb2daf81a", "c9.ide.language.jsonalyzer": "#efa4426f1f", - "c9.ide.collab": "#8b62605e88", + "c9.ide.collab": "#51738c78c3", "c9.ide.local": "#2bfd7ff051", "c9.ide.find": "#9fc6f4cfa5", "c9.ide.find.infiles": "#1b83cf12f1", @@ -83,7 +83,7 @@ "c9.ide.help.support": "#60e88f5680", "c9.ide.imgeditor": "#08bbc53578", "c9.ide.immediate": "#6845a93705", - "c9.ide.installer": "#1635e34f43", + "c9.ide.installer": "#f6afad13da", "c9.ide.mount": "#32e79866ee", "c9.ide.navigate": "#64156c7f4a", "c9.ide.newresource": "#9a7464cc47", From c404691b3ff47e034cc2e7717d8f92e27da77abd Mon Sep 17 00:00:00 2001 From: Ruben Daniels Date: Wed, 1 Apr 2015 22:53:29 +0000 Subject: [PATCH 122/160] Use a different npm based on the cwd --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 658cd5ed..411e101f 100644 --- a/package.json +++ b/package.json @@ -83,7 +83,7 @@ "c9.ide.help.support": "#60e88f5680", "c9.ide.imgeditor": "#08bbc53578", "c9.ide.immediate": "#6845a93705", - "c9.ide.installer": "#f6afad13da", + "c9.ide.installer": "#6ccca93602", "c9.ide.mount": "#32e79866ee", "c9.ide.navigate": "#64156c7f4a", "c9.ide.newresource": "#9a7464cc47", From 9ad012846e5c57085500e6444c7419f379857df9 Mon Sep 17 00:00:00 2001 From: Ruben Daniels Date: Wed, 1 Apr 2015 23:56:59 +0000 Subject: [PATCH 123/160] Add install implicit command --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 411e101f..ffc78c09 100644 --- a/package.json +++ b/package.json @@ -66,7 +66,7 @@ "c9.ide.find.infiles": "#1b83cf12f1", "c9.ide.find.replace": "#e4daf722b8", "c9.ide.run.debug": "#638e6b00b3", - "c9.automate": "#86bf1ee1ca", + "c9.automate": "#4b9f1ab9de", "c9.ide.ace.emmet": "#e5f1a92ac3", "c9.ide.ace.gotoline": "#4d1a93172c", "c9.ide.ace.keymaps": "#6c4bb65b1f", @@ -83,7 +83,7 @@ "c9.ide.help.support": "#60e88f5680", "c9.ide.imgeditor": "#08bbc53578", "c9.ide.immediate": "#6845a93705", - "c9.ide.installer": "#6ccca93602", + "c9.ide.installer": "#826a2c6dc0", "c9.ide.mount": "#32e79866ee", "c9.ide.navigate": "#64156c7f4a", "c9.ide.newresource": "#9a7464cc47", From 07df1f0f855fb97f1ecf1fd5164d860ab336e78c Mon Sep 17 00:00:00 2001 From: Ruben Daniels Date: Wed, 1 Apr 2015 23:58:35 +0000 Subject: [PATCH 124/160] reenable commented out code --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index ffc78c09..26409d43 100644 --- a/package.json +++ b/package.json @@ -66,7 +66,7 @@ "c9.ide.find.infiles": "#1b83cf12f1", "c9.ide.find.replace": "#e4daf722b8", "c9.ide.run.debug": "#638e6b00b3", - "c9.automate": "#4b9f1ab9de", + "c9.automate": "#86bf1ee1ca", "c9.ide.ace.emmet": "#e5f1a92ac3", "c9.ide.ace.gotoline": "#4d1a93172c", "c9.ide.ace.keymaps": "#6c4bb65b1f", @@ -83,7 +83,7 @@ "c9.ide.help.support": "#60e88f5680", "c9.ide.imgeditor": "#08bbc53578", "c9.ide.immediate": "#6845a93705", - "c9.ide.installer": "#826a2c6dc0", + "c9.ide.installer": "#ce7d68dc1e", "c9.ide.mount": "#32e79866ee", "c9.ide.navigate": "#64156c7f4a", "c9.ide.newresource": "#9a7464cc47", From c6827f3b38367831ec7d1a4d5daec0e1408d1b7a Mon Sep 17 00:00:00 2001 From: Ruben Daniels Date: Thu, 2 Apr 2015 01:07:35 +0000 Subject: [PATCH 125/160] Patch the error state by only offering a finish button --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 26409d43..92e5dbbc 100644 --- a/package.json +++ b/package.json @@ -83,7 +83,7 @@ "c9.ide.help.support": "#60e88f5680", "c9.ide.imgeditor": "#08bbc53578", "c9.ide.immediate": "#6845a93705", - "c9.ide.installer": "#ce7d68dc1e", + "c9.ide.installer": "#8eed6430dc", "c9.ide.mount": "#32e79866ee", "c9.ide.navigate": "#64156c7f4a", "c9.ide.newresource": "#9a7464cc47", From 09259eeaf8187998aa395ad0bef839dfa0b8a774 Mon Sep 17 00:00:00 2001 From: Ruben Daniels Date: Thu, 2 Apr 2015 02:28:16 +0000 Subject: [PATCH 126/160] Fixes dark theme support for installer --- package.json | 2 +- .../themes/default-dark-gray.less | 12 +++++----- .../themes/default-dark.less | 12 +++++----- .../themes/flat-light.less | 22 +++++++++++++++++++ plugins/c9.ide.ui/widgets.less | 14 ++++++------ 5 files changed, 42 insertions(+), 20 deletions(-) diff --git a/package.json b/package.json index 92e5dbbc..d85294bc 100644 --- a/package.json +++ b/package.json @@ -83,7 +83,7 @@ "c9.ide.help.support": "#60e88f5680", "c9.ide.imgeditor": "#08bbc53578", "c9.ide.immediate": "#6845a93705", - "c9.ide.installer": "#8eed6430dc", + "c9.ide.installer": "#330941d7f4", "c9.ide.mount": "#32e79866ee", "c9.ide.navigate": "#64156c7f4a", "c9.ide.newresource": "#9a7464cc47", diff --git a/plugins/c9.ide.layout.classic/themes/default-dark-gray.less b/plugins/c9.ide.layout.classic/themes/default-dark-gray.less index 1a58adf5..d35f07fc 100644 --- a/plugins/c9.ide.layout.classic/themes/default-dark-gray.less +++ b/plugins/c9.ide.layout.classic/themes/default-dark-gray.less @@ -1599,11 +1599,11 @@ // Installer @installer-font-smoothing: true; -@installer-background: #272727; -@installer-border-top: 1px solid rgba(255, 255, 255, 0.1); -@installer-box-shadow: 0 -1px black; -@installer-color: rgb(182, 182, 182); -@installer-text-shadow: 1px 1px 0 rgb(10, 10, 10); +@installer-background: transparent; +@installer-border-top: 0; +@installer-box-shadow: none; +@installer-color: #333; +@installer-text-shadow: none; @installer-font-family: Arial; @installer-log-color: #fff; @@ -1612,7 +1612,7 @@ @installer-log-border-color: rgba(255,255,255,0.06) rgba(0,0,0,0.3) rgba(0,0,0,0.3) rgba(255,255,255,0.06); @installer-log-border-radius: 0; @installer-log-box-shadow: 1px 0 0 rgba(255,255,255,0.06), 0 1px 0 rgba(255,255,255,0.06), -1px 0 0 rgba(0,0,0,0.3), 0 -1px 0 rgba(0,0,0,0.3); -@installer-log-checkbox-color: #f1f1f1; +@installer-log-checkbox-color: #333; @installer-log-progress-color: white; // Notification diff --git a/plugins/c9.ide.layout.classic/themes/default-dark.less b/plugins/c9.ide.layout.classic/themes/default-dark.less index ec2edd6a..3ef3edf0 100644 --- a/plugins/c9.ide.layout.classic/themes/default-dark.less +++ b/plugins/c9.ide.layout.classic/themes/default-dark.less @@ -1599,11 +1599,11 @@ // Installer @installer-font-smoothing: true; -@installer-background: #272727; -@installer-border-top: 1px solid rgba(255, 255, 255, 0.1); -@installer-box-shadow: 0 -1px black; -@installer-color: rgb(182, 182, 182); -@installer-text-shadow: 1px 1px 0 rgb(10, 10, 10); +@installer-background: transparent; +@installer-border-top: 0; +@installer-box-shadow: none; +@installer-color: #333; +@installer-text-shadow: none; @installer-font-family: Arial; @installer-log-color: #fff; @@ -1612,7 +1612,7 @@ @installer-log-border-color: rgba(255,255,255,0.06) rgba(0,0,0,0.3) rgba(0,0,0,0.3) rgba(255,255,255,0.06); @installer-log-border-radius: 0; @installer-log-box-shadow: 1px 0 0 rgba(255,255,255,0.06), 0 1px 0 rgba(255,255,255,0.06), -1px 0 0 rgba(0,0,0,0.3), 0 -1px 0 rgba(0,0,0,0.3); -@installer-log-checkbox-color: #f1f1f1; +@installer-log-checkbox-color: #333; @installer-log-progress-color: white; // Notification diff --git a/plugins/c9.ide.layout.classic/themes/flat-light.less b/plugins/c9.ide.layout.classic/themes/flat-light.less index 4608a79a..a7fae696 100644 --- a/plugins/c9.ide.layout.classic/themes/flat-light.less +++ b/plugins/c9.ide.layout.classic/themes/flat-light.less @@ -390,6 +390,28 @@ padding : 5px 3px 1px 5px; } +.ace_tree .tree-row .checkbox{ + outline: 1px solid rgba(0, 0, 0, 0.16); + background: white; + width: 13px; + height: 13px; + margin: -2px 5px 0 0px; + display: inline-block; + vertical-align: middle; + pointer-events: auto; +} +.ace_tree .tree-row .checkbox.checked{ + background: white url("@{image-path}/@{menu-check}"); + background-position: -2px -2px; +} +.ace_tree .tree-row .checkbox.half-checked{ + background: #DDDDDD url("@{image-path}/@{menu-check}"); + background-position: -2px -2px; +} +.installer .execute .progress{ + bottom: -50px; +} + @media print, (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 1.25dppx) { .listBP .checked .checkbox { background-position: 0px -61px !important; diff --git a/plugins/c9.ide.ui/widgets.less b/plugins/c9.ide.ui/widgets.less index 7035b5c0..2f8fe022 100644 --- a/plugins/c9.ide.ui/widgets.less +++ b/plugins/c9.ide.ui/widgets.less @@ -44,22 +44,22 @@ } .ace_tree .tree-row .checkbox{ - outline: 1px solid rgba(0, 0, 0, 0.16); - background: white; + outline: 1px solid rgba(255, 255, 255, 0.35); + background: #2D2D2D; width: 13px; height: 13px; - margin: -2px 5px 0 0px; + margin: 1px 5px 0 0px; display: inline-block; vertical-align: middle; pointer-events: auto; } .ace_tree .tree-row .checkbox.checked{ - background: white url("@{image-path}/@{menu-check}"); - background-position: -2px -2px; + background: #2D2D2D url("@{image-path}/@{menu-check}"); + background-position: -2px -18px; } .ace_tree .tree-row .checkbox.half-checked{ - background: #DDDDDD url("@{image-path}/@{menu-check}"); - background-position: -2px -2px; + background: #565656 url("@{image-path}/@{menu-check}"); + background-position: -2px -18px; } .custom-tree.ace_tree .tree-row .toggler{ From eddefc180b9dfab0e87e5525d31904f57e5e10d0 Mon Sep 17 00:00:00 2001 From: Ruben Daniels Date: Thu, 2 Apr 2015 02:31:55 +0000 Subject: [PATCH 127/160] Fixes white theme regressions --- plugins/c9.ide.layout.classic/themes/flat-light.less | 5 ++--- plugins/c9.ide.ui/widgets.less | 4 ++-- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/plugins/c9.ide.layout.classic/themes/flat-light.less b/plugins/c9.ide.layout.classic/themes/flat-light.less index a7fae696..81b10dda 100644 --- a/plugins/c9.ide.layout.classic/themes/flat-light.less +++ b/plugins/c9.ide.layout.classic/themes/flat-light.less @@ -401,15 +401,14 @@ pointer-events: auto; } .ace_tree .tree-row .checkbox.checked{ - background: white url("@{image-path}/@{menu-check}"); background-position: -2px -2px; } .ace_tree .tree-row .checkbox.half-checked{ - background: #DDDDDD url("@{image-path}/@{menu-check}"); + background-color: #DDDDDD; background-position: -2px -2px; } .installer .execute .progress{ - bottom: -50px; + bottom: -44px; } @media print, (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 1.25dppx) { diff --git a/plugins/c9.ide.ui/widgets.less b/plugins/c9.ide.ui/widgets.less index 2f8fe022..8fcfbef4 100644 --- a/plugins/c9.ide.ui/widgets.less +++ b/plugins/c9.ide.ui/widgets.less @@ -54,11 +54,11 @@ pointer-events: auto; } .ace_tree .tree-row .checkbox.checked{ - background: #2D2D2D url("@{image-path}/@{menu-check}"); + background-image: url("@{image-path}/@{menu-check}"); background-position: -2px -18px; } .ace_tree .tree-row .checkbox.half-checked{ - background: #565656 url("@{image-path}/@{menu-check}"); + background-color: #565656; background-position: -2px -18px; } From 8355ec951865ff37c27a11db465c11481639d8b6 Mon Sep 17 00:00:00 2001 From: Ruben Daniels Date: Thu, 2 Apr 2015 04:03:18 +0000 Subject: [PATCH 128/160] Collapse the packages --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index d85294bc..edacffcc 100644 --- a/package.json +++ b/package.json @@ -83,7 +83,7 @@ "c9.ide.help.support": "#60e88f5680", "c9.ide.imgeditor": "#08bbc53578", "c9.ide.immediate": "#6845a93705", - "c9.ide.installer": "#330941d7f4", + "c9.ide.installer": "#5fbb258c40", "c9.ide.mount": "#32e79866ee", "c9.ide.navigate": "#64156c7f4a", "c9.ide.newresource": "#9a7464cc47", From 4234e69ccca848f5a9130956df4527e8747f5a9a Mon Sep 17 00:00:00 2001 From: Ruben Daniels Date: Thu, 2 Apr 2015 05:03:34 +0000 Subject: [PATCH 129/160] rename --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index edacffcc..3d0043c2 100644 --- a/package.json +++ b/package.json @@ -60,7 +60,7 @@ "c9.ide.language.javascript.tern": "#7aab8b0b6a", "c9.ide.language.javascript.infer": "#ebb2daf81a", "c9.ide.language.jsonalyzer": "#efa4426f1f", - "c9.ide.collab": "#51738c78c3", + "c9.ide.collab": "#12f18e8225", "c9.ide.local": "#2bfd7ff051", "c9.ide.find": "#9fc6f4cfa5", "c9.ide.find.infiles": "#1b83cf12f1", From 5cbf78d3d0cdfae00adae73db9d09f6856021515 Mon Sep 17 00:00:00 2001 From: Ruben Daniels Date: Thu, 2 Apr 2015 19:58:47 +0000 Subject: [PATCH 130/160] Fix node.sh --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 3d0043c2..2e4b496c 100644 --- a/package.json +++ b/package.json @@ -83,7 +83,7 @@ "c9.ide.help.support": "#60e88f5680", "c9.ide.imgeditor": "#08bbc53578", "c9.ide.immediate": "#6845a93705", - "c9.ide.installer": "#5fbb258c40", + "c9.ide.installer": "#a9c28aff82", "c9.ide.mount": "#32e79866ee", "c9.ide.navigate": "#64156c7f4a", "c9.ide.newresource": "#9a7464cc47", From 4a56c1a06de27096e726f23c4b49ca85a440a330 Mon Sep 17 00:00:00 2001 From: Ruben Daniels Date: Fri, 3 Apr 2015 01:51:49 +0000 Subject: [PATCH 131/160] Fix backward compatibility --- package.json | 2 +- plugins/c9.ide.plugins/mock/c9.ide.example | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) delete mode 160000 plugins/c9.ide.plugins/mock/c9.ide.example diff --git a/package.json b/package.json index 2e4b496c..c401e1a9 100644 --- a/package.json +++ b/package.json @@ -83,7 +83,7 @@ "c9.ide.help.support": "#60e88f5680", "c9.ide.imgeditor": "#08bbc53578", "c9.ide.immediate": "#6845a93705", - "c9.ide.installer": "#a9c28aff82", + "c9.ide.installer": "#7c8d623e65", "c9.ide.mount": "#32e79866ee", "c9.ide.navigate": "#64156c7f4a", "c9.ide.newresource": "#9a7464cc47", diff --git a/plugins/c9.ide.plugins/mock/c9.ide.example b/plugins/c9.ide.plugins/mock/c9.ide.example deleted file mode 160000 index 35a5deda..00000000 --- a/plugins/c9.ide.plugins/mock/c9.ide.example +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 35a5dedaeb20cf6f8a9f1021de23d8dd96860f11 From 2d71f1e83256b735882e22d0055e941f19a484a5 Mon Sep 17 00:00:00 2001 From: nightwing Date: Fri, 3 Apr 2015 20:20:06 +0400 Subject: [PATCH 132/160] small tweak --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index c401e1a9..a42bec4b 100644 --- a/package.json +++ b/package.json @@ -83,7 +83,7 @@ "c9.ide.help.support": "#60e88f5680", "c9.ide.imgeditor": "#08bbc53578", "c9.ide.immediate": "#6845a93705", - "c9.ide.installer": "#7c8d623e65", + "c9.ide.installer": "#d0390e2094", "c9.ide.mount": "#32e79866ee", "c9.ide.navigate": "#64156c7f4a", "c9.ide.newresource": "#9a7464cc47", From 2b553ce3cf67d60af6a53bcd1d9610910f2e7a9d Mon Sep 17 00:00:00 2001 From: nightwing Date: Sun, 5 Apr 2015 16:08:21 +0000 Subject: [PATCH 133/160] fix arch detection --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index a42bec4b..186352f1 100644 --- a/package.json +++ b/package.json @@ -83,7 +83,7 @@ "c9.ide.help.support": "#60e88f5680", "c9.ide.imgeditor": "#08bbc53578", "c9.ide.immediate": "#6845a93705", - "c9.ide.installer": "#d0390e2094", + "c9.ide.installer": "#3035c1dcae", "c9.ide.mount": "#32e79866ee", "c9.ide.navigate": "#64156c7f4a", "c9.ide.newresource": "#9a7464cc47", From 711f61a79f7e0cd0ea4f907529f1a6b91d353e54 Mon Sep 17 00:00:00 2001 From: nightwing Date: Sun, 5 Apr 2015 16:09:40 +0000 Subject: [PATCH 134/160] install npm modules in ~/.c9 for backwards compatibility --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 186352f1..48623fc8 100644 --- a/package.json +++ b/package.json @@ -83,7 +83,7 @@ "c9.ide.help.support": "#60e88f5680", "c9.ide.imgeditor": "#08bbc53578", "c9.ide.immediate": "#6845a93705", - "c9.ide.installer": "#3035c1dcae", + "c9.ide.installer": "#7a007515b5", "c9.ide.mount": "#32e79866ee", "c9.ide.navigate": "#64156c7f4a", "c9.ide.newresource": "#9a7464cc47", From 0b06b4a8ab1fc058364bba881cf9f22bf8e4e51c Mon Sep 17 00:00:00 2001 From: nightwing Date: Wed, 8 Apr 2015 22:29:48 +0000 Subject: [PATCH 135/160] fix handling of defult python 3 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 48623fc8..21fb94bd 100644 --- a/package.json +++ b/package.json @@ -83,7 +83,7 @@ "c9.ide.help.support": "#60e88f5680", "c9.ide.imgeditor": "#08bbc53578", "c9.ide.immediate": "#6845a93705", - "c9.ide.installer": "#7a007515b5", + "c9.ide.installer": "#028fb34f31", "c9.ide.mount": "#32e79866ee", "c9.ide.navigate": "#64156c7f4a", "c9.ide.newresource": "#9a7464cc47", From 35f04817eb2019f2020e27aa51f9962df64bae30 Mon Sep 17 00:00:00 2001 From: nightwing Date: Wed, 8 Apr 2015 22:43:34 +0000 Subject: [PATCH 136/160] fix tmux version check --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 21fb94bd..cfdeb1dd 100644 --- a/package.json +++ b/package.json @@ -83,7 +83,7 @@ "c9.ide.help.support": "#60e88f5680", "c9.ide.imgeditor": "#08bbc53578", "c9.ide.immediate": "#6845a93705", - "c9.ide.installer": "#028fb34f31", + "c9.ide.installer": "#0225321789", "c9.ide.mount": "#32e79866ee", "c9.ide.navigate": "#64156c7f4a", "c9.ide.newresource": "#9a7464cc47", From b62b3ff0797b443ea318f08c8a6cfb49ff6034f2 Mon Sep 17 00:00:00 2001 From: Lennart Kats Date: Thu, 9 Apr 2015 10:20:32 +0200 Subject: [PATCH 137/160] Revert "Merge pull request +6709 from c9/metrics-plugin" Needs VFS release, but can't do that just yet This reverts commit dfe60b63c1dccc368ffc2e03c3eaa92c85b86080, reversing changes made to 7615553051aeb9ed6da5f6dc4ddb1907e5334631. --- configs/client-default.js | 4 ---- configs/standalone.js | 1 - package.json | 1 + plugins/c9.ide.errorhandler/raygun_error_handler.js | 4 +--- plugins/c9.ide.errorhandler/simple_error_handler.js | 4 +--- plugins/c9.nodeapi/util.js | 4 +--- plugins/c9.vfs.client/endpoint.js | 7 ++----- plugins/c9.vfs.client/vfs.ping.js | 3 +-- plugins/c9.vfs.client/vfs_client.js | 9 ++------- plugins/c9.vfs.standalone/standalone.js | 2 +- plugins/c9.vfs.standalone/www/test.js | 4 ---- settings/standalone.js | 2 -- 12 files changed, 10 insertions(+), 35 deletions(-) diff --git a/configs/client-default.js b/configs/client-default.js index ea4f66e0..3c5cbac5 100644 --- a/configs/client-default.js +++ b/configs/client-default.js @@ -156,10 +156,6 @@ module.exports = function(options) { staticPrefix: staticPrefix + "/plugins/c9.ide.layout.classic", defaultShow: options.local }, - { - packagePath: "plugins/c9.ide.metrics/metrics", - hosted: hosted - }, // Ace && Commands "plugins/c9.ide.keys/commands", diff --git a/configs/standalone.js b/configs/standalone.js index 7cad6942..22a63d77 100644 --- a/configs/standalone.js +++ b/configs/standalone.js @@ -150,7 +150,6 @@ module.exports = function(config, optimist) { "./c9.nodeapi/nodeapi", { packagePath: "./c9.vfs.standalone/standalone", - sdk: config.sdk, local: config.local, packed: argv.packed, collab: config.collab, diff --git a/package.json b/package.json index 18807e8b..fe7e1be2 100644 --- a/package.json +++ b/package.json @@ -66,6 +66,7 @@ "c9.ide.find.infiles": "#1b83cf12f1", "c9.ide.find.replace": "#e4daf722b8", "c9.ide.run.debug": "#638e6b00b3", + "c9.automate": "#86bf1ee1ca", "c9.ide.ace.emmet": "#e5f1a92ac3", "c9.ide.ace.gotoline": "#4d1a93172c", "c9.ide.ace.keymaps": "#6c4bb65b1f", diff --git a/plugins/c9.ide.errorhandler/raygun_error_handler.js b/plugins/c9.ide.errorhandler/raygun_error_handler.js index 12be8f71..43e46239 100644 --- a/plugins/c9.ide.errorhandler/raygun_error_handler.js +++ b/plugins/c9.ide.errorhandler/raygun_error_handler.js @@ -75,9 +75,7 @@ define(function(require, exports, module) { /***** Register and define API *****/ plugin.freezePublicAPI({ - /** @deprecated Use log() instead. */ - reportError: reportError, - log: reportError + reportError: reportError }); register(null, { "error_handler" : plugin }); diff --git a/plugins/c9.ide.errorhandler/simple_error_handler.js b/plugins/c9.ide.errorhandler/simple_error_handler.js index 36f530d1..d9b71362 100644 --- a/plugins/c9.ide.errorhandler/simple_error_handler.js +++ b/plugins/c9.ide.errorhandler/simple_error_handler.js @@ -108,9 +108,7 @@ define(function(require, exports, module) { /***** Register and define API *****/ plugin.freezePublicAPI({ - /** @deprecated Use log() instead. */ - reportError: reportError, - log: reportError + reportError: reportError }); register(null, { "error_handler" : plugin }); diff --git a/plugins/c9.nodeapi/util.js b/plugins/c9.nodeapi/util.js index 9628e42c..9fbff737 100644 --- a/plugins/c9.nodeapi/util.js +++ b/plugins/c9.nodeapi/util.js @@ -463,9 +463,7 @@ function isPrimitive(arg) { exports.isPrimitive = isPrimitive; function isBuffer(arg) { - // Not relevant outside of node - // return arg instanceof Buffer; - return false; + return arg instanceof Buffer; } exports.isBuffer = isBuffer; diff --git a/plugins/c9.vfs.client/endpoint.js b/plugins/c9.vfs.client/endpoint.js index 1ed7ee29..102b5723 100644 --- a/plugins/c9.vfs.client/endpoint.js +++ b/plugins/c9.vfs.client/endpoint.js @@ -1,7 +1,7 @@ define(function(require, exports, module) { "use strict"; - main.consumes = ["Plugin", "auth", "http", "api", "error_handler", "metrics"]; + main.consumes = ["Plugin", "auth", "http", "api", "error_handler"]; main.provides = ["vfs.endpoint"]; return main; @@ -11,7 +11,6 @@ define(function(require, exports, module) { var http = imports.http; var api = imports.api; var errorHandler = imports.error_handler; - var metrics = imports.metrics; /***** Initialization *****/ @@ -169,10 +168,8 @@ define(function(require, exports, module) { // just take the first server that doesn't return an error (function tryNext(i) { - if (i >= servers.length) { - metrics.increment("connect_failed_all", 1, true); + if (i >= servers.length) return callback(new Error("Disconnected: Could not reach your workspace. Please try again later.")); - } var server = servers[i]; auth.request(server.url + "/" + options.pid, { diff --git a/plugins/c9.vfs.client/vfs.ping.js b/plugins/c9.vfs.client/vfs.ping.js index fcebcf6e..13ae4c44 100644 --- a/plugins/c9.vfs.client/vfs.ping.js +++ b/plugins/c9.vfs.client/vfs.ping.js @@ -1,7 +1,7 @@ define(function(require, exports, module) { "use strict"; - main.consumes = ["Plugin", "ext", "c9", "vfs", "metrics"]; + main.consumes = ["Plugin", "ext", "c9", "vfs"]; main.provides = ["vfs.ping"]; return main; @@ -9,7 +9,6 @@ define(function(require, exports, module) { var Plugin = imports.Plugin; var c9 = imports.c9; var ext = imports.ext; - var metrics = imports.metrics; /***** Initialization *****/ diff --git a/plugins/c9.vfs.client/vfs_client.js b/plugins/c9.vfs.client/vfs_client.js index 0398223f..b44e2c30 100644 --- a/plugins/c9.vfs.client/vfs_client.js +++ b/plugins/c9.vfs.client/vfs_client.js @@ -7,10 +7,7 @@ define(function(require, exports, module) { "use strict"; - main.consumes = [ - "Plugin", "auth", "vfs.endpoint", "dialog.error", - "dialog.alert", "error_handler", "metrics" - ]; + main.consumes = ["Plugin", "auth", "vfs.endpoint", "dialog.error", "dialog.alert", "error_handler"]; main.provides = ["vfs"]; return main; @@ -37,7 +34,6 @@ define(function(require, exports, module) { var hideError = errorDialog.hide; var showAlert = imports["dialog.alert"].show; var errorHandler = imports.error_handler; - var metrics = imports.metrics; var eio = require("engine.io"); var Consumer = require("vfs-socket/consumer").Consumer; @@ -54,7 +50,7 @@ define(function(require, exports, module) { var plugin = new Plugin("Ajax.org", main.consumes); var emit = plugin.getEmitter(); - // Give reference to vfs to plugins + // Give reference to vfs to plugin errorDialog.vfs = plugin; var buffer = []; @@ -213,7 +209,6 @@ define(function(require, exports, module) { vfsEndpoint.get(protocolVersion, function(err, urls) { if (err) { - metrics.increment("connect_failed", 1, true); if (!showErrorTimer) { showErrorTimer = setTimeout(function() { showVfsError(showErrorTimerMessage); diff --git a/plugins/c9.vfs.standalone/standalone.js b/plugins/c9.vfs.standalone/standalone.js index ff449c2f..55d2c8a4 100644 --- a/plugins/c9.vfs.standalone/standalone.js +++ b/plugins/c9.vfs.standalone/standalone.js @@ -48,7 +48,7 @@ function plugin(options, imports, register) { imports.connect.use(api); api.get("/", function(req, res, next) { - res.writeHead(302, { "Location": options.sdk ? "/ide.html" : "/static/places.html" }); + res.writeHead(302, { "Location": "/ide.html" }); res.end(); }); diff --git a/plugins/c9.vfs.standalone/www/test.js b/plugins/c9.vfs.standalone/www/test.js index 414b1b37..a4ac2afb 100644 --- a/plugins/c9.vfs.standalone/www/test.js +++ b/plugins/c9.vfs.standalone/www/test.js @@ -407,10 +407,6 @@ require([ } }, - "metrics": { - getLastPing: function() { throw Error("Not implemented"); }, - getLastest: function() { throw Error("Not implemented"); }, - }, error_handler: {reportError: function(){}}, installer: { show: function(){} diff --git a/settings/standalone.js b/settings/standalone.js index d7cf1d34..92a162c9 100644 --- a/settings/standalone.js +++ b/settings/standalone.js @@ -11,7 +11,6 @@ module.exports = function(manifest, installPath) { var builders = require("../plugins/c9.ide.run.build/builders_list"); var workspaceDir = path.resolve(__dirname + "/../"); - var sdk = !manifest.sdk; if (process.platform == "win32" && process.env.HOME === undefined) { process.env.HOME = process.env.HOMEDRIVE + process.env.HOMEPATH; @@ -38,7 +37,6 @@ module.exports = function(manifest, installPath) { home: home, uid: "-1", dev: true, - sdk: sdk, pid: process.pid, port: process.env.PORT || 8181, host: process.env.IP || "0.0.0.0", From f445e33be0bee02419e26663d3f3d8e89ae18d66 Mon Sep 17 00:00:00 2001 From: Lennart Kats Date: Thu, 9 Apr 2015 10:41:45 +0200 Subject: [PATCH 138/160] Revert "Revert "Merge pull request +6709 from c9/metrics-plugin"" This reverts commit b62b3ff0797b443ea318f08c8a6cfb49ff6034f2. --- configs/client-default.js | 4 ++++ configs/standalone.js | 1 + plugins/c9.ide.errorhandler/raygun_error_handler.js | 4 +++- plugins/c9.ide.errorhandler/simple_error_handler.js | 4 +++- plugins/c9.nodeapi/util.js | 4 +++- plugins/c9.vfs.client/endpoint.js | 7 +++++-- plugins/c9.vfs.client/vfs.ping.js | 3 ++- plugins/c9.vfs.client/vfs_client.js | 9 +++++++-- plugins/c9.vfs.standalone/standalone.js | 2 +- plugins/c9.vfs.standalone/www/test.js | 4 ++++ settings/standalone.js | 2 ++ 11 files changed, 35 insertions(+), 9 deletions(-) diff --git a/configs/client-default.js b/configs/client-default.js index 3c5cbac5..ea4f66e0 100644 --- a/configs/client-default.js +++ b/configs/client-default.js @@ -156,6 +156,10 @@ module.exports = function(options) { staticPrefix: staticPrefix + "/plugins/c9.ide.layout.classic", defaultShow: options.local }, + { + packagePath: "plugins/c9.ide.metrics/metrics", + hosted: hosted + }, // Ace && Commands "plugins/c9.ide.keys/commands", diff --git a/configs/standalone.js b/configs/standalone.js index 22a63d77..7cad6942 100644 --- a/configs/standalone.js +++ b/configs/standalone.js @@ -150,6 +150,7 @@ module.exports = function(config, optimist) { "./c9.nodeapi/nodeapi", { packagePath: "./c9.vfs.standalone/standalone", + sdk: config.sdk, local: config.local, packed: argv.packed, collab: config.collab, diff --git a/plugins/c9.ide.errorhandler/raygun_error_handler.js b/plugins/c9.ide.errorhandler/raygun_error_handler.js index 43e46239..12be8f71 100644 --- a/plugins/c9.ide.errorhandler/raygun_error_handler.js +++ b/plugins/c9.ide.errorhandler/raygun_error_handler.js @@ -75,7 +75,9 @@ define(function(require, exports, module) { /***** Register and define API *****/ plugin.freezePublicAPI({ - reportError: reportError + /** @deprecated Use log() instead. */ + reportError: reportError, + log: reportError }); register(null, { "error_handler" : plugin }); diff --git a/plugins/c9.ide.errorhandler/simple_error_handler.js b/plugins/c9.ide.errorhandler/simple_error_handler.js index d9b71362..36f530d1 100644 --- a/plugins/c9.ide.errorhandler/simple_error_handler.js +++ b/plugins/c9.ide.errorhandler/simple_error_handler.js @@ -108,7 +108,9 @@ define(function(require, exports, module) { /***** Register and define API *****/ plugin.freezePublicAPI({ - reportError: reportError + /** @deprecated Use log() instead. */ + reportError: reportError, + log: reportError }); register(null, { "error_handler" : plugin }); diff --git a/plugins/c9.nodeapi/util.js b/plugins/c9.nodeapi/util.js index 9fbff737..9628e42c 100644 --- a/plugins/c9.nodeapi/util.js +++ b/plugins/c9.nodeapi/util.js @@ -463,7 +463,9 @@ function isPrimitive(arg) { exports.isPrimitive = isPrimitive; function isBuffer(arg) { - return arg instanceof Buffer; + // Not relevant outside of node + // return arg instanceof Buffer; + return false; } exports.isBuffer = isBuffer; diff --git a/plugins/c9.vfs.client/endpoint.js b/plugins/c9.vfs.client/endpoint.js index 102b5723..1ed7ee29 100644 --- a/plugins/c9.vfs.client/endpoint.js +++ b/plugins/c9.vfs.client/endpoint.js @@ -1,7 +1,7 @@ define(function(require, exports, module) { "use strict"; - main.consumes = ["Plugin", "auth", "http", "api", "error_handler"]; + main.consumes = ["Plugin", "auth", "http", "api", "error_handler", "metrics"]; main.provides = ["vfs.endpoint"]; return main; @@ -11,6 +11,7 @@ define(function(require, exports, module) { var http = imports.http; var api = imports.api; var errorHandler = imports.error_handler; + var metrics = imports.metrics; /***** Initialization *****/ @@ -168,8 +169,10 @@ define(function(require, exports, module) { // just take the first server that doesn't return an error (function tryNext(i) { - if (i >= servers.length) + if (i >= servers.length) { + metrics.increment("connect_failed_all", 1, true); return callback(new Error("Disconnected: Could not reach your workspace. Please try again later.")); + } var server = servers[i]; auth.request(server.url + "/" + options.pid, { diff --git a/plugins/c9.vfs.client/vfs.ping.js b/plugins/c9.vfs.client/vfs.ping.js index 13ae4c44..fcebcf6e 100644 --- a/plugins/c9.vfs.client/vfs.ping.js +++ b/plugins/c9.vfs.client/vfs.ping.js @@ -1,7 +1,7 @@ define(function(require, exports, module) { "use strict"; - main.consumes = ["Plugin", "ext", "c9", "vfs"]; + main.consumes = ["Plugin", "ext", "c9", "vfs", "metrics"]; main.provides = ["vfs.ping"]; return main; @@ -9,6 +9,7 @@ define(function(require, exports, module) { var Plugin = imports.Plugin; var c9 = imports.c9; var ext = imports.ext; + var metrics = imports.metrics; /***** Initialization *****/ diff --git a/plugins/c9.vfs.client/vfs_client.js b/plugins/c9.vfs.client/vfs_client.js index b44e2c30..0398223f 100644 --- a/plugins/c9.vfs.client/vfs_client.js +++ b/plugins/c9.vfs.client/vfs_client.js @@ -7,7 +7,10 @@ define(function(require, exports, module) { "use strict"; - main.consumes = ["Plugin", "auth", "vfs.endpoint", "dialog.error", "dialog.alert", "error_handler"]; + main.consumes = [ + "Plugin", "auth", "vfs.endpoint", "dialog.error", + "dialog.alert", "error_handler", "metrics" + ]; main.provides = ["vfs"]; return main; @@ -34,6 +37,7 @@ define(function(require, exports, module) { var hideError = errorDialog.hide; var showAlert = imports["dialog.alert"].show; var errorHandler = imports.error_handler; + var metrics = imports.metrics; var eio = require("engine.io"); var Consumer = require("vfs-socket/consumer").Consumer; @@ -50,7 +54,7 @@ define(function(require, exports, module) { var plugin = new Plugin("Ajax.org", main.consumes); var emit = plugin.getEmitter(); - // Give reference to vfs to plugin + // Give reference to vfs to plugins errorDialog.vfs = plugin; var buffer = []; @@ -209,6 +213,7 @@ define(function(require, exports, module) { vfsEndpoint.get(protocolVersion, function(err, urls) { if (err) { + metrics.increment("connect_failed", 1, true); if (!showErrorTimer) { showErrorTimer = setTimeout(function() { showVfsError(showErrorTimerMessage); diff --git a/plugins/c9.vfs.standalone/standalone.js b/plugins/c9.vfs.standalone/standalone.js index 55d2c8a4..ff449c2f 100644 --- a/plugins/c9.vfs.standalone/standalone.js +++ b/plugins/c9.vfs.standalone/standalone.js @@ -48,7 +48,7 @@ function plugin(options, imports, register) { imports.connect.use(api); api.get("/", function(req, res, next) { - res.writeHead(302, { "Location": "/ide.html" }); + res.writeHead(302, { "Location": options.sdk ? "/ide.html" : "/static/places.html" }); res.end(); }); diff --git a/plugins/c9.vfs.standalone/www/test.js b/plugins/c9.vfs.standalone/www/test.js index a4ac2afb..414b1b37 100644 --- a/plugins/c9.vfs.standalone/www/test.js +++ b/plugins/c9.vfs.standalone/www/test.js @@ -407,6 +407,10 @@ require([ } }, + "metrics": { + getLastPing: function() { throw Error("Not implemented"); }, + getLastest: function() { throw Error("Not implemented"); }, + }, error_handler: {reportError: function(){}}, installer: { show: function(){} diff --git a/settings/standalone.js b/settings/standalone.js index 92a162c9..d7cf1d34 100644 --- a/settings/standalone.js +++ b/settings/standalone.js @@ -11,6 +11,7 @@ module.exports = function(manifest, installPath) { var builders = require("../plugins/c9.ide.run.build/builders_list"); var workspaceDir = path.resolve(__dirname + "/../"); + var sdk = !manifest.sdk; if (process.platform == "win32" && process.env.HOME === undefined) { process.env.HOME = process.env.HOMEDRIVE + process.env.HOMEPATH; @@ -37,6 +38,7 @@ module.exports = function(manifest, installPath) { home: home, uid: "-1", dev: true, + sdk: sdk, pid: process.pid, port: process.env.PORT || 8181, host: process.env.IP || "0.0.0.0", From 823aeb230f284cfd33fbcc31230bf2d4f1863d99 Mon Sep 17 00:00:00 2001 From: Tim Robinson Date: Thu, 9 Apr 2015 14:30:59 +0000 Subject: [PATCH 139/160] More test conversions --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index fe7e1be2..e7e44e25 100644 --- a/package.json +++ b/package.json @@ -60,7 +60,7 @@ "c9.ide.language.javascript.tern": "#7aab8b0b6a", "c9.ide.language.javascript.infer": "#ebb2daf81a", "c9.ide.language.jsonalyzer": "#efa4426f1f", - "c9.ide.collab": "#7009f69cb0", + "c9.ide.collab": "#28e66532c9", "c9.ide.local": "#2bfd7ff051", "c9.ide.find": "#989c06e6a7", "c9.ide.find.infiles": "#1b83cf12f1", From 1fc43edd9fa6c11e0bff6b27d64655c762390186 Mon Sep 17 00:00:00 2001 From: Tim Robinson Date: Thu, 9 Apr 2015 16:27:18 +0000 Subject: [PATCH 140/160] More test fixes --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index e7e44e25..c767b9b3 100644 --- a/package.json +++ b/package.json @@ -60,7 +60,7 @@ "c9.ide.language.javascript.tern": "#7aab8b0b6a", "c9.ide.language.javascript.infer": "#ebb2daf81a", "c9.ide.language.jsonalyzer": "#efa4426f1f", - "c9.ide.collab": "#28e66532c9", + "c9.ide.collab": "#ec183239b0", "c9.ide.local": "#2bfd7ff051", "c9.ide.find": "#989c06e6a7", "c9.ide.find.infiles": "#1b83cf12f1", From 4c64c5245aa4248869bcb3c9298134d2e06224f8 Mon Sep 17 00:00:00 2001 From: nightwing Date: Thu, 9 Apr 2015 20:19:58 +0400 Subject: [PATCH 141/160] fix sdk --- plugins/c9.ide.metrics/metrics.js | 121 ++++++++++++++++++++++++++++++ scripts/install-sdk.sh | 2 +- 2 files changed, 122 insertions(+), 1 deletion(-) create mode 100644 plugins/c9.ide.metrics/metrics.js diff --git a/plugins/c9.ide.metrics/metrics.js b/plugins/c9.ide.metrics/metrics.js new file mode 100644 index 00000000..ff19b8f3 --- /dev/null +++ b/plugins/c9.ide.metrics/metrics.js @@ -0,0 +1,121 @@ +/** + * Stub for collecting workspace/service metrics. + * + * For logging metrics to a service like datadog. + * + * Actual metrics are implemented by an external plugin that has + * many dependencies, including dependencies on VFS. + * VFS and other plugins have dependencies on "metrics". + * This stub plugin breaks the dependency cycle. + */ +define(function(require, exports, module) { + "use strict"; + + main.consumes = ["Plugin"]; + main.provides = ["metrics"]; + return main; + + /** + * Collects workspace/service metrics. + */ + function main(options, imports, register) { + var Plugin = imports.Plugin; + var plugin = new Plugin("Ajax.org", main.consumes); + + var api; + var delayedCalls = []; + + var apiFunction = options.hosted + ? function(apiName, varArgs) { + var args = [].slice.apply(arguments); + + if (!api) + return arguments[1] && delayedCalls.push(args); + + var name = args.shift(); + return api[name].apply(api, args); + } + : function() {}; + + function publishApi(newApi) { + api = newApi; + delayedCalls.forEach(function(args) { + var name = args.shift(); + api[name].apply(api, args); + }); + delayedCalls = []; + } + + plugin.freezePublicAPI({ + /** + * @internal @ignore + */ + $publishApi: publishApi, + + $setRequestApi: apiFunction.bind(null, "$setRequestApi"), + + /** + * Increment a metric value for this user/workspace, + * e.g. increment the number of times the user was disconnected by 1. + * + * These metrics get logged to a service like datadog, + * namespaced in c9.ide.metrics. + * + * Example: + * + * metrics.increment("disconnected", 1, true); + * + * @param {String} name + * @param {Number} [value] + * @param {Boolean} [now] + * Whether to send it within 50ms (or + * when we have a connection) or some time between now + * and up to 5 min or so. + */ + increment: apiFunction.bind(null, "increment"), + + /** + * Set a metric value for this user/workspace, + * e.g. the time it takes to load this workspace. + * + * These metrics get logged to a service like datadog, + * namespaced in c9.ide.metrics. + * + * Example: + * + * metrics.log("load_workspace", Date.now() - start, [500, 1000, 5000]); + * + * @param {String} name + * @param {Number} value + * @param {Number[]} [levels] + * If specified, splits up the metric into different levels, e.g. + * for [500, 1000, 5000], a 'value' of 600 would + * log a load_workspace_500 metric. A 'value' of 6000 + * would log a load_workspace_over_5000 metric. + * @param {Boolean} [now] + * Whether to send within 50ms (or + * when we have a connection) or some time between now + * and up to 5 min or so. + */ + log: apiFunction.bind(null, "log"), + + /** + * Get the latest metrics collected, or null if not available yet. + * + * @internal + * @ignore + * @return {Number} + */ + getLatest: apiFunction.bind(null, "getLatest"), + + /** + * Get the last vfs ping time. + * + * @return {Object} + */ + getLastPing: apiFunction.bind(null, "getLastPing"), + }); + + register(null, { metrics: plugin }); + } +}); \ No newline at end of file diff --git a/scripts/install-sdk.sh b/scripts/install-sdk.sh index 88794bf0..ebfd1b48 100755 --- a/scripts/install-sdk.sh +++ b/scripts/install-sdk.sh @@ -93,7 +93,7 @@ updateCore() { } installGlobalDeps() { - if ! [[ -f ~/.c9/installed ]]; then + if ! [[ -f ~/.c9/installed ]] && ! [[ $os == "windows" ]]; then curl https://raw.githubusercontent.com/c9/install/master/install.sh | bash fi } From 87f5a9e2144f26f466300e0531e7c0a4b50847e6 Mon Sep 17 00:00:00 2001 From: nightwing Date: Tue, 7 Apr 2015 13:12:59 +0400 Subject: [PATCH 142/160] fix largerfont command --- plugins/c9.ide.ace/ace.js | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/plugins/c9.ide.ace/ace.js b/plugins/c9.ide.ace/ace.js index ceff85f9..d2a27b33 100644 --- a/plugins/c9.ide.ace/ace.js +++ b/plugins/c9.ide.ace/ace.js @@ -582,7 +582,14 @@ define(function(require, exports, module) { commands.addCommand(commands.commands.togglerecording, handle); commands.addCommand(commands.commands.replaymacro, handle); - commands.addCommand(fnWrap({ + function sharedCommand(command) { + command.isAvailable = function(editor) { + return editor && editor.type == "ace"; + }; + command.group = "Code Editor"; + return command; + } + commands.addCommand(sharedCommand({ name: "syntax", exec: function(_, syntax) { if (typeof syntax == "object") @@ -597,7 +604,7 @@ define(function(require, exports, module) { commands: modes.caption }), handle); - commands.addCommand(fnWrap({ + commands.addCommand(sharedCommand({ name: "largerfont", bindKey: { mac : "Command-+|Command-=", win : "Ctrl-+|Ctrl-=" }, exec: function(e) { @@ -606,7 +613,7 @@ define(function(require, exports, module) { } }), handle); - commands.addCommand(fnWrap({ + commands.addCommand(sharedCommand({ name: "smallerfont", bindKey: { mac : "Command--", win : "Ctrl--" }, exec: function(e) { @@ -615,16 +622,13 @@ define(function(require, exports, module) { } }), handle); - commands.addCommand({ + commands.addCommand(sharedCommand({ name: "toggleWordWrap", bindKey: {win: "Ctrl-Q", mac: "Ctrl-W"}, exec: function(editor) { editor.setOption("wrap", editor.getOption("wrap") == "off"); - }, - isAvailable: function(editor) { - return editor && editor.type == "ace"; } - }, handle); + }), handle); } /***** Preferences *****/ From 3f3f59b2c62f6f92340260e58bb0f003fe2b21a0 Mon Sep 17 00:00:00 2001 From: nightwing Date: Tue, 7 Apr 2015 13:59:03 +0400 Subject: [PATCH 143/160] workaround for chrome extension removing css comments --- plugins/c9.ide.ui/{style.css => style.less} | 0 plugins/c9.ide.ui/ui.js | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) rename plugins/c9.ide.ui/{style.css => style.less} (100%) diff --git a/plugins/c9.ide.ui/style.css b/plugins/c9.ide.ui/style.less similarity index 100% rename from plugins/c9.ide.ui/style.css rename to plugins/c9.ide.ui/style.less diff --git a/plugins/c9.ide.ui/ui.js b/plugins/c9.ide.ui/ui.js index 311cd574..ab26b6f4 100644 --- a/plugins/c9.ide.ui/ui.js +++ b/plugins/c9.ide.ui/ui.js @@ -8,7 +8,7 @@ define(function(require, module, exports) { require("plugins/c9.ide.ui/codebox")(imports.apf); var settings; - var packed = require("text!./style.css").length === 0; + var packed = require("text!./style.less").length === 0; var less = require("./lib_less1.5"); if (less) less.async = true; var packedThemes = packed || options.packedThemes !== false; From 9f5e432a8a928de051a1dac162bf0416aaceb26d Mon Sep 17 00:00:00 2001 From: nightwing Date: Fri, 10 Apr 2015 02:48:19 +0400 Subject: [PATCH 144/160] remove confusing error logs --- plugins/c9.vfs.standalone/standalone.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/plugins/c9.vfs.standalone/standalone.js b/plugins/c9.vfs.standalone/standalone.js index ff449c2f..44dbb35c 100644 --- a/plugins/c9.vfs.standalone/standalone.js +++ b/plugins/c9.vfs.standalone/standalone.js @@ -226,7 +226,7 @@ function plugin(options, imports, register) { options._projects = [options.workspaceDir]; } var wd = options._projects[pid] || options._projects[0]; - console.log(user) + return { workspaceDir: wd, extendOptions: { @@ -316,7 +316,6 @@ function getConfig(requested, options) { try { data = fs.readFileSync(settings[type], "utf8"); } catch (e) { - console.log(e); } settings[type] = data; } From 3ee8a3984c51a394a9b32d9d161a9f7e2a1b9391 Mon Sep 17 00:00:00 2001 From: nightwing Date: Fri, 10 Apr 2015 14:31:32 +0400 Subject: [PATCH 145/160] fix version checking logic in installer --- package.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index a3ee7245..18f83f6d 100644 --- a/package.json +++ b/package.json @@ -60,9 +60,9 @@ "c9.ide.language.javascript.tern": "#7aab8b0b6a", "c9.ide.language.javascript.infer": "#ebb2daf81a", "c9.ide.language.jsonalyzer": "#efa4426f1f", - "c9.ide.collab": "#bdec08b794", + "c9.ide.collab": "#104ec85dd1", "c9.ide.local": "#2bfd7ff051", - "c9.ide.find": "#9fc6f4cfa5", + "c9.ide.find": "#ef82bc4f0d", "c9.ide.find.infiles": "#1b83cf12f1", "c9.ide.find.replace": "#e4daf722b8", "c9.ide.run.debug": "#638e6b00b3", @@ -83,7 +83,7 @@ "c9.ide.help.support": "#60e88f5680", "c9.ide.imgeditor": "#08bbc53578", "c9.ide.immediate": "#6845a93705", - "c9.ide.installer": "#0225321789", + "c9.ide.installer": "#31832a4d9d", "c9.ide.mount": "#32e79866ee", "c9.ide.navigate": "#64156c7f4a", "c9.ide.newresource": "#9a7464cc47", From ec6cdac9ea8015d110c6d220aebefe4b1eec2f62 Mon Sep 17 00:00:00 2001 From: nightwing Date: Fri, 10 Apr 2015 14:32:13 +0400 Subject: [PATCH 146/160] disable installer on windows since it doesn't work yet --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 18f83f6d..95b90090 100644 --- a/package.json +++ b/package.json @@ -83,7 +83,7 @@ "c9.ide.help.support": "#60e88f5680", "c9.ide.imgeditor": "#08bbc53578", "c9.ide.immediate": "#6845a93705", - "c9.ide.installer": "#31832a4d9d", + "c9.ide.installer": "#aa1e763160", "c9.ide.mount": "#32e79866ee", "c9.ide.navigate": "#64156c7f4a", "c9.ide.newresource": "#9a7464cc47", From 0ee2a056b84b75edc6849f5ccb9c7b0a09b00ef7 Mon Sep 17 00:00:00 2001 From: nightwing Date: Fri, 10 Apr 2015 15:20:16 +0400 Subject: [PATCH 147/160] prevent undo in ace changing focus --- plugins/c9.ide.ace/ace.js | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/plugins/c9.ide.ace/ace.js b/plugins/c9.ide.ace/ace.js index d2a27b33..43d2ea37 100644 --- a/plugins/c9.ide.ace/ace.js +++ b/plugins/c9.ide.ace/ace.js @@ -534,7 +534,7 @@ define(function(require, exports, module) { editor = apf.activeElement; if (!isAce(editor, true)) return false; - if (!editor.ace.commands.byName[command.name]) + if (!editor.ace.commands.byName[command.name] && !command.shared) return false; return isAvailable ? isAvailable(editor.ace) : true; @@ -582,6 +582,21 @@ define(function(require, exports, module) { commands.addCommand(commands.commands.togglerecording, handle); commands.addCommand(commands.commands.replaymacro, handle); + // when event for cmd-z in textarea is not canceled + // chrome tries to find another textarea with pending undo and focus it + // we do not want this to happen when ace instance is focused + commands.addCommand(fnWrap({ + name: "cancelBrowserUndoInAce", + bindKey: { + mac: "Cmd-Z|Cmd-Shift-Z|Cmd-Y", + win: "Ctrl-Z|Ctrl-Shift-Z|Ctrl-Y", + position: -10000 + }, + group: "ignore", + exec: function(e) {}, + readOnly: true, + shared: true + }), handle); function sharedCommand(command) { command.isAvailable = function(editor) { return editor && editor.type == "ace"; From 5803e49d07b1711dbfd88232d8e2bc7377c45d22 Mon Sep 17 00:00:00 2001 From: Lennart Kats Date: Wed, 15 Oct 2014 14:50:14 +0200 Subject: [PATCH 148/160] Add config entries --- configs/client-default.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/configs/client-default.js b/configs/client-default.js index 69da96b9..4f555a68 100644 --- a/configs/client-default.js +++ b/configs/client-default.js @@ -310,6 +310,11 @@ module.exports = function(options) { useSend: !collab && (options.local || options.standalone), maxServerCallInterval: 2000 }, + { + packagePath: "plugins/c9.ide.language.trace/trace", + extendToken: extendToken, + }, + "plugins/c9.ide.language.trace/ui", // Run { From ab5940bb9b69f4a4a3cf114084bcebbe88efcd9e Mon Sep 17 00:00:00 2001 From: Lennart Kats Date: Mon, 20 Oct 2014 10:57:13 +0200 Subject: [PATCH 149/160] Making basic tracing work --- configs/client-default.js | 5 ++++- node_modules/vfs-local/localfs.js | 4 ++-- plugins/c9.fs/mock/test.js | 2 +- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/configs/client-default.js b/configs/client-default.js index 4f555a68..bc549a1a 100644 --- a/configs/client-default.js +++ b/configs/client-default.js @@ -314,7 +314,10 @@ module.exports = function(options) { packagePath: "plugins/c9.ide.language.trace/trace", extendToken: extendToken, }, - "plugins/c9.ide.language.trace/ui", + { + packagePath: "plugins/c9.ide.language.trace/ui", + workspaceDir: workspaceDir, + }, // Run { diff --git a/node_modules/vfs-local/localfs.js b/node_modules/vfs-local/localfs.js index 6168cdd1..2ecf079e 100644 --- a/node_modules/vfs-local/localfs.js +++ b/node_modules/vfs-local/localfs.js @@ -211,7 +211,7 @@ module.exports = function setup(fsOptions) { var args = Array.prototype.slice.apply(arguments); var d = domain.create(); d.on("error", function(e) { - console.error("VFS Exception in function '" + func + "':\n" + e.stack); + console.error("VFS Exception in function '" + func + "':\n", (e.stack || e)); vfs.emit("error", { message: e.message, func: func, @@ -220,7 +220,7 @@ module.exports = function setup(fsOptions) { }); console.log("Scheduling process exit"); setTimeout(function() { - console.log("Exiting after uncaught exception in '" + func + "':\n" + e.stack) + console.log("Exiting after uncaught exception in '" + func + "':\n", (e.stack || e)) process.exit(1); }, 2000); }); diff --git a/plugins/c9.fs/mock/test.js b/plugins/c9.fs/mock/test.js index 94948eaf..b07b88ff 100644 --- a/plugins/c9.fs/mock/test.js +++ b/plugins/c9.fs/mock/test.js @@ -28,4 +28,4 @@ var i = 0; console.log(greeter(user), Date.now(), i++); setInterval(function(){ console.log(greeter(user), Date.now(), i++); -}, 1000); \ No newline at end of file +}, 10000); From 18341e4edc7bb56865be0dee52945e8228bb6ab9 Mon Sep 17 00:00:00 2001 From: Lennart Kats Date: Sun, 26 Oct 2014 11:03:20 +0100 Subject: [PATCH 150/160] Tune watching logic --- plugins/c9.fs/mock/test.browser.js | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 plugins/c9.fs/mock/test.browser.js diff --git a/plugins/c9.fs/mock/test.browser.js b/plugins/c9.fs/mock/test.browser.js new file mode 100644 index 00000000..6a2a0e65 --- /dev/null +++ b/plugins/c9.fs/mock/test.browser.js @@ -0,0 +1,7 @@ +function onClick() { + say("hi"); +} + +function say(text) { + alert(text); +} \ No newline at end of file From c89007d243da6720d76a470736a76bdd1e658e3c Mon Sep 17 00:00:00 2001 From: Lennart Kats Date: Fri, 10 Apr 2015 14:49:24 +0200 Subject: [PATCH 151/160] Remove from client-default --- configs/client-default.js | 8 -------- 1 file changed, 8 deletions(-) diff --git a/configs/client-default.js b/configs/client-default.js index bc549a1a..69da96b9 100644 --- a/configs/client-default.js +++ b/configs/client-default.js @@ -310,14 +310,6 @@ module.exports = function(options) { useSend: !collab && (options.local || options.standalone), maxServerCallInterval: 2000 }, - { - packagePath: "plugins/c9.ide.language.trace/trace", - extendToken: extendToken, - }, - { - packagePath: "plugins/c9.ide.language.trace/ui", - workspaceDir: workspaceDir, - }, // Run { From 277765f4df728c0c2c7e30baf6ebcd47a8f38881 Mon Sep 17 00:00:00 2001 From: nightwing Date: Fri, 10 Apr 2015 22:47:30 +0400 Subject: [PATCH 152/160] fix raygun error json.forEach is not a function --- .gitignore | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 5b0b4700..fd61aa37 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ build/installer/ -build/win32 +build/sdk +build/win32* build/node.exe build/node*.zip build/Cloud9-dev.app From 99be860d733d24447d91441ae0153e7174c6a765 Mon Sep 17 00:00:00 2001 From: nightwing Date: Fri, 10 Apr 2015 23:23:11 +0400 Subject: [PATCH 153/160] fix style.sheet.rules is undefined on firefox --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 95b90090..afd129e6 100644 --- a/package.json +++ b/package.json @@ -94,7 +94,7 @@ "c9.ide.pubsub": "#92ec19ed3a", "c9.ide.readonly": "#f6f07bbe42", "c9.ide.recentfiles": "#7c099abf40", - "c9.ide.remote": "#f531d62cfb", + "c9.ide.remote": "#e00a2f444f", "c9.ide.run": "#d07c872ee1", "c9.ide.run.build": "#915e48b363", "c9.ide.run.debug.xdebug": "#b91d23f48b", From f2b0ed9d52971f08e79a280fb0656564218097ea Mon Sep 17 00:00:00 2001 From: nightwing Date: Fri, 10 Apr 2015 23:48:44 +0400 Subject: [PATCH 154/160] fix Cannot read property 'value' of null --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index afd129e6..73bfca91 100644 --- a/package.json +++ b/package.json @@ -94,7 +94,7 @@ "c9.ide.pubsub": "#92ec19ed3a", "c9.ide.readonly": "#f6f07bbe42", "c9.ide.recentfiles": "#7c099abf40", - "c9.ide.remote": "#e00a2f444f", + "c9.ide.remote": "#cd45e81d2f", "c9.ide.run": "#d07c872ee1", "c9.ide.run.build": "#915e48b363", "c9.ide.run.debug.xdebug": "#b91d23f48b", From cb36b86791c097bc4eeb45c23c7f5a4559452970 Mon Sep 17 00:00:00 2001 From: nightwing Date: Sun, 12 Apr 2015 17:40:07 +0000 Subject: [PATCH 155/160] fix tmux installer --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 73bfca91..8b62db81 100644 --- a/package.json +++ b/package.json @@ -83,7 +83,7 @@ "c9.ide.help.support": "#60e88f5680", "c9.ide.imgeditor": "#08bbc53578", "c9.ide.immediate": "#6845a93705", - "c9.ide.installer": "#aa1e763160", + "c9.ide.installer": "#38f5840924", "c9.ide.mount": "#32e79866ee", "c9.ide.navigate": "#64156c7f4a", "c9.ide.newresource": "#9a7464cc47", From 20f65a8f1975ae150a2d91b53a84430efbe7e50f Mon Sep 17 00:00:00 2001 From: Fabian Jakobs Date: Mon, 13 Apr 2015 09:36:35 +0000 Subject: [PATCH 156/160] fix ERR unknown command 'HMSETNX' remove race condition and improve tests. --- .gitignore | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index fd61aa37..1e256ca8 100644 --- a/.gitignore +++ b/.gitignore @@ -13,6 +13,7 @@ plugins/c9.ide.language.javascript.tern/util/sigs_ts plugins/c9.account.billing/node_modules/ plugins/c9.account/node_modules/ plugins/c9.api.project/coverage/ +plugins/c9.db.redis/coverage/ scripts/build build/output build/standalone/ @@ -78,4 +79,4 @@ plugins/c9.proxy/haproxy-* npm-debug.log foo.js hello.js -plugins/c9.docker/containers/ci/files/github_c9_newclient \ No newline at end of file +plugins/c9.docker/containers/ci/files/github_c9_newclient From 29e9c573a6190bf5d029f0722f60746084e4e668 Mon Sep 17 00:00:00 2001 From: Matthijs van Henten Date: Tue, 14 Apr 2015 07:46:11 +0000 Subject: [PATCH 157/160] Merge branch 'master' into mvh-upgrade-less-profile-account --- package.json | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/package.json b/package.json index 8b62db81..aa4f4bc6 100644 --- a/package.json +++ b/package.json @@ -50,18 +50,18 @@ "licenses": [], "c9plugins": { "c9.ide.language": "#afda452919", - "c9.ide.language.css": "#afda1f867c", - "c9.ide.language.generic": "#87a4a44671", - "c9.ide.language.html": "#fa4833e117", - "c9.ide.language.html.diff": "#a7311cfc9f", + "c9.ide.language.css": "#eab00e0694", + "c9.ide.language.generic": "#8a3be4533a", + "c9.ide.language.html": "#13321c4eb3", + "c9.ide.language.html.diff": "#0d49022da4", "c9.ide.language.javascript": "#8479d0a9c1", - "c9.ide.language.javascript.immediate": "#9a2cce9121", + "c9.ide.language.javascript.immediate": "#99ed8f4560", "c9.ide.language.javascript.eslint": "#8832423ad1", "c9.ide.language.javascript.tern": "#7aab8b0b6a", - "c9.ide.language.javascript.infer": "#ebb2daf81a", + "c9.ide.language.javascript.infer": "#ded7df5136", "c9.ide.language.jsonalyzer": "#efa4426f1f", "c9.ide.collab": "#104ec85dd1", - "c9.ide.local": "#2bfd7ff051", + "c9.ide.local": "#cf624506cc", "c9.ide.find": "#ef82bc4f0d", "c9.ide.find.infiles": "#1b83cf12f1", "c9.ide.find.replace": "#e4daf722b8", @@ -84,14 +84,14 @@ "c9.ide.imgeditor": "#08bbc53578", "c9.ide.immediate": "#6845a93705", "c9.ide.installer": "#38f5840924", - "c9.ide.mount": "#32e79866ee", + "c9.ide.mount": "#cb45b621f1", "c9.ide.navigate": "#64156c7f4a", "c9.ide.newresource": "#9a7464cc47", "c9.ide.openfiles": "#28a4f5af16", "c9.ide.preview": "#dba2f4214d", "c9.ide.preview.browser": "#ac18aaf31d", "c9.ide.preview.markdown": "#ab8d30ad9f", - "c9.ide.pubsub": "#92ec19ed3a", + "c9.ide.pubsub": "#b83cf15ade", "c9.ide.readonly": "#f6f07bbe42", "c9.ide.recentfiles": "#7c099abf40", "c9.ide.remote": "#cd45e81d2f", From 623934d0406d9aec397ccf55fed75c5ea4896241 Mon Sep 17 00:00:00 2001 From: Lennart Kats Date: Tue, 14 Apr 2015 10:56:42 +0200 Subject: [PATCH 158/160] Add hint to d9 memlimit --- package.json | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/package.json b/package.json index 8b62db81..6eba20d1 100644 --- a/package.json +++ b/package.json @@ -50,18 +50,18 @@ "licenses": [], "c9plugins": { "c9.ide.language": "#afda452919", - "c9.ide.language.css": "#afda1f867c", - "c9.ide.language.generic": "#87a4a44671", - "c9.ide.language.html": "#fa4833e117", - "c9.ide.language.html.diff": "#a7311cfc9f", + "c9.ide.language.css": "#65d8d1328b", + "c9.ide.language.generic": "#fea2251ea9", + "c9.ide.language.html": "#ff867d098b", + "c9.ide.language.html.diff": "#6c3e47a8f4", "c9.ide.language.javascript": "#8479d0a9c1", - "c9.ide.language.javascript.immediate": "#9a2cce9121", + "c9.ide.language.javascript.immediate": "#0f52b0178f", "c9.ide.language.javascript.eslint": "#8832423ad1", "c9.ide.language.javascript.tern": "#7aab8b0b6a", - "c9.ide.language.javascript.infer": "#ebb2daf81a", + "c9.ide.language.javascript.infer": "#f3eea89298", "c9.ide.language.jsonalyzer": "#efa4426f1f", "c9.ide.collab": "#104ec85dd1", - "c9.ide.local": "#2bfd7ff051", + "c9.ide.local": "#b6fd6b518f", "c9.ide.find": "#ef82bc4f0d", "c9.ide.find.infiles": "#1b83cf12f1", "c9.ide.find.replace": "#e4daf722b8", @@ -84,14 +84,14 @@ "c9.ide.imgeditor": "#08bbc53578", "c9.ide.immediate": "#6845a93705", "c9.ide.installer": "#38f5840924", - "c9.ide.mount": "#32e79866ee", + "c9.ide.mount": "#f8ce8e4657", "c9.ide.navigate": "#64156c7f4a", "c9.ide.newresource": "#9a7464cc47", "c9.ide.openfiles": "#28a4f5af16", "c9.ide.preview": "#dba2f4214d", "c9.ide.preview.browser": "#ac18aaf31d", "c9.ide.preview.markdown": "#ab8d30ad9f", - "c9.ide.pubsub": "#92ec19ed3a", + "c9.ide.pubsub": "#860ff382ae", "c9.ide.readonly": "#f6f07bbe42", "c9.ide.recentfiles": "#7c099abf40", "c9.ide.remote": "#cd45e81d2f", From 0825d4b88781fe43d7119ae629a3c9c10aaa3f6e Mon Sep 17 00:00:00 2001 From: Lennart Kats Date: Tue, 14 Apr 2015 11:14:06 +0200 Subject: [PATCH 159/160] Rename metrics --- plugins/c9.vfs.client/endpoint.js | 2 +- plugins/c9.vfs.client/vfs_client.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/c9.vfs.client/endpoint.js b/plugins/c9.vfs.client/endpoint.js index 1ed7ee29..3bd55ca3 100644 --- a/plugins/c9.vfs.client/endpoint.js +++ b/plugins/c9.vfs.client/endpoint.js @@ -170,7 +170,7 @@ define(function(require, exports, module) { // just take the first server that doesn't return an error (function tryNext(i) { if (i >= servers.length) { - metrics.increment("connect_failed_all", 1, true); + metrics.increment("vfs.failed.connect_all", 1, true); return callback(new Error("Disconnected: Could not reach your workspace. Please try again later.")); } diff --git a/plugins/c9.vfs.client/vfs_client.js b/plugins/c9.vfs.client/vfs_client.js index a873bce5..31ec4845 100644 --- a/plugins/c9.vfs.client/vfs_client.js +++ b/plugins/c9.vfs.client/vfs_client.js @@ -206,7 +206,7 @@ define(function(require, exports, module) { vfsEndpoint.get(protocolVersion, function(err, urls) { if (err) { - metrics.increment("connect_failed", 1, true); + metrics.increment("vfs.failed.connect", 1, true); if (!showErrorTimer) { showErrorTimer = setTimeout(function() { showVfsError(showErrorTimerMessage); From 32d0f331d4ef92adcc6d2763f9333080731b92d7 Mon Sep 17 00:00:00 2001 From: Matthijs van Henten Date: Tue, 14 Apr 2015 09:50:43 +0000 Subject: [PATCH 160/160] Port less compiler to 2.5x api --- node_modules/architect-build/build.js | 107 +++++++++++++++++--------- package.json | 2 +- 2 files changed, 73 insertions(+), 36 deletions(-) diff --git a/node_modules/architect-build/build.js b/node_modules/architect-build/build.js index 48888813..f59581f3 100644 --- a/node_modules/architect-build/build.js +++ b/node_modules/architect-build/build.js @@ -1,8 +1,9 @@ -var fs = require("fs"); -var path = require("path"); -var async = require("async"); -var mkdirp = require("mkdirp"); +var async = require("async"); +var fs = require("fs"); +var less = require("less"); +var mkdirp = require("mkdirp"); var moduleDeps = require("./module-deps"); +var path = require("path"); function build(config, opts, callback){ if (!opts.configFile) { @@ -157,7 +158,6 @@ function build(config, opts, callback){ }); } -// TODO function createOutputFolder(opts, cb) { var output = (opts.outputFolder || ".") + "/" + (opts.outputFile || ""); output = path.dirname(output); @@ -213,43 +213,80 @@ function compileLess(opts, sources, callback) { }); } + +function compileLibRules(libs, ctx, next) { + // Libs is an array of paths; adds property .compiled to keep a state(cache). + if (libs.compiled) + return next(null, libs.compiled.rules, libs.compiled.css); + + var src = lessPathLib(libs.staticPrefix) + libs.join("\n"); + + less.parse(src, ctx, function(err, root, imports, options) { + if (err) return next(err); + + toCss(root, imports, options, function(err, css) { + if (err) return next(err); + + libs.compiled = { + rules: root.rules, + css: css, + }; + + next(null, libs.compiled.rules, libs.compiled.css); + }); + }); +} + function compileLessFragment(css, libs, root, staticPrefix, path, compress, callback) { - var less = require("less"); - var baseLib = lessPathLib(staticPrefix || libs.staticPrefix); - var parser = new less.Parser({ + + var ctx = { paths: ["/"], filename: root + '/unknown.less', - }); - - if (!libs.compiled) { - parser.parse(lessPathLib(libs.staticPrefix) + libs.join("\n"), function(err, tree) { - libs.compiled = tree; // actually parse isn't async - }); - - libs.css = libs.compiled.toCSS().trim(); - } - // Parse Less Code - var code = baseLib + "\n" + css; - - // Complete paths, but not subdirectories like foo/images/bar.png - code = code.replace(/(["(])(images|icons)\//g, "$1" + staticPrefix + "/$2/"); + compress: !!compress + }; - console.log("[Less] compiling ", path || "skin", root); - parser.parse(code, function (err, tree) { - if (err) - return callback(err); - if (libs.compiled) - tree.rules = libs.compiled.rules.concat(tree.rules); - var css = tree.toCSS({ compress: compress }); - if (libs.css && css.substring(0, libs.css.length) == libs.css) { - css = css.substr(libs.css.length); - } else { - console.warn("couldn't strip default less"); - } - callback(null, css); + compileLibRules( libs, ctx, function(err, libRules, libCss) { + if (err) return callback(err); + + var baseLib = lessPathLib(staticPrefix || libs.staticPrefix); + var code = baseLib + "\n" + css; + + // Complete paths, but not subdirectories like foo/images/bar.png + code = code.replace(/(["(])(images|icons)\//g, "$1" + staticPrefix + "/$2/"); + + console.log("[Less] compiling ", path || "skin", root); + + less.parse(code, ctx, function (err, tree, imports, options) { + if (err) return callback(err); + tree.rules = libRules.concat(tree.rules); + + toCss(tree, imports, options, function(err, css) { + if (err) return callback(err); + + if (css.substring(0, libCss.length) == libCss) { + css = css.substr(libCss.length); + } else { + console.warn("couldn't strip default less"); + } + callback(null, css); + + }); + }); }); } +function toCss(tree, imports, options, callback) { + var parseTree = new less.ParseTree(tree, imports); + var css; + try { + css = parseTree.toCSS(options).css; + } + catch (err) { + return callback(err); + } + callback(null, css); +} + function lessPathLib(staticPrefix) { if (!staticPrefix) return ""; return "@base-path : \"" + staticPrefix + "\";\n" diff --git a/package.json b/package.json index aa4f4bc6..65bd0136 100644 --- a/package.json +++ b/package.json @@ -23,7 +23,7 @@ "engine.io-client": "~1.5.1", "eslint": "git://github.com/cloud9ide/eslint.git#e2d052aafd81ea0aa6d1d4fd9f88f3613e386160", "http-error": "~0.0.5", - "less": "~1.5.1", + "less": "^2.4.0", "mime": "~1.2.9", "mkdirp": "~0.3.5", "msgpack-js": "~0.1.1",