mirror of
https://github.com/coderaiser/cloudcmd.git
synced 2026-07-21 10:38:26 +00:00
feature(edward) add jshint, emmet from edit
This commit is contained in:
parent
bf6dffe74b
commit
3392698c79
2 changed files with 105 additions and 102 deletions
|
|
@ -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',
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue