diff --git a/lib/client/edit.js b/lib/client/edit.js index 2b70a951..899aee36 100644 --- a/lib/client/edit.js +++ b/lib/client/edit.js @@ -1,4 +1,4 @@ -var CloudCmd, Util, DOM, CloudFunc, io, ace, Zip, Format, MenuIO, edward, restafary; +var CloudCmd, Util, DOM, CloudFunc, io, Zip, Format, MenuIO, edward, restafary; (function(CloudCmd, Util, DOM, CloudFunc) { 'use strict'; @@ -7,7 +7,7 @@ var CloudCmd, Util, DOM, CloudFunc, io, ace, Zip, Format, MenuIO, edward, restaf function EditProto(callback) { var Name = 'Edit', Loading = true, - DIR = '/modules/ace-builds/src-noconflict/', + Info = DOM.CurrentInfo, Files = DOM.Files, Storage = DOM.Storage, @@ -17,14 +17,12 @@ var CloudCmd, Util, DOM, CloudFunc, io, ace, Zip, Format, MenuIO, edward, restaf Value, Edit = this, Diff, - Emmet, - Modelist, Menu, Dialog = DOM.Dialog, Images = DOM.Images, - Element, JSHintConfig, + Element, ConfigView = { beforeClose: function() { isChanged(); @@ -152,9 +150,9 @@ var CloudCmd, Util, DOM, CloudFunc, io, ace, Zip, Format, MenuIO, edward, restaf ConfigView.beforeShow = callback; if (isDir) - Edit.setMode('json'); + edward.setMode('json'); else - Edit.setModeForPath(name); + edward.setModeForPath(name); Info.getData(function(error, data) { if (error) { @@ -181,38 +179,6 @@ var CloudCmd, Util, DOM, CloudFunc, io, ace, Zip, Format, MenuIO, edward, restaf edward.goToLine(); }; - this.setModeForPath = function(name) { - var session = edward.getSession(), - modesByName = Modelist.modesByName, - mode = Modelist.getModeForPath(name).mode, - - htmlMode = modesByName.html.mode, - jsMode = modesByName.javascript.mode, - - isHTML = mode === htmlMode, - isJS = mode === jsMode; - - session.setMode(mode, function() { - edward.setUseOfWorker(mode); - - if (isHTML) - setEmmet(); - - if (isJS && session.getUseWorker()) - setJsHintConfig(); - }); - }; - - this.setMode = function(mode) { - var ext, - modesByName = Modelist.modesByName; - - if (modesByName[mode]) { - ext = modesByName[mode].extensions.split('|')[0]; - Edit.setModeForPath('.' + ext); - } - }; - function isChanged() { var is, value = edward.getValue(), @@ -227,31 +193,7 @@ var CloudCmd, Util, DOM, CloudFunc, io, ace, Zip, Format, MenuIO, edward, restaf } } - function setEmmet() { - Files.get('edit', function(error, config) { - var extensions = config.extensions, - isEmmet = extensions.emmet; - - if (isEmmet) - exec.if(Emmet, function() { - edward.setOption('enableEmmet', true); - }, function(callback) { - var url; - - url = join([ - DIR + 'emmet.js', - DIR + 'ext-emmet.js' - ]); - - DOM.load.js(url, function() { - Emmet = ace.require('ace/ext/emmet'); - Emmet.setCore(window.emmet); - - callback(); - }); - }); - }); - } + this.create = function(element) { Element = element; @@ -304,15 +246,6 @@ var CloudCmd, Util, DOM, CloudFunc, io, ace, Zip, Format, MenuIO, edward, restaf } }); - ace.require('ace/ext/language_tools'); - Modelist = ace.require('ace/ext/modelist'); - - Files.get('edit', function(error, config) { - var options = config.options; - - edward.setOptions(options); - }); - return this; }; @@ -440,32 +373,6 @@ var CloudCmd, Util, DOM, CloudFunc, io, ace, Zip, Format, MenuIO, edward, restaf }); } - function setJsHintConfig(callback) { - var JSHINT_PATH = CloudCmd.PREFIX + '/.jshintrc', - func = function() { - var session = edward.getSession(), - worker = session.$worker; - - if (worker) - worker.send('changeOptions', [JSHintConfig]); - - exec(callback); - }; - - exec.if(JSHintConfig, func, function() { - DOM.load.ajax({ - url : JSHINT_PATH, - success : function(data) { - exec.try(function() { - JSHintConfig = JSON.parse(data); - }); - - func(); - } - }); - }); - } - function loadFiles(element, callback) { var dir = CloudCmd.LIBDIRCLIENT, name = 'edward', diff --git a/lib/client/edward.js b/lib/client/edward.js index 84ca7ddd..7f8cf373 100644 --- a/lib/client/edward.js +++ b/lib/client/edward.js @@ -1,6 +1,6 @@ -var join, ace, Util, DOM; +var join, ace, Util, DOM, CloudCmd; -(function(global, join, DOM, exec, load, loadRemote) { +(function(global, join, DOM, exec, load, loadRemote, Files) { 'use strict'; if (typeof module !== 'undefined' && module.exports) @@ -13,6 +13,9 @@ var join, ace, Util, DOM; ElementMsg, Value, Ace, + Modelist, + JSHintConfig, + Emmet, edward = function(el, callback) { Element = el || document.body; @@ -26,6 +29,14 @@ var join, ace, Util, DOM; loadFiles, function() { Ace = ace.edit(Element); + ace.require('ace/ext/language_tools'); + Modelist = ace.require('ace/ext/modelist'); + + Files.get('edit', function(error, config) { + var options = config.options; + + edward.setOptions(options); + }); callback(); }, ]); @@ -122,6 +133,38 @@ var join, ace, Util, DOM; session.setUseWorker(isMatch); }; + edward.setMode = function(mode) { + var ext, + modesByName = Modelist.modesByName; + + if (modesByName[mode]) { + ext = modesByName[mode].extensions.split('|')[0]; + edward.setModeForPath('.' + ext); + } + }; + + edward.setModeForPath = function(name) { + var session = edward.getSession(), + modesByName = Modelist.modesByName, + mode = Modelist.getModeForPath(name).mode, + + htmlMode = modesByName.html.mode, + jsMode = modesByName.javascript.mode, + + isHTML = mode === htmlMode, + isJS = mode === jsMode; + + session.setMode(mode, function() { + edward.setUseOfWorker(mode); + + if (isHTML) + setEmmet(); + + if (isJS && session.getUseWorker()) + setJsHintConfig(); + }); + }; + edward.selectAll = function() { Ace.selectAll(); }; @@ -168,6 +211,59 @@ var join, ace, Util, DOM; }); }; + function setEmmet() { + Files.get('edit', function(error, config) { + var dir = '/modules/ace-builds/src-noconflict/', + extensions = config.extensions, + isEmmet = extensions.emmet; + + if (isEmmet) + exec.if(Emmet, function() { + edward.setOption('enableEmmet', true); + }, function(callback) { + var url; + + url = join([ + dir + 'emmet.js', + dir + 'ext-emmet.js' + ]); + + load.js(url, function() { + Emmet = ace.require('ace/ext/emmet'); + Emmet.setCore(window.emmet); + + callback(); + }); + }); + }); + } + + function setJsHintConfig(callback) { + var JSHINT_PATH = CloudCmd.PREFIX + '/.jshintrc', + func = function() { + var session = edward.getSession(), + worker = session.$worker; + + if (worker) + worker.send('changeOptions', [JSHintConfig]); + + exec(callback); + }; + + exec.if(JSHintConfig, func, function() { + DOM.load.ajax({ + url : JSHINT_PATH, + success : function(data) { + exec.try(function() { + JSHintConfig = JSON.parse(data); + }); + + func(); + } + }); + }); + } + function onDrop(event) { var reader, files, onLoad = function(event) { @@ -208,4 +304,4 @@ var join, ace, Util, DOM; return edward; } -})(this, join, DOM, Util.exec, DOM.load, DOM.loadRemote); +})(this, join, DOM, Util.exec, DOM.load, DOM.loadRemote, DOM.Files);