kopia lustrzana https://github.com/c9/core
124 wiersze
5.0 KiB
JavaScript
124 wiersze
5.0 KiB
JavaScript
/**
|
|
* Cloud9 Python support
|
|
*
|
|
* @copyright 2015, Ajax.org B.V.
|
|
*/
|
|
define(function(require, exports, module) {
|
|
main.consumes = [
|
|
"Plugin", "language", "jsonalyzer", "settings",
|
|
"preferences", "c9"
|
|
];
|
|
main.provides = ["language.python"];
|
|
return main;
|
|
|
|
function main(options, imports, register) {
|
|
var Plugin = imports.Plugin;
|
|
var language = imports.language;
|
|
var jsonalyzer = imports["jsonalyzer"];
|
|
var prefs = imports.preferences;
|
|
var settings = imports.settings;
|
|
var c9 = imports.c9;
|
|
var plugin = new Plugin("Ajax.org", main.consumes);
|
|
var jediServer = require("text!./server/jedi_server.py")
|
|
.replace(/ {4}/g, " ").replace(/'/g, "'\\''");
|
|
var launchCommand = require("text!./server/launch_command.sh")
|
|
.replace(/ {2,}/g, " ");
|
|
|
|
plugin.on("load", function() {
|
|
jsonalyzer.registerWorkerHandler("plugins/c9.ide.language.python/worker/python_jsonalyzer");
|
|
|
|
prefs.add({
|
|
"Project": {
|
|
"Python Support": {
|
|
position: 1300,
|
|
"Enable Python code completion": {
|
|
position: 310,
|
|
type: "checkbox",
|
|
path: "project/python/@completion",
|
|
},
|
|
"Python Version": {
|
|
position: 320,
|
|
type: "dropdown",
|
|
path: "project/python/@version",
|
|
items: [
|
|
{ caption: "Python 2", value: "python2" },
|
|
{ caption: "Python 3", value: "python3" },
|
|
]
|
|
},
|
|
"Pylint command-line options": {
|
|
position: 330,
|
|
type: "textbox",
|
|
width: 300,
|
|
message: "-d all -e E -e F",
|
|
path: "project/python/@pylintFlags",
|
|
},
|
|
"PYTHONPATH": {
|
|
position: 340,
|
|
type: "textbox",
|
|
width: 300,
|
|
path: "project/python/@path",
|
|
},
|
|
"Format Code on Save": {
|
|
position: 350,
|
|
type: "checkbox",
|
|
path: "project/python/@formatOnSave",
|
|
},
|
|
"Custom Code Formatter": {
|
|
position: 360,
|
|
type: "textbox",
|
|
path: "project/python/@formatter",
|
|
}
|
|
}
|
|
}
|
|
}, plugin);
|
|
|
|
settings.on("read", function(e) {
|
|
settings.setDefaults("project/python", [
|
|
["version", "python2"],
|
|
["completion", true],
|
|
["path", options.pythonPath || "/usr/local/lib/python2.7/dist-packages:/usr/local/lib/python3.4/dist-packages"]
|
|
]);
|
|
}, plugin);
|
|
|
|
language.registerLanguageHandler("plugins/c9.ide.language.python/worker/python_linter", function(err, handler) {
|
|
if (err) return console.error(err);
|
|
setupHandler(handler);
|
|
});
|
|
|
|
language.registerLanguageHandler("plugins/c9.ide.language.python/worker/python_completer", function(err, handler) {
|
|
if (err) return console.error(err);
|
|
setupHandler(handler);
|
|
});
|
|
});
|
|
|
|
function setupHandler(handler) {
|
|
handler.emit("set_python_scripts", {
|
|
jediServer: jediServer,
|
|
launchCommand: launchCommand,
|
|
hosted: !options.testing && c9.hosted
|
|
});
|
|
settings.on("project/python", sendSettings.bind(null, handler), plugin);
|
|
sendSettings(handler);
|
|
}
|
|
|
|
function sendSettings(handler) {
|
|
handler.emit("set_python_config", {
|
|
pythonVersion: settings.get("project/python/@version"),
|
|
pythonPath: settings.get("project/python/@path"),
|
|
pylintFlags: settings.get("project/python/@pylintFlags"),
|
|
completion: settings.get("project/python/@completion"),
|
|
});
|
|
}
|
|
|
|
plugin.on("unload", function() {
|
|
jsonalyzer.unregisterWorkerHandler("plugins/c9.ide.language.python/worker/python_jsonalyzer");
|
|
language.unregisterLanguageHandler("plugins/c9.ide.language.python/worker/python_completer");
|
|
language.unregisterLanguageHandler("plugins/c9.ide.language.python/worker/python_linter");
|
|
});
|
|
|
|
/** @ignore */
|
|
register(null, {
|
|
"language.python": plugin
|
|
});
|
|
}
|
|
}); |