From e4ee4299cdac04df6d2caf4ba243f8b04ef97e2b Mon Sep 17 00:00:00 2001 From: Tim Robinson Date: Fri, 5 Jun 2015 10:31:11 +0000 Subject: [PATCH 01/18] Fixed issue with clients in fallback saving reverting code --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 65bce44d..a3745426 100644 --- a/package.json +++ b/package.json @@ -106,7 +106,7 @@ "c9.ide.run": "#cc9d80f8bb", "c9.ide.run.build": "#ad45874c88", "c9.ide.run.debug.xdebug": "#3b1520f83d", - "c9.ide.save": "#a03709ef3f", + "c9.ide.save": "#abaa26f320", "c9.ide.terminal.monitor": "#b0b4d03280", "c9.ide.theme.flat": "#b1d65fa9bb", "c9.ide.threewaymerge": "#229382aa0b", From 427d344fac2636139f5623bced9aa16bf069905e Mon Sep 17 00:00:00 2001 From: Tim Robinson Date: Fri, 5 Jun 2015 13:19:13 +0000 Subject: [PATCH 02/18] Before save is called check tab conflicts are resolved --- package.json | 2 +- plugins/c9.ide.watcher/gui.js | 7 +++---- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index a3745426..241b12b2 100644 --- a/package.json +++ b/package.json @@ -106,7 +106,7 @@ "c9.ide.run": "#cc9d80f8bb", "c9.ide.run.build": "#ad45874c88", "c9.ide.run.debug.xdebug": "#3b1520f83d", - "c9.ide.save": "#abaa26f320", + "c9.ide.save": "#75fc15aafb", "c9.ide.terminal.monitor": "#b0b4d03280", "c9.ide.theme.flat": "#b1d65fa9bb", "c9.ide.threewaymerge": "#229382aa0b", diff --git a/plugins/c9.ide.watcher/gui.js b/plugins/c9.ide.watcher/gui.js index 6bf4147a..9828e971 100644 --- a/plugins/c9.ide.watcher/gui.js +++ b/plugins/c9.ide.watcher/gui.js @@ -102,6 +102,9 @@ define(function(require, exports, module) { save.on("beforeSave", function(e) { e.document.meta.$savingValue = e.save; + if (e.tab.classList.contains("conflict")) { + showChangeDialog(e.tab); + } }, plugin); save.on("afterSave", function(e) { @@ -367,9 +370,7 @@ define(function(require, exports, module) { else { changedPaths[path].tab.document.undoManager.bookmark(-2); changedPaths[path].resolve(); - showChangeDialog(); } - checkEmptyQueue(); } @@ -382,7 +383,6 @@ define(function(require, exports, module) { else { getLatestValue(path, function(err, path, data) { updateChangedPath(err, path, data); - showChangeDialog(); }); } @@ -408,7 +408,6 @@ define(function(require, exports, module) { getLatestValue(path, function(err, path, data) { mergeChangedPath(err, path, data); - showChangeDialog(); }); } From c18b75f30332c294aeb598808608c2e1afdc50bb Mon Sep 17 00:00:00 2001 From: Tim Robinson Date: Fri, 5 Jun 2015 13:27:39 +0000 Subject: [PATCH 03/18] Don't need beforeSaveAll any more --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 241b12b2..f2b73564 100644 --- a/package.json +++ b/package.json @@ -106,7 +106,7 @@ "c9.ide.run": "#cc9d80f8bb", "c9.ide.run.build": "#ad45874c88", "c9.ide.run.debug.xdebug": "#3b1520f83d", - "c9.ide.save": "#75fc15aafb", + "c9.ide.save": "#58b8616a88", "c9.ide.terminal.monitor": "#b0b4d03280", "c9.ide.theme.flat": "#b1d65fa9bb", "c9.ide.threewaymerge": "#229382aa0b", From bb6213e20356c3b3135b96ef2020cef1b523b9a3 Mon Sep 17 00:00:00 2001 From: nightwing Date: Mon, 8 Jun 2015 01:03:16 +0400 Subject: [PATCH 04/18] set node_path via fsOptions --- node_modules/vfs-local/localfs.js | 7 ++++++- package.json | 2 +- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/node_modules/vfs-local/localfs.js b/node_modules/vfs-local/localfs.js index 9d7e2f0c..2118d6af 100644 --- a/node_modules/vfs-local/localfs.js +++ b/node_modules/vfs-local/localfs.js @@ -65,9 +65,14 @@ function logToFile(message){ module.exports = function setup(fsOptions) { var pty; + if (fsOptions.nodePath) { + process.env.NODE_PATH = fsOptions.nodePath; + require("module")._initPaths(); + } if (!fsOptions.nopty) { // on darwin trying to load binary for a wrong version crashes the process - [process.env.HOME + "/.c9/node_modules/pty.js", "pty.js", "pty.nw.js"].some(function(p) { + [(fsOptions.nodePath || process.env.HOME + "/.c9/node_modules") + "/pty.js", + "pty.js", "pty.nw.js"].some(function(p) { try { pty = require(p); return true; diff --git a/package.json b/package.json index 65bce44d..e1e0734a 100644 --- a/package.json +++ b/package.json @@ -67,7 +67,7 @@ "c9.ide.language.javascript.tern": "#2b0bb024da", "c9.ide.language.javascript.infer": "#cfec494a3c", "c9.ide.language.jsonalyzer": "#ba3e0d298c", - "c9.ide.collab": "#532e8d7b5d", + "c9.ide.collab": "#d978678519", "c9.ide.local": "#a9703b630c", "c9.ide.find": "#6cc6d3379d", "c9.ide.find.infiles": "#72582de3cd", From 90baf8a7270267b14afae981f0173f5a8faa551a Mon Sep 17 00:00:00 2001 From: Tim Robinson Date: Mon, 8 Jun 2015 14:36:31 +0000 Subject: [PATCH 05/18] Change current call of showChangeDialog to show it for all changed paths as it no longer calls itself recursively --- plugins/c9.ide.watcher/gui.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/plugins/c9.ide.watcher/gui.js b/plugins/c9.ide.watcher/gui.js index 9828e971..5d5a0a3c 100644 --- a/plugins/c9.ide.watcher/gui.js +++ b/plugins/c9.ide.watcher/gui.js @@ -232,8 +232,12 @@ define(function(require, exports, module) { if (!tabManager.findTab(path)) // drat! tab is gone return; - // Show dialog - showChangeDialog(); + // Show dialogs for changed tabs + for (path in changedPaths) { + tab = changedPaths[path].tab; + data = changedPaths[path].data; + showChangeDialog(tab, data); + } } function checkByStatOrContents() { From ab84c52a13761450e22a3af3b96a525541f1acaf Mon Sep 17 00:00:00 2001 From: Tim Robinson Date: Mon, 8 Jun 2015 14:58:45 +0000 Subject: [PATCH 06/18] Passing path to resolve function to fix race condition with global path variable --- plugins/c9.ide.watcher/gui.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/plugins/c9.ide.watcher/gui.js b/plugins/c9.ide.watcher/gui.js index 5d5a0a3c..69138545 100644 --- a/plugins/c9.ide.watcher/gui.js +++ b/plugins/c9.ide.watcher/gui.js @@ -186,7 +186,7 @@ define(function(require, exports, module) { return; } - function resolve() { + function resolve(path) { console.log("[watchers] resolved change event without dialog", path); doc.tab.classList.remove("conflict"); delete doc.meta.$merge; @@ -340,12 +340,12 @@ define(function(require, exports, module) { var doc = tab.document; doc.setBookmarkedValue(data, true); doc.meta.timestamp = Date.now() - settings.timeOffset; - changedPaths[path].resolve(); + changedPaths[path].resolve(path); } function mergeChangedPath(err, path, data) { merge(changedPaths[path].tab, data); - changedPaths[path].resolve(); + changedPaths[path].resolve(path); } function showChangeDialog(tab, data) { @@ -368,12 +368,12 @@ define(function(require, exports, module) { if (all) { for (var id in changedPaths) { changedPaths[id].tab.document.undoManager.bookmark(-2); - changedPaths[id].resolve(); + changedPaths[id].resolve(path); } } else { changedPaths[path].tab.document.undoManager.bookmark(-2); - changedPaths[path].resolve(); + changedPaths[path].resolve(path); } checkEmptyQueue(); } From 194f578b9dd623ed67cb46bdf9818541fd4d8c32 Mon Sep 17 00:00:00 2001 From: Tim Robinson Date: Tue, 9 Jun 2015 09:27:01 +0000 Subject: [PATCH 07/18] Minor bug fix --- plugins/c9.ide.watcher/gui.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/c9.ide.watcher/gui.js b/plugins/c9.ide.watcher/gui.js index 69138545..abe09de6 100644 --- a/plugins/c9.ide.watcher/gui.js +++ b/plugins/c9.ide.watcher/gui.js @@ -368,7 +368,7 @@ define(function(require, exports, module) { if (all) { for (var id in changedPaths) { changedPaths[id].tab.document.undoManager.bookmark(-2); - changedPaths[id].resolve(path); + changedPaths[id].resolve(id); } } else { From 27941599105961b5a9092cefee6fe3e3970500a2 Mon Sep 17 00:00:00 2001 From: Tim Robinson Date: Wed, 10 Jun 2015 10:40:08 +0000 Subject: [PATCH 08/18] Become server when collab client gets EAGAIN error as the socket has broken somehow --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 3a1da84a..5cb011de 100644 --- a/package.json +++ b/package.json @@ -67,7 +67,7 @@ "c9.ide.language.javascript.tern": "#2b0bb024da", "c9.ide.language.javascript.infer": "#cfec494a3c", "c9.ide.language.jsonalyzer": "#ba3e0d298c", - "c9.ide.collab": "#532e8d7b5d", + "c9.ide.collab": "#a228af3bc9", "c9.ide.local": "#a9703b630c", "c9.ide.find": "#6cc6d3379d", "c9.ide.find.infiles": "#72582de3cd", From 809393434b974010daa5d46f03238bd83cd06f34 Mon Sep 17 00:00:00 2001 From: Tim Robinson Date: Wed, 10 Jun 2015 14:24:08 +0000 Subject: [PATCH 09/18] Resolve has knowledge of it's own path already :) --- plugins/c9.ide.watcher/gui.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/plugins/c9.ide.watcher/gui.js b/plugins/c9.ide.watcher/gui.js index abe09de6..bf5717fe 100644 --- a/plugins/c9.ide.watcher/gui.js +++ b/plugins/c9.ide.watcher/gui.js @@ -186,11 +186,11 @@ define(function(require, exports, module) { return; } - function resolve(path) { + function resolve() { console.log("[watchers] resolved change event without dialog", path); doc.tab.classList.remove("conflict"); delete doc.meta.$merge; - delete changedPaths[path]; + delete changedPaths[this.tab.path]; } var doc = tab.document; @@ -340,12 +340,12 @@ define(function(require, exports, module) { var doc = tab.document; doc.setBookmarkedValue(data, true); doc.meta.timestamp = Date.now() - settings.timeOffset; - changedPaths[path].resolve(path); + changedPaths[path].resolve(); } function mergeChangedPath(err, path, data) { merge(changedPaths[path].tab, data); - changedPaths[path].resolve(path); + changedPaths[path].resolve(); } function showChangeDialog(tab, data) { @@ -368,12 +368,12 @@ define(function(require, exports, module) { if (all) { for (var id in changedPaths) { changedPaths[id].tab.document.undoManager.bookmark(-2); - changedPaths[id].resolve(id); + changedPaths[id].resolve(); } } else { changedPaths[path].tab.document.undoManager.bookmark(-2); - changedPaths[path].resolve(path); + changedPaths[path].resolve(); } checkEmptyQueue(); } From f62b3eb5f27a310135d6e8cc8f11b6403f677c02 Mon Sep 17 00:00:00 2001 From: Tim Robinson Date: Wed, 10 Jun 2015 14:25:13 +0000 Subject: [PATCH 10/18] Fix console log --- plugins/c9.ide.watcher/gui.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/c9.ide.watcher/gui.js b/plugins/c9.ide.watcher/gui.js index bf5717fe..24c06175 100644 --- a/plugins/c9.ide.watcher/gui.js +++ b/plugins/c9.ide.watcher/gui.js @@ -187,7 +187,7 @@ define(function(require, exports, module) { } function resolve() { - console.log("[watchers] resolved change event without dialog", path); + console.log("[watchers] resolved change event without dialog", this.tab.path); doc.tab.classList.remove("conflict"); delete doc.meta.$merge; delete changedPaths[this.tab.path]; From 22f46d3c3d0a3936df9ae0f683503eccf9b6328a Mon Sep 17 00:00:00 2001 From: Tim Robinson Date: Wed, 10 Jun 2015 14:33:30 +0000 Subject: [PATCH 11/18] Fixed race condition --- plugins/c9.ide.watcher/gui.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/plugins/c9.ide.watcher/gui.js b/plugins/c9.ide.watcher/gui.js index 24c06175..b50cabfc 100644 --- a/plugins/c9.ide.watcher/gui.js +++ b/plugins/c9.ide.watcher/gui.js @@ -187,10 +187,10 @@ define(function(require, exports, module) { } function resolve() { - console.log("[watchers] resolved change event without dialog", this.tab.path); + console.log("[watchers] resolved change event without dialog", path); doc.tab.classList.remove("conflict"); delete doc.meta.$merge; - delete changedPaths[this.tab.path]; + delete changedPaths[path]; } var doc = tab.document; @@ -233,9 +233,9 @@ define(function(require, exports, module) { return; // Show dialogs for changed tabs - for (path in changedPaths) { - tab = changedPaths[path].tab; - data = changedPaths[path].data; + for (var changedPath in changedPaths) { + tab = changedPaths[changedPath].tab; + data = changedPaths[changedPath].data; showChangeDialog(tab, data); } } From 2558191a4600237bad65b31d890ed54d34781b84 Mon Sep 17 00:00:00 2001 From: Alex Brausewetter Date: Thu, 11 Jun 2015 12:04:08 +0000 Subject: [PATCH 12/18] Add runner for Ruby 2.2 + Rails stable --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 827e0743..601a82b8 100644 --- a/package.json +++ b/package.json @@ -103,7 +103,7 @@ "c9.ide.recentfiles": "#7c099abf40", "c9.ide.remote": "#301d2ab519", "c9.ide.processlist": "#bc11818bb5", - "c9.ide.run": "#9d632b19c0", + "c9.ide.run": "#469ffef3f1", "c9.ide.run.build": "#ad45874c88", "c9.ide.run.debug.xdebug": "#3b1520f83d", "c9.ide.save": "#a03709ef3f", From c2ac9819a9af51848a38c818772afbdb7f061f6b Mon Sep 17 00:00:00 2001 From: Lennart Kats Date: Thu, 11 Jun 2015 15:49:00 +0200 Subject: [PATCH 13/18] Fix startTime clashing with outer startTime function Fixes c9/c9.ide.language+4 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 65bce44d..a51bfe26 100644 --- a/package.json +++ b/package.json @@ -56,7 +56,7 @@ "c9" ], "c9plugins": { - "c9.ide.language": "#77f75c7635", + "c9.ide.language": "#1ae919380b", "c9.ide.language.css": "#ef8a28943e", "c9.ide.language.generic": "#32986699ac", "c9.ide.language.html": "#bbe81afed1", From 3511e904ff702e8f08f15dcf07828196f181c584 Mon Sep 17 00:00:00 2001 From: Lennart Kats Date: Thu, 11 Jun 2015 20:22:45 +0200 Subject: [PATCH 14/18] Revert "Merge pull request +7688 from c9/sftp-by-default" This reverts commit f66e393a7c5c8d933cf232370cb664ec046e8eab, reversing changes made to 06a81390996d377dc66de72dbf7ef7ae581f8d43. --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 476660a5..3e78dff1 100644 --- a/package.json +++ b/package.json @@ -91,7 +91,7 @@ "c9.ide.imgeditor": "#ed89162aa7", "c9.ide.immediate": "#6845a93705", "c9.ide.installer": "#c36540bd61", - "c9.ide.mount": "#3e90feee2e", + "c9.ide.mount": "#a099f105f0", "c9.ide.navigate": "#f358997d93", "c9.ide.newresource": "#f1f0624768", "c9.ide.openfiles": "#28a4f5af16", From 0e2b7bc3302f0bc0faffaa044327b5296e49d455 Mon Sep 17 00:00:00 2001 From: nightwing Date: Thu, 11 Jun 2015 18:24:29 +0000 Subject: [PATCH 15/18] remove pty.js from list of dependencies --- .gitignore | 2 -- 1 file changed, 2 deletions(-) diff --git a/.gitignore b/.gitignore index 1b51e532..6a5e7944 100644 --- a/.gitignore +++ b/.gitignore @@ -47,8 +47,6 @@ node_modules/kaefer/node_modules/ !node_modules/treehugger !node_modules/logicblox !node_modules/connect-architect -!node_modules/pty.js -node_modules/pty.js/.npmignore !node_modules/ui !node_modules/react-bootstrap !node_modules/oldclient From 9941f29776cae9fd5d9b85ff85640f1f27cf94fd Mon Sep 17 00:00:00 2001 From: nightwing Date: Fri, 12 Jun 2015 15:31:35 +0400 Subject: [PATCH 16/18] do not rely on nodePath having a trailing slash --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index e1e0734a..ba771ee0 100644 --- a/package.json +++ b/package.json @@ -67,7 +67,7 @@ "c9.ide.language.javascript.tern": "#2b0bb024da", "c9.ide.language.javascript.infer": "#cfec494a3c", "c9.ide.language.jsonalyzer": "#ba3e0d298c", - "c9.ide.collab": "#d978678519", + "c9.ide.collab": "#38c07e1665", "c9.ide.local": "#a9703b630c", "c9.ide.find": "#6cc6d3379d", "c9.ide.find.infiles": "#72582de3cd", From de3714852d97d105dba88c68df200c7a012557d9 Mon Sep 17 00:00:00 2001 From: nightwing Date: Sun, 14 Jun 2015 22:20:50 +0400 Subject: [PATCH 17/18] add a way to scroll to subsection in preferences panel --- package.json | 2 +- plugins/c9.ide.preferences/preferencepanel.js | 31 ++++++++++----- plugins/c9.ide.preferences/preferences.js | 38 +++++++++++-------- 3 files changed, 45 insertions(+), 26 deletions(-) diff --git a/package.json b/package.json index 89ee11d6..4c0b1c43 100644 --- a/package.json +++ b/package.json @@ -103,7 +103,7 @@ "c9.ide.recentfiles": "#7c099abf40", "c9.ide.remote": "#301d2ab519", "c9.ide.processlist": "#bc11818bb5", - "c9.ide.run": "#469ffef3f1", + "c9.ide.run": "#567ad01865", "c9.ide.run.build": "#ad45874c88", "c9.ide.run.debug.xdebug": "#3b1520f83d", "c9.ide.save": "#58b8616a88", diff --git a/plugins/c9.ide.preferences/preferencepanel.js b/plugins/c9.ide.preferences/preferencepanel.js index d6917fd1..b3be9ed0 100644 --- a/plugins/c9.ide.preferences/preferencepanel.js +++ b/plugins/c9.ide.preferences/preferencepanel.js @@ -217,21 +217,26 @@ define(function(require, module, exports) { .addNavigation(caption, index, heading.navHtml, plugin); subHeadings[caption] = { navHtml: htmlNode, index: index }; + htmlNode.$caption = caption; - htmlNode.addEventListener("mousedown", function(){ - apf.tween.single(container.$int, { - type: "scrollTop", - steps: 10, - anim: apf.tween.easeInOutCubic, - from: container.$int.scrollTop, - to: form.headings[caption].container.$ext.offsetTop - }) - }); + htmlNode.addEventListener("mousedown", scrollTo.bind(null, caption)); } return subHeadings[caption]; } + function scrollTo(caption) { + if (!form.headings[caption]) + return; + apf.tween.single(container.$int, { + type: "scrollTop", + steps: 10, + anim: apf.tween.easeInOutCubic, + from: container.$int.scrollTop, + to: form.headings[caption].container.$ext.offsetTop + }) + } + /***** LifeCycle *****/ plugin.on("load", function(){ @@ -321,6 +326,10 @@ define(function(require, module, exports) { * @param {Boolean} options.form Specifies whether to create a form for this panel. */ plugin.freezePublicAPI({ + /** + * @ignore. + */ + get section() { return lastA && lastA.$caption; }, /** * The APF UI element that is presenting the pane in the UI. * This property is here for internal reasons only. *Do not @@ -394,6 +403,10 @@ define(function(require, module, exports) { */ show: show, + /** + * Scrolls to a subheading. + */ + scrollTo: scrollTo, /** * Hides the panel. */ diff --git a/plugins/c9.ide.preferences/preferences.js b/plugins/c9.ide.preferences/preferences.js index 20e6df7c..00b9c3ad 100644 --- a/plugins/c9.ide.preferences/preferences.js +++ b/plugins/c9.ide.preferences/preferences.js @@ -64,13 +64,14 @@ define(function(require, exports, module) { bindKey: { mac: "Command-,", win: "Ctrl-," }, exec: function (editor, args) { var tab = tabs.focussedTab; - if (tab && tab.editor.type == "preferences" && !args.panel) { + var toggle = args.toggle || args.source == "click"; + if (tab && tab.editor.type == "preferences" && toggle) { tab.close(); return; } if (focusOpenPrefs()) { if (args.panel) - activate(args.panel); + activate(args.panel, args.section); return; } @@ -80,7 +81,7 @@ define(function(require, exports, module) { active: true }, function(){ if (args.panel) - activate(args.panel); + activate(args.panel, args.section); }); } }, handle); @@ -139,7 +140,6 @@ define(function(require, exports, module) { // Create UI elements parent = e.tab.appendChild(new ui.hsplitbox({ "class" : "bar-preferences", - //"skinset" : "prefs", "anchors" : "0 0 0 0", })); parent.appendChild(navigation); @@ -181,17 +181,31 @@ define(function(require, exports, module) { return htmlNode; } - function activate(panel) { + function activate(panel, section) { if (!drawn) { if (!activePanel) handle.once("draw", function(){ activate(activePanel); }); activePanel = panel; return; } - + if (typeof panel == "string") { + var panels = navigation && navigation.$ext && navigation.$ext.children; + if (panels) { + for (var i = 0; i < panels.length; i++) { + if (panels[i].name == panel) { + panel = panels[i].hostPlugin; + break; + } + } + } + } + if (!panel || !panel.show) + return console.error("Couldn't find preference panel", panel); if (activePanel && activePanel != panel) activePanel.hide(); panel.show(!activePanel); + if (section) + panel.scrollTo(section); activePanel = panel; } @@ -322,18 +336,10 @@ define(function(require, exports, module) { plugin.on("getState", function(e) { e.state.activePanel = activePanel && activePanel.name; + e.state.section = activePanel && activePanel.section; }); plugin.on("setState", function(e) { - var name = e.state.activePanel; - if (activePanel && activePanel.name == name) - return; - var panels = navigation && navigation.$ext && navigation.$ext.children; - if (panels) { - for (var i = 0; i < panels.length; i++) { - if (panels[i].name == name) - return activate(panels[i].hostPlugin); - } - } + activate(e.state.activePanel, e.state.section); }); /***** Lifecycle *****/ From 4799a090e02b4c81818ad74ba6dae522408a13d7 Mon Sep 17 00:00:00 2001 From: Lennart kats Date: Mon, 15 Jun 2015 13:32:37 +0000 Subject: [PATCH 18/18] Add tabs.openFile() error handling --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index f0337f3b..ca94d15a 100644 --- a/package.json +++ b/package.json @@ -56,7 +56,7 @@ "c9" ], "c9plugins": { - "c9.ide.language": "#77f75c7635", + "c9.ide.language": "#63f30da4a2", "c9.ide.language.css": "#ef8a28943e", "c9.ide.language.generic": "#32986699ac", "c9.ide.language.html": "#bbe81afed1",