Skip to content

Commit fe2f6c9

Browse files
committed
Syntax highlighting works with brace_outdenting required
1 parent 0a9c6ed commit fe2f6c9

File tree

1 file changed

+49
-5
lines changed

1 file changed

+49
-5
lines changed

Resources/public/ace/src/mode-gherkin-en.js

+49-5
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
1-
define('ace/mode/gherkin-en', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/mode/javascript', 'ace/mode/css', 'ace/tokenizer', 'ace/mode/html_highlight_rules', 'ace/mode/behaviour/html', 'ace/mode/folding/html'], function(require, exports, module) {
1+
define('ace/mode/gherkin-en', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/mode/javascript', 'ace/mode/css', 'ace/tokenizer', 'ace/mode/html_highlight_rules', 'ace/mode/behaviour/html', 'ace/mode/folding/html', 'ace/mode/matching_brace_outdent'], function(require, exports, module) {
22

33

44
var oop = require("../lib/oop");
5-
var TextMode = require("ace/mode/text").Mode;
6-
var Tokenizer = require("ace/tokenizer").Tokenizer;
7-
var MatchingBraceOutdent = require("ace/mode/matching_brace_outdent").MatchingBraceOutdent;
8-
var Range = require("ace/range").Range;
5+
var TextMode = require("./text").Mode;
6+
var Tokenizer = require("../tokenizer").Tokenizer;
7+
var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent;
8+
var Range = require("../range").Range;
99
var TextHighlightRules = require("ace/mode/text_highlight_rules").TextHighlightRules;
1010
var GherkinHighlightRules = function()
1111
{
@@ -45,6 +45,9 @@ var GherkinHighlightRules = function()
4545
};
4646
};
4747

48+
49+
50+
4851
oop.inherits(GherkinHighlightRules, TextHighlightRules);
4952

5053
var Mode = function()
@@ -79,3 +82,44 @@ oop.inherits(Mode, TextMode);
7982
exports.Mode = Mode;
8083

8184
});
85+
86+
87+
define('ace/mode/matching_brace_outdent', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) {
88+
89+
90+
var Range = require("../range").Range;
91+
92+
var MatchingBraceOutdent = function() {};
93+
94+
(function() {
95+
96+
this.checkOutdent = function(line, input) {
97+
if (! /^\s+$/.test(line))
98+
return false;
99+
100+
return /^\s*\}/.test(input);
101+
};
102+
103+
this.autoOutdent = function(doc, row) {
104+
var line = doc.getLine(row);
105+
var match = line.match(/^(\s*\})/);
106+
107+
if (!match) return 0;
108+
109+
var column = match[1].length;
110+
var openBracePos = doc.findMatchingBracket({row: row, column: column});
111+
112+
if (!openBracePos || openBracePos.row == row) return 0;
113+
114+
var indent = this.$getIndent(doc.getLine(openBracePos.row));
115+
doc.replace(new Range(row, 0, row, column-1), indent);
116+
};
117+
118+
this.$getIndent = function(line) {
119+
return line.match(/^\s*/)[0];
120+
};
121+
122+
}).call(MatchingBraceOutdent.prototype);
123+
124+
exports.MatchingBraceOutdent = MatchingBraceOutdent;
125+
});

0 commit comments

Comments
 (0)