diff --git a/docs/CODING_STANDARDS.md b/docs/CODING_STANDARDS.md index 8318a955..9b9cf96d 100644 --- a/docs/CODING_STANDARDS.md +++ b/docs/CODING_STANDARDS.md @@ -47,7 +47,7 @@ Semicolons There are [rebellious forces][isaac] that try to steal your semicolons from you. But make no mistake, our traditional culture is still [well and truly alive][hnsemicolons]. So follow the community, and use those semicolons! -[isaac]: community.html#isaac-schlueter +[isaac]: http://nodeguide.com/community.html#isaac-schlueter [hnsemicolons]: http://news.ycombinator.com/item?id=1547647 Trailing whitespace @@ -130,7 +130,7 @@ If the block inside the curlys consists only of one statement the curlys may be return callback(err); ``` -However within one condition curlys must be used consistently. +However, curlys must be used consistently throughout the statement. *Right:* @@ -144,6 +144,15 @@ However within one condition curlys must be used consistently. } ``` +*Right:* + +```javascript + if (true) + console.log("Yes"); + else + console.log("Oh noo"); +``` + *Wrong:* ```javascript @@ -256,7 +265,7 @@ Constants Constants should be declared as regular variables or static class properties, using all uppercase letters. -Node.js / V8 actually supports mozilla's [const][const] extension, but unfortunately that cannot be applied to class members, nor is it part of any ECMA standard. +Node.js / V8 actually supports Mozilla's [const][const] extension, but unfortunately that cannot be applied to class members, nor is it part of any ECMA standard. *Right:* @@ -655,7 +664,7 @@ NOTE: It is sometimes useful to write a case statement which falls through to th Vertical alignment ------------------ -Vertically aligning asignments can improve readability but also makes it harder to maintain the code. The style should be avoided. +Vertically aligning assignments can improve readability but also makes it harder to maintain the code. The style should be avoided. *Right*: @@ -698,7 +707,7 @@ All classes and public API should be documented using [JSDuck annotations](https Commit messages --------------- -We try to adhere to https://github.com/blog/926-shiny-new-commit-styles and to a lesser extent http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html. +We try to adhere to https://github.com/blog/926-shiny-new-commit-styles and to a lesser extent http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html. Don't write `I fixed a bug` or `Fixed bug`, or even `Added a cool fix for bug`. Just write `Fix bug in wrop wraffles` or `Add feature flip floppers`, present tense. Branch Naming @@ -706,14 +715,14 @@ Branch Naming We follow the uni-repo approach so our source code is in one place. To work around some of the issues - for example looking at all PRs affecting a certain service - we prefix branches with the name of the service(s) the branch affects. -PR branch names, e.g. +PR branch names, e.g. “api-”, “ide-”, “multi-ide-vfs-sapi-” - + Checking for branch naming consistency is part of the review process and the teams responsibility. Use “all-” in case of doubt. E.g., https://github.com/c9/newclient/pull/12962/files affects redis schema code. - + Generally, releasing changes affecting several services is a smell so this can help you identify possible issues. You can now look for all PRs which made it in like so (api in this case): diff --git a/package.json b/package.json index 011ed824..f91aa8a9 100644 --- a/package.json +++ b/package.json @@ -70,13 +70,13 @@ "c9.ide.language.javascript.tern": "#4d53f32c29", "c9.ide.language.javascript.infer": "#b9c2e4bdb8", "c9.ide.language.jsonalyzer": "#a0549e14ff", - "c9.ide.language.codeintel": "#7de0cedca6", + "c9.ide.language.codeintel": "#957b840fff", "c9.ide.collab": "#d77a9618ea", "c9.ide.local": "#9169fec157", "c9.ide.find": "#e632ecf4be", "c9.ide.find.infiles": "#ad9ff74638", "c9.ide.find.replace": "#8468067976", - "c9.ide.run.debug": "#8963fb45c4", + "c9.ide.run.debug": "#dab860c046", "c9.automate": "#47e2c429c9", "c9.ide.ace.emmet": "#6dc4585e02", "c9.ide.ace.gotoline": "#d33220b1e0", @@ -95,7 +95,7 @@ "c9.ide.imgeditor": "#612e75ef4f", "c9.ide.immediate": "#0b0ee744f9", "c9.ide.installer": "#2921efaf6d", - "c9.ide.language.python": "#e1b6ce0937", + "c9.ide.language.python": "#189b55135d", "c9.ide.language.go": "#c58539fc05", "c9.ide.navigate": "#5d5707058c", "c9.ide.newresource": "#981a408a7b", diff --git a/plugins/c9.error/error_handler.js b/plugins/c9.error/error_handler.js index 4e3fe2af..323a89cb 100644 --- a/plugins/c9.error/error_handler.js +++ b/plugins/c9.error/error_handler.js @@ -115,7 +115,7 @@ function plugin(options, imports, register) { var accept = req.headers.accept || ''; if (statusCode == 500) { - console.error(err && err.stack); + console.error(err && (err.stack || err)); emitter.emit("internalServerError", { err: err, req: req diff --git a/plugins/c9.ide.ace/ace.js b/plugins/c9.ide.ace/ace.js index da050694..8f0747fa 100644 --- a/plugins/c9.ide.ace/ace.js +++ b/plugins/c9.ide.ace/ace.js @@ -1461,11 +1461,16 @@ define(function(require, exports, module) { return; } else if (/^#!/.test(firstLine)) { - var match = firstLine.match(/\b(node|bash|sh)\b/); - switch (match && match[1]) { + var match = firstLine.match(/\b(bash|ksh|node|perl|sh)\b|\b(php|python|ruby)/); + switch (match && (match[1] || match[2])) { + case "bash": // fallthrough + case "ksh": + case "sh": syntax = "sh"; break; case "node": syntax = "javascript"; break; - case "sh": // fallthrough - case "bash": syntax = "sh"; break; + case "perl": syntax = "perl"; break; + case "php": syntax = "php"; break; + case "python": syntax = "python"; break; + case "ruby": syntax = "ruby"; break; default: syntax = ""; break; } }