cleanup emmet extension

This commit is contained in:
nightwing 2014-07-29 17:40:43 +04:00
commit b2612c6039

View file

@ -34,15 +34,7 @@ var HashHandler = require("ace/keyboard/hash_handler").HashHandler;
var Editor = require("ace/editor").Editor;
var snippetManager = require("ace/snippets").snippetManager;
var Range = require("ace/range").Range;
var emmet;
Editor.prototype.indexToPosition = function(index) {
return this.session.doc.indexToPosition(index);
};
Editor.prototype.positionToIndex = function(pos) {
return this.session.doc.positionToIndex(pos);
};
var emmet, emmetPath;
/**
* Implementation of {@link IEmmetEditor} interface for Ace
@ -72,9 +64,10 @@ AceEmmetEditor.prototype = {
getSelectionRange: function() {
// TODO should start be caret position instead?
var range = this.ace.getSelectionRange();
var doc = this.ace.session.doc;
return {
start: this.ace.positionToIndex(range.start),
end: this.ace.positionToIndex(range.end)
start: doc.positionToIndex(range.start),
end: doc.positionToIndex(range.end)
};
},
@ -91,9 +84,10 @@ AceEmmetEditor.prototype = {
* editor.createSelection(15);
*/
createSelection: function(start, end) {
var doc = this.ace.session.doc;
this.ace.selection.setRange({
start: this.ace.indexToPosition(start),
end: this.ace.indexToPosition(end)
start: doc.indexToPosition(start),
end: doc.indexToPosition(end)
});
},
@ -106,9 +100,10 @@ AceEmmetEditor.prototype = {
* alert(range.start + ', ' + range.end);
*/
getCurrentLineRange: function() {
var row = this.ace.getCursorPosition().row;
var lineLength = this.ace.session.getLine(row).length;
var index = this.ace.positionToIndex({row: row, column: 0});
var ace = this.ace;
var row = ace.getCursorPosition().row;
var lineLength = ace.session.getLine(row).length;
var index = ace.session.doc.positionToIndex({row: row, column: 0});
return {
start: index,
end: index + lineLength
@ -121,7 +116,7 @@ AceEmmetEditor.prototype = {
*/
getCaretPos: function(){
var pos = this.ace.getCursorPosition();
return this.ace.positionToIndex(pos);
return this.ace.session.doc.positionToIndex(pos);
},
/**
@ -129,7 +124,7 @@ AceEmmetEditor.prototype = {
* @param {Number} index Caret position
*/
setCaretPos: function(index){
var pos = this.ace.indexToPosition(index);
var pos = this.ace.session.doc.indexToPosition(index);
this.ace.selection.moveToPosition(pos);
},
@ -169,14 +164,15 @@ AceEmmetEditor.prototype = {
start = 0;
var editor = this.ace;
var range = Range.fromPoints(editor.indexToPosition(start), editor.indexToPosition(end));
var doc = editor.session.doc;
var range = Range.fromPoints(doc.indexToPosition(start), doc.indexToPosition(end));
editor.session.remove(range);
range.end = range.start;
//editor.selection.setRange(range);
value = this.$updateTabstops(value);
snippetManager.insertSnippet(editor, value)
snippetManager.insertSnippet(editor, value);
},
/**
@ -292,7 +288,7 @@ AceEmmetEditor.prototype = {
lastZero = range.create(data.start, result);
}
return result
return result;
},
escape: function(ch) {
if (ch == '$') return '\\$';
@ -363,12 +359,17 @@ exports.runEmmetCommand = function(editor) {
}, 0);
}
var pos = editor.selection.lead;
var token = editor.session.getTokenAt(pos.row, pos.column);
if (token && /\btag\b/.test(token.type))
return false;
try {
var result = actions.run(this.action, editorProxy);
} catch(e) {
editor._signal("changeStatus", typeof e == "string" ? e : e.message);
console.log(e);
result = false
result = false;
}
return result;
};
@ -383,21 +384,36 @@ for (var command in keymap) {
});
}
exports.updateCommands = function(editor, enabled) {
if (enabled) {
editor.keyBinding.addKeyboardHandler(exports.commands);
} else {
editor.keyBinding.removeKeyboardHandler(exports.commands);
}
};
exports.isSupportedMode = function(modeId) {
return modeId && /css|less|scss|sass|stylus|html|php|twig/.test(modeId);
};
var onChangeMode = function(e, target) {
var editor = target;
if (!editor)
return;
var modeId = editor.session.$modeId;
var enabled = modeId && /css|less|scss|sass|stylus|html|php/.test(modeId);
var enabled = exports.isSupportedMode(editor.session.$modeId);
if (e.enableEmmet === false)
enabled = false;
if (enabled)
editor.keyBinding.addKeyboardHandler(exports.commands);
else
editor.keyBinding.removeKeyboardHandler(exports.commands);
if (enabled) {
if (typeof emmetPath == "string") {
require("ace/config").loadModule(emmetPath, function() {
});
emmetPath = null;
}
}
exports.updateCommands(editor, enabled);
};
exports.AceEmmetEditor = AceEmmetEditor;
require("ace/config").defineOptions(Editor.prototype, "editor", {
enableEmmet: {
@ -409,7 +425,11 @@ require("ace/config").defineOptions(Editor.prototype, "editor", {
}
});
exports.setCore = function(e) {emmet = e;};
exports.setCore = function(e) {
if (typeof e == "string")
emmetPath = e;
else
emmet = e;
};
});