corrade-nucleus-nucleons – Blame information for rev 20

Subversion Repositories:
Rev:
Rev Author Line No. Line
20 office 1 ace.define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"], function(require, exports, module) {
2 "use strict";
3  
4 var oop = require("../../lib/oop");
5 var BaseFoldMode = require("./fold_mode").FoldMode;
6 var Range = require("../../range").Range;
7  
8 var FoldMode = exports.FoldMode = function() {};
9 oop.inherits(FoldMode, BaseFoldMode);
10  
11 (function() {
12  
13 this.getFoldWidgetRange = function(session, foldStyle, row) {
14 var range = this.indentationBlock(session, row);
15 if (range)
16 return range;
17  
18 var re = /\S/;
19 var line = session.getLine(row);
20 var startLevel = line.search(re);
21 if (startLevel == -1 || line[startLevel] != "#")
22 return;
23  
24 var startColumn = line.length;
25 var maxRow = session.getLength();
26 var startRow = row;
27 var endRow = row;
28  
29 while (++row < maxRow) {
30 line = session.getLine(row);
31 var level = line.search(re);
32  
33 if (level == -1)
34 continue;
35  
36 if (line[level] != "#")
37 break;
38  
39 endRow = row;
40 }
41  
42 if (endRow > startRow) {
43 var endColumn = session.getLine(endRow).length;
44 return new Range(startRow, startColumn, endRow, endColumn);
45 }
46 };
47 this.getFoldWidget = function(session, foldStyle, row) {
48 var line = session.getLine(row);
49 var indent = line.search(/\S/);
50 var next = session.getLine(row + 1);
51 var prev = session.getLine(row - 1);
52 var prevIndent = prev.search(/\S/);
53 var nextIndent = next.search(/\S/);
54  
55 if (indent == -1) {
56 session.foldWidgets[row - 1] = prevIndent!= -1 && prevIndent < nextIndent ? "start" : "";
57 return "";
58 }
59 if (prevIndent == -1) {
60 if (indent == nextIndent && line[indent] == "#" && next[indent] == "#") {
61 session.foldWidgets[row - 1] = "";
62 session.foldWidgets[row + 1] = "";
63 return "start";
64 }
65 } else if (prevIndent == indent && line[indent] == "#" && prev[indent] == "#") {
66 if (session.getLine(row - 2).search(/\S/) == -1) {
67 session.foldWidgets[row - 1] = "start";
68 session.foldWidgets[row + 1] = "";
69 return "";
70 }
71 }
72  
73 if (prevIndent!= -1 && prevIndent < indent)
74 session.foldWidgets[row - 1] = "start";
75 else
76 session.foldWidgets[row - 1] = "";
77  
78 if (indent < nextIndent)
79 return "start";
80 else
81 return "";
82 };
83  
84 }).call(FoldMode.prototype);
85  
86 });
87  
88 ace.define("ace/mode/snippets",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/text_highlight_rules","ace/mode/folding/coffee"], function(require, exports, module) {
89 "use strict";
90  
91 var oop = require("../lib/oop");
92 var TextMode = require("./text").Mode;
93 var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
94  
95 var SnippetHighlightRules = function() {
96  
97 var builtins = "SELECTION|CURRENT_WORD|SELECTED_TEXT|CURRENT_LINE|LINE_INDEX|" +
98 "LINE_NUMBER|SOFT_TABS|TAB_SIZE|FILENAME|FILEPATH|FULLNAME";
99  
100 this.$rules = {
101 "start" : [
102 {token:"constant.language.escape", regex: /\\[\$}`\\]/},
103 {token:"keyword", regex: "\\$(?:TM_)?(?:" + builtins + ")\\b"},
104 {token:"variable", regex: "\\$\\w+"},
105 {onMatch: function(value, state, stack) {
106 if (stack[1])
107 stack[1]++;
108 else
109 stack.unshift(state, 1);
110 return this.tokenName;
111 }, tokenName: "markup.list", regex: "\\${", next: "varDecl"},
112 {onMatch: function(value, state, stack) {
113 if (!stack[1])
114 return "text";
115 stack[1]--;
116 if (!stack[1])
117 stack.splice(0,2);
118 return this.tokenName;
119 }, tokenName: "markup.list", regex: "}"},
120 {token: "doc.comment", regex:/^\${2}-{5,}$/}
121 ],
122 "varDecl" : [
123 {regex: /\d+\b/, token: "constant.numeric"},
124 {token:"keyword", regex: "(?:TM_)?(?:" + builtins + ")\\b"},
125 {token:"variable", regex: "\\w+"},
126 {regex: /:/, token: "punctuation.operator", next: "start"},
127 {regex: /\//, token: "string.regex", next: "regexp"},
128 {regex: "", next: "start"}
129 ],
130 "regexp" : [
131 {regex: /\\./, token: "escape"},
132 {regex: /\[/, token: "regex.start", next: "charClass"},
133 {regex: "/", token: "string.regex", next: "format"},
134 {"token": "string.regex", regex:"."}
135 ],
136 charClass : [
137 {regex: "\\.", token: "escape"},
138 {regex: "\\]", token: "regex.end", next: "regexp"},
139 {"token": "string.regex", regex:"."}
140 ],
141 "format" : [
142 {regex: /\\[ulULE]/, token: "keyword"},
143 {regex: /\$\d+/, token: "variable"},
144 {regex: "/[gim]*:?", token: "string.regex", next: "start"},
145 {"token": "string", regex:"."}
146 ]
147 };
148 };
149 oop.inherits(SnippetHighlightRules, TextHighlightRules);
150  
151 exports.SnippetHighlightRules = SnippetHighlightRules;
152  
153 var SnippetGroupHighlightRules = function() {
154 this.$rules = {
155 "start" : [
156 {token: "text", regex: "^\\t", next: "sn-start"},
157 {token:"invalid", regex: /^ \s*/},
158 {token:"comment", regex: /^#.*/},
159 {token:"constant.language.escape", regex: "^regex ", next: "regex"},
160 {token:"constant.language.escape", regex: "^(trigger|endTrigger|name|snippet|guard|endGuard|tabTrigger|key)\\b"}
161 ],
162 "regex" : [
163 {token:"text", regex: "\\."},
164 {token:"keyword", regex: "/"},
165 {token:"empty", regex: "$", next: "start"}
166 ]
167 };
168 this.embedRules(SnippetHighlightRules, "sn-", [
169 {token: "text", regex: "^\\t", next: "sn-start"},
170 {onMatch: function(value, state, stack) {
171 stack.splice(stack.length);
172 return this.tokenName;
173 }, tokenName: "text", regex: "^(?!\t)", next: "start"}
174 ])
175  
176 };
177  
178 oop.inherits(SnippetGroupHighlightRules, TextHighlightRules);
179  
180 exports.SnippetGroupHighlightRules = SnippetGroupHighlightRules;
181  
182 var FoldMode = require("./folding/coffee").FoldMode;
183  
184 var Mode = function() {
185 this.HighlightRules = SnippetGroupHighlightRules;
186 this.foldingRules = new FoldMode();
187 this.$behaviour = this.$defaultBehaviour;
188 };
189 oop.inherits(Mode, TextMode);
190  
191 (function() {
192 this.$indentWithTabs = true;
193 this.lineCommentStart = "#";
194 this.$id = "ace/mode/snippets";
195 }).call(Mode.prototype);
196 exports.Mode = Mode;
197  
198  
199 });