improve ruby outdent

This commit is contained in:
nightwing 2014-05-21 20:32:34 +04:00
commit 72a509e542

View file

@ -74,14 +74,21 @@ oop.inherits(Mode, TextMode);
}; };
this.checkOutdent = function(state, line, input) { this.checkOutdent = function(state, line, input) {
return /^\s+end$/.test(line + input) || /^\s+}$/.test(line + input) || /^\s+else$/.test(line + input); return /^\s+(end|else)$/.test(line + input) || this.$outdent.checkOutdent(line, input);
}; };
this.autoOutdent = function(state, doc, row) { this.autoOutdent = function(state, session, row) {
var indent = this.$getIndent(doc.getLine(row)); var line = session.getLine(row);
var tab = doc.getTabString(); if (/}/.test(line))
if (indent.slice(-tab.length) == tab) return this.$outdent.autoOutdent(session, row);
doc.remove(new Range(row, indent.length-tab.length, row, indent.length)); var indent = this.$getIndent(line);
var prevLine = session.getLine(row - 1);
var prevIndent = this.$getIndent(prevLine);
var tab = session.getTabString();
if (prevIndent.length <= indent.length) {
if (indent.slice(-tab.length) == tab)
session.remove(new Range(row, indent.length-tab.length, row, indent.length));
}
}; };
this.$id = "ace/mode/ruby"; this.$id = "ace/mode/ruby";