use config defineOptions

This commit is contained in:
nightwing 2013-02-21 10:23:57 +04:00
commit 04f06ebefe
2 changed files with 41 additions and 3 deletions

View file

@ -381,8 +381,7 @@ bindDropdown("split", function(value) {
bindCheckbox("elastic_tabstops", function(checked) {
if (checked === true)
new ElasticTabstopsLite(env.editor);
env.editor.setOption("useElasticTabstops", checked);
});

View file

@ -33,10 +33,30 @@ define(function(require, exports, module) {
var ElasticTabstopsLite = function(editor) {
this.$editor = editor;
var self = this;
var changedRows = [];
var recordChanges = false;
this.onAfterExec = function() {
recordChanges = false;
self.processRows(changedRows);
changedRows = [];
};
this.onExec = function() {
recordChanges = true;
};
this.onChange = function(e) {
var range = e.data.range
if (recordChanges) {
if (changedRows.indexOf(range.start.row) == -1)
changedRows.push(range.start.row);
if (range.end.row != range.start.row)
changedRows.push(range.end.row);
}
};
};
(function() {
this.processRow = function(rows) {
this.processRows = function(rows) {
this.$inChange = true;
var checkedRows = [];
@ -272,4 +292,23 @@ var ElasticTabstopsLite = function(editor) {
exports.ElasticTabstopsLite = ElasticTabstopsLite;
var Editor = require("./editor").Editor;
require("./config").defineOptions(Editor.prototype, "editor", {
useElasticTabstops: {
set: function(val) {
if (val) {
if (!this.elasticTabstops)
this.elasticTabstops = new ElasticTabstopsLite(this);
this.commands.on("afterExec", this.elasticTabstops.onAfterExec);
this.commands.on("exec", this.elasticTabstops.onExec);
this.on("change", this.elasticTabstops.onChange);
} else if (this.elasticTabstops) {
this.commands.removeListener("afterExec", this.elasticTabstops.onAfterExec);
this.commands.removeListener("exec", this.elasticTabstops.onExec);
this.removeListener("change", this.elasticTabstops.onChange);
}
}
}
});
});