コード例 #1
0
ファイル: language.js プロジェクト: Jalalhejazi/cloud9
        ide.addEventListener("extload", function(){
            var worker = _self.worker = new WorkerClient(["treehugger", "ext", "ace", "c9"], "worker.js", "ext/language/worker", "LanguageWorker");
            complete.setWorker(worker);

            ide.addEventListener("afteropenfile", function(event){
                if (!event.node)
                    return;
                if (!editors.currentEditor || !editors.currentEditor.amlEditor) // No editor, for some reason
                    return;
                ext.initExtension(_self);
                var path = event.node.getAttribute("path");
                worker.call("switchFile", [path, editors.currentEditor.amlEditor.syntax, event.doc.getValue()]);
                event.doc.addEventListener("close", function() {
                    worker.emit("documentClose", {data: path});
                });
                // This is necessary to know which file was opened last, for some reason the afteropenfile events happen out of sequence
                deferred.cancel().schedule(100);
            });

            // Language features
            marker.hook(_self, worker);
            complete.hook(_self, worker);
            refactor.hook(_self, worker);
            keyhandler.hook(_self, worker);

            ide.dispatchEvent("language.worker", {worker: worker});
            ide.addEventListener("$event.language.worker", function(callback){
                callback({worker: worker});
            });
        }, true);
コード例 #2
0
ファイル: language.js プロジェクト: 2thetop/cloud9
        ide.addEventListener("extload", function() {
            var worker;
            if (useUIWorker) {
                worker = _self.worker = createUIWorkerClient(["treehugger", "ext", "ace", "c9"], "ext/language/worker", "LanguageWorker");
            } else  {
                worker = _self.worker = new WorkerClient(["treehugger", "ext", "ace", "c9"], "ext/language/worker", "LanguageWorker");
            }
            complete.setWorker(worker);

            ide.addEventListener("closefile", function(e){
                var path = e.page && e.page.id;
                if (path)
                    worker.emit("documentClose", {data: path});
            });

            ide.addEventListener("afteropenfile", function(event){
                if (!event.node)
                    return;
                if (!editors.currentEditor || !editors.currentEditor.amlEditor) // No editor, for some reason
                    return;
                ext.initExtension(_self);

                var path = event.node.getAttribute("path");
                var editor = editors.currentEditor.amlEditor;
                // background tabs=open document, foreground tab=switch to file
                // this is needed because with concorde changeSession event is fired when document is still empty
                var isVisible = editor.xmlRoot == event.node;
                var data = [
                    util.stripWSFromPath(path),
                    editor.syntax,
                    event.doc.getValue(),
                    null,
                    ide.workspaceDir
                ];
                worker.call("documentOpen", data);
                if (isVisible)
                    worker.call("switchFile", data);
            });

            // Language features
            marker.hook(_self, worker);
            complete.hook(_self, worker);
            refactor.hook(_self, worker);
            outline.hook(_self, worker);
            keyhandler.hook(_self, worker);
            jumptodef.hook(_self, worker);
            quickfix.hook(_self);

            ide.dispatchEvent("language.worker", {worker: worker});
            ide.addEventListener("$event.language.worker", function(callback){
                callback({worker: worker});
            });
        }, true);