From 74f38ffd6a19b03823701867c51b0271a8a4ee23 Mon Sep 17 00:00:00 2001 From: nightwing Date: Wed, 27 Mar 2013 14:19:42 +0400 Subject: [PATCH] add autoindent after { and brace pairing for logiql --- lib/ace/mode/logiql.js | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/lib/ace/mode/logiql.js b/lib/ace/mode/logiql.js index cdf6b607..c640bd42 100644 --- a/lib/ace/mode/logiql.js +++ b/lib/ace/mode/logiql.js @@ -38,11 +38,15 @@ var LogiQLHighlightRules = require("./logiql_highlight_rules").LogiQLHighlightRu var FoldMode = require("./folding/coffee").FoldMode; var TokenIterator = require("../token_iterator").TokenIterator; var Range = require("../range").Range; +var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; var Mode = function() { var highlighter = new LogiQLHighlightRules(); this.foldingRules = new FoldMode(); this.$tokenizer = new Tokenizer(highlighter.getRules()); + this.$outdent = new MatchingBraceOutdent(); + this.$behaviour = new CstyleBehaviour(); }; oop.inherits(Mode, TextMode); @@ -62,12 +66,15 @@ oop.inherits(Mode, TextMode); return indent; var match = line.match(); - if (/(-->|<--|<-|->)\s*$/.test(line)) + if (/(-->|<--|<-|->|{)\s*$/.test(line)) indent += tab; return indent; }; this.checkOutdent = function(state, line, input) { + if (this.$outdent.checkOutdent(line, input)) + return true; + if (input !== "\n" && input !== "\r\n") return false; @@ -78,6 +85,8 @@ oop.inherits(Mode, TextMode); }; this.autoOutdent = function(state, doc, row) { + if (this.$outdent.autoOutdent(doc, row)) + return; var prevLine = doc.getLine(row); var match = prevLine.match(/^\s+/); var column = prevLine.lastIndexOf(".") + 1;