ace-rails-ap 2.0.0 → 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (167) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +1 -1
  3. data/lib/ace/rails/version.rb +1 -1
  4. data/vendor/assets/javascripts/ace/ace.js +6911 -5290
  5. data/vendor/assets/javascripts/ace/ext-chromevox.js +537 -0
  6. data/vendor/assets/javascripts/ace/ext-elastic_tabstops_lite.js +301 -0
  7. data/vendor/assets/javascripts/ace/ext-emmet.js +1109 -0
  8. data/vendor/assets/javascripts/ace/ext-keybinding_menu.js +207 -0
  9. data/vendor/assets/javascripts/ace/ext-language_tools.js +1665 -0
  10. data/vendor/assets/javascripts/ace/ext-modelist.js +168 -0
  11. data/vendor/assets/javascripts/ace/ext-old_ie.js +500 -0
  12. data/vendor/assets/javascripts/ace/ext-options.js +252 -0
  13. data/vendor/assets/javascripts/ace/ext-searchbox.js +421 -0
  14. data/vendor/assets/javascripts/ace/ext-settings_menu.js +632 -0
  15. data/vendor/assets/javascripts/ace/ext-spellcheck.js +68 -0
  16. data/vendor/assets/javascripts/ace/ext-split.js +271 -0
  17. data/vendor/assets/javascripts/ace/ext-static_highlight.js +178 -0
  18. data/vendor/assets/javascripts/ace/ext-statusbar.js +47 -0
  19. data/vendor/assets/javascripts/ace/ext-textarea.js +478 -0
  20. data/vendor/assets/javascripts/ace/ext-themelist.js +86 -0
  21. data/vendor/assets/javascripts/ace/ext-whitespace.js +206 -0
  22. data/vendor/assets/javascripts/ace/keybinding-emacs.js +822 -131
  23. data/vendor/assets/javascripts/ace/keybinding-vim.js +382 -258
  24. data/vendor/assets/javascripts/ace/mode-abap.js +261 -0
  25. data/vendor/assets/javascripts/ace/mode-actionscript.js +257 -0
  26. data/vendor/assets/javascripts/ace/mode-ada.js +118 -0
  27. data/vendor/assets/javascripts/ace/mode-asciidoc.js +373 -0
  28. data/vendor/assets/javascripts/ace/mode-assembly_x86.js +217 -0
  29. data/vendor/assets/javascripts/ace/mode-autohotkey.js +225 -0
  30. data/vendor/assets/javascripts/ace/mode-batchfile.js +213 -0
  31. data/vendor/assets/javascripts/ace/mode-c9search.js +144 -124
  32. data/vendor/assets/javascripts/ace/mode-c_cpp.js +296 -254
  33. data/vendor/assets/javascripts/ace/mode-clojure.js +113 -177
  34. data/vendor/assets/javascripts/ace/mode-cobol.js +125 -0
  35. data/vendor/assets/javascripts/ace/mode-coffee.js +152 -235
  36. data/vendor/assets/javascripts/ace/mode-coldfusion.js +823 -835
  37. data/vendor/assets/javascripts/ace/mode-csharp.js +325 -187
  38. data/vendor/assets/javascripts/ace/mode-css.js +583 -297
  39. data/vendor/assets/javascripts/ace/mode-curly.js +2423 -0
  40. data/vendor/assets/javascripts/ace/mode-d.js +492 -0
  41. data/vendor/assets/javascripts/ace/mode-dart.js +993 -0
  42. data/vendor/assets/javascripts/ace/mode-diff.js +124 -204
  43. data/vendor/assets/javascripts/ace/mode-django.js +2448 -0
  44. data/vendor/assets/javascripts/ace/mode-dot.js +361 -0
  45. data/vendor/assets/javascripts/ace/mode-ejs.js +2817 -0
  46. data/vendor/assets/javascripts/ace/mode-erlang.js +987 -0
  47. data/vendor/assets/javascripts/ace/mode-forth.js +280 -0
  48. data/vendor/assets/javascripts/ace/mode-ftl.js +1061 -0
  49. data/vendor/assets/javascripts/ace/mode-glsl.js +313 -275
  50. data/vendor/assets/javascripts/ace/mode-golang.js +268 -275
  51. data/vendor/assets/javascripts/ace/mode-groovy.js +347 -492
  52. data/vendor/assets/javascripts/ace/mode-haml.js +498 -0
  53. data/vendor/assets/javascripts/ace/mode-handlebars.js +2433 -0
  54. data/vendor/assets/javascripts/ace/mode-haskell.js +362 -0
  55. data/vendor/assets/javascripts/ace/mode-haxe.js +226 -202
  56. data/vendor/assets/javascripts/ace/mode-html.js +1099 -802
  57. data/vendor/assets/javascripts/ace/mode-html_completions.js +309 -0
  58. data/vendor/assets/javascripts/ace/mode-html_ruby.js +2822 -0
  59. data/vendor/assets/javascripts/ace/mode-ini.js +185 -0
  60. data/vendor/assets/javascripts/ace/mode-jack.js +653 -0
  61. data/vendor/assets/javascripts/ace/mode-jade.js +2081 -0
  62. data/vendor/assets/javascripts/ace/mode-java.js +339 -488
  63. data/vendor/assets/javascripts/ace/mode-javascript.js +342 -478
  64. data/vendor/assets/javascripts/ace/mode-json.js +215 -178
  65. data/vendor/assets/javascripts/ace/mode-jsoniq.js +2761 -0
  66. data/vendor/assets/javascripts/ace/mode-jsp.js +1553 -0
  67. data/vendor/assets/javascripts/ace/mode-jsx.js +325 -289
  68. data/vendor/assets/javascripts/ace/mode-julia.js +286 -0
  69. data/vendor/assets/javascripts/ace/mode-latex.js +141 -46
  70. data/vendor/assets/javascripts/ace/mode-less.js +493 -151
  71. data/vendor/assets/javascripts/ace/mode-liquid.js +594 -656
  72. data/vendor/assets/javascripts/ace/mode-lisp.js +137 -0
  73. data/vendor/assets/javascripts/ace/mode-livescript.js +288 -0
  74. data/vendor/assets/javascripts/ace/mode-logiql.js +669 -0
  75. data/vendor/assets/javascripts/ace/mode-lsl.js +890 -0
  76. data/vendor/assets/javascripts/ace/mode-lua.js +274 -368
  77. data/vendor/assets/javascripts/ace/mode-luapage.js +1331 -1107
  78. data/vendor/assets/javascripts/ace/mode-lucene.js +64 -0
  79. data/vendor/assets/javascripts/ace/mode-makefile.js +332 -0
  80. data/vendor/assets/javascripts/ace/mode-markdown.js +1303 -948
  81. data/vendor/assets/javascripts/ace/mode-matlab.js +230 -0
  82. data/vendor/assets/javascripts/ace/mode-mushcode.js +705 -0
  83. data/vendor/assets/javascripts/ace/mode-mushcode_high_rules.js +569 -0
  84. data/vendor/assets/javascripts/ace/mode-mysql.js +185 -0
  85. data/vendor/assets/javascripts/ace/mode-nix.js +935 -0
  86. data/vendor/assets/javascripts/ace/mode-objectivec.js +699 -0
  87. data/vendor/assets/javascripts/ace/mode-ocaml.js +44 -63
  88. data/vendor/assets/javascripts/ace/mode-pascal.js +233 -0
  89. data/vendor/assets/javascripts/ace/mode-perl.js +116 -189
  90. data/vendor/assets/javascripts/ace/mode-pgsql.js +886 -500
  91. data/vendor/assets/javascripts/ace/mode-php.js +1158 -380
  92. data/vendor/assets/javascripts/ace/mode-plain_text.js +56 -0
  93. data/vendor/assets/javascripts/ace/mode-powershell.js +222 -167
  94. data/vendor/assets/javascripts/ace/mode-prolog.js +354 -0
  95. data/vendor/assets/javascripts/ace/mode-properties.js +100 -0
  96. data/vendor/assets/javascripts/ace/mode-protobuf.js +885 -0
  97. data/vendor/assets/javascripts/ace/mode-python.js +99 -201
  98. data/vendor/assets/javascripts/ace/mode-r.js +337 -0
  99. data/vendor/assets/javascripts/ace/mode-rdoc.js +210 -0
  100. data/vendor/assets/javascripts/ace/mode-rhtml.js +2663 -0
  101. data/vendor/assets/javascripts/ace/mode-ruby.js +262 -136
  102. data/vendor/assets/javascripts/ace/mode-rust.js +245 -0
  103. data/vendor/assets/javascripts/ace/mode-sass.js +443 -0
  104. data/vendor/assets/javascripts/ace/mode-scad.js +225 -240
  105. data/vendor/assets/javascripts/ace/mode-scala.js +340 -494
  106. data/vendor/assets/javascripts/ace/mode-scheme.js +143 -0
  107. data/vendor/assets/javascripts/ace/mode-scss.js +499 -157
  108. data/vendor/assets/javascripts/ace/mode-sh.js +180 -110
  109. data/vendor/assets/javascripts/ace/mode-sjs.js +1154 -0
  110. data/vendor/assets/javascripts/ace/mode-snippets.js +198 -0
  111. data/vendor/assets/javascripts/ace/mode-soy_template.js +2707 -0
  112. data/vendor/assets/javascripts/ace/mode-space.js +160 -0
  113. data/vendor/assets/javascripts/ace/mode-sql.js +48 -69
  114. data/vendor/assets/javascripts/ace/mode-stylus.js +447 -0
  115. data/vendor/assets/javascripts/ace/mode-svg.js +552 -605
  116. data/vendor/assets/javascripts/ace/mode-tcl.js +139 -98
  117. data/vendor/assets/javascripts/ace/mode-tex.js +187 -0
  118. data/vendor/assets/javascripts/ace/mode-textile.js +29 -40
  119. data/vendor/assets/javascripts/ace/mode-tmsnippet.js +200 -0
  120. data/vendor/assets/javascripts/ace/mode-toml.js +177 -0
  121. data/vendor/assets/javascripts/ace/mode-twig.js +2228 -0
  122. data/vendor/assets/javascripts/ace/mode-typescript.js +1018 -0
  123. data/vendor/assets/javascripts/ace/mode-vbscript.js +250 -0
  124. data/vendor/assets/javascripts/ace/mode-velocity.js +1621 -0
  125. data/vendor/assets/javascripts/ace/mode-verilog.js +127 -0
  126. data/vendor/assets/javascripts/ace/mode-vhdl.js +139 -0
  127. data/vendor/assets/javascripts/ace/mode-xml.js +350 -242
  128. data/vendor/assets/javascripts/ace/mode-xquery.js +2490 -300
  129. data/vendor/assets/javascripts/ace/mode-yaml.js +146 -45
  130. data/vendor/assets/javascripts/ace/theme-ambiance.js +202 -0
  131. data/vendor/assets/javascripts/ace/theme-chaos.js +179 -0
  132. data/vendor/assets/javascripts/ace/theme-chrome.js +97 -153
  133. data/vendor/assets/javascripts/ace/theme-clouds.js +78 -119
  134. data/vendor/assets/javascripts/ace/theme-clouds_midnight.js +79 -120
  135. data/vendor/assets/javascripts/ace/theme-cobalt.js +89 -140
  136. data/vendor/assets/javascripts/ace/theme-crimson_editor.js +93 -145
  137. data/vendor/assets/javascripts/ace/theme-dawn.js +84 -143
  138. data/vendor/assets/javascripts/ace/theme-dreamweaver.js +99 -162
  139. data/vendor/assets/javascripts/ace/theme-eclipse.js +78 -111
  140. data/vendor/assets/javascripts/ace/theme-github.js +70 -121
  141. data/vendor/assets/javascripts/ace/theme-idle_fingers.js +75 -134
  142. data/vendor/assets/javascripts/ace/theme-kr.js +135 -0
  143. data/vendor/assets/javascripts/ace/theme-merbivore.js +80 -143
  144. data/vendor/assets/javascripts/ace/theme-merbivore_soft.js +81 -149
  145. data/vendor/assets/javascripts/ace/theme-mono_industrial.js +87 -146
  146. data/vendor/assets/javascripts/ace/theme-monokai.js +88 -146
  147. data/vendor/assets/javascripts/ace/theme-pastel_on_dark.js +82 -142
  148. data/vendor/assets/javascripts/ace/theme-solarized_dark.js +83 -144
  149. data/vendor/assets/javascripts/ace/theme-solarized_light.js +76 -133
  150. data/vendor/assets/javascripts/ace/theme-terminal.js +145 -0
  151. data/vendor/assets/javascripts/ace/theme-textmate.js +101 -158
  152. data/vendor/assets/javascripts/ace/theme-tomorrow.js +89 -163
  153. data/vendor/assets/javascripts/ace/theme-tomorrow_night.js +89 -163
  154. data/vendor/assets/javascripts/ace/theme-tomorrow_night_blue.js +89 -165
  155. data/vendor/assets/javascripts/ace/theme-tomorrow_night_bright.js +101 -162
  156. data/vendor/assets/javascripts/ace/theme-tomorrow_night_eighties.js +90 -160
  157. data/vendor/assets/javascripts/ace/theme-twilight.js +87 -158
  158. data/vendor/assets/javascripts/ace/theme-vibrant_ink.js +75 -140
  159. data/vendor/assets/javascripts/ace/theme-xcode.js +120 -0
  160. data/vendor/assets/javascripts/ace/worker-coffee.js +3049 -2665
  161. data/vendor/assets/javascripts/ace/worker-css.js +1779 -4376
  162. data/vendor/assets/javascripts/ace/worker-javascript.js +8701 -9008
  163. data/vendor/assets/javascripts/ace/worker-json.js +709 -1340
  164. data/vendor/assets/javascripts/ace/worker-lua.js +3525 -0
  165. data/vendor/assets/javascripts/ace/worker-php.js +6893 -0
  166. data/vendor/assets/javascripts/ace/worker-xquery.js +19924 -64507
  167. metadata +100 -17
@@ -1,101 +1,86 @@
1
1
  define('ace/mode/golang', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/golang_highlight_rules', 'ace/mode/matching_brace_outdent', 'ace/mode/behaviour/cstyle', 'ace/mode/folding/cstyle'], function(require, exports, module) {
2
2
 
3
- var oop = require("../lib/oop");
4
- var TextMode = require("./text").Mode;
5
- var Tokenizer = require("../tokenizer").Tokenizer;
6
- var GolangHighlightRules = require("./golang_highlight_rules").GolangHighlightRules;
7
- var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent;
8
- var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour;
9
- var CStyleFoldMode = require("./folding/cstyle").FoldMode;
10
-
11
- var Mode = function() {
12
- this.$tokenizer = new Tokenizer(new GolangHighlightRules().getRules());
13
- this.$outdent = new MatchingBraceOutdent();
14
- this.foldingRules = new CStyleFoldMode();
15
- };
16
- oop.inherits(Mode, TextMode);
17
-
18
- (function() {
19
-
20
- this.toggleCommentLines = function(state, doc, startRow, endRow) {
21
- var outdent = true;
22
- var outentedRows = [];
23
- var re = /^(\s*)\/\//;
24
-
25
- for (var i=startRow; i<= endRow; i++) {
26
- if (!re.test(doc.getLine(i))) {
27
- outdent = false;
28
- break;
29
- }
30
- }
3
+ var oop = require("../lib/oop");
4
+ var TextMode = require("./text").Mode;
5
+ var Tokenizer = require("../tokenizer").Tokenizer;
6
+ var GolangHighlightRules = require("./golang_highlight_rules").GolangHighlightRules;
7
+ var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent;
8
+ var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour;
9
+ var CStyleFoldMode = require("./folding/cstyle").FoldMode;
10
+
11
+ var Mode = function() {
12
+ this.HighlightRules = GolangHighlightRules;
13
+ this.$outdent = new MatchingBraceOutdent();
14
+ this.foldingRules = new CStyleFoldMode();
15
+ };
16
+ oop.inherits(Mode, TextMode);
31
17
 
32
- if (outdent) {
33
- var deleteRange = new Range(0, 0, 0, 0);
34
- for (var i=startRow; i<= endRow; i++)
35
- {
36
- var line = doc.getLine(i);
37
- var m = line.match(re);
38
- deleteRange.start.row = i;
39
- deleteRange.end.row = i;
40
- deleteRange.end.column = m[0].length;
41
- doc.replace(deleteRange, m[1]);
42
- }
43
- }
44
- else {
45
- doc.indentRows(startRow, endRow, "//");
46
- }
47
- };
18
+ (function() {
19
+
20
+ this.lineCommentStart = "//";
21
+ this.blockComment = {start: "/*", end: "*/"};
48
22
 
49
- this.getNextLineIndent = function(state, line, tab) {
50
- var indent = this.$getIndent(line);
23
+ this.getNextLineIndent = function(state, line, tab) {
24
+ var indent = this.$getIndent(line);
51
25
 
52
- var tokenizedLine = this.$tokenizer.getLineTokens(line, state);
53
- var tokens = tokenizedLine.tokens;
54
- var endState = tokenizedLine.state;
26
+ var tokenizedLine = this.getTokenizer().getLineTokens(line, state);
27
+ var tokens = tokenizedLine.tokens;
28
+ var endState = tokenizedLine.state;
55
29
 
56
- if (tokens.length && tokens[tokens.length-1].type == "comment") {
57
- return indent;
58
- }
59
-
60
- if (state == "start") {
61
- var match = line.match(/^.*[\{\(\[]\s*$/);
62
- if (match) {
63
- indent += tab;
64
- }
30
+ if (tokens.length && tokens[tokens.length-1].type == "comment") {
31
+ return indent;
32
+ }
33
+
34
+ if (state == "start") {
35
+ var match = line.match(/^.*[\{\(\[]\s*$/);
36
+ if (match) {
37
+ indent += tab;
65
38
  }
39
+ }
66
40
 
67
- return indent;
68
- };//end getNextLineIndent
41
+ return indent;
42
+ };//end getNextLineIndent
69
43
 
70
- this.checkOutdent = function(state, line, input) {
71
- return this.$outdent.checkOutdent(line, input);
72
- };
44
+ this.checkOutdent = function(state, line, input) {
45
+ return this.$outdent.checkOutdent(line, input);
46
+ };
73
47
 
74
- this.autoOutdent = function(state, doc, row) {
75
- this.$outdent.autoOutdent(doc, row);
76
- };
48
+ this.autoOutdent = function(state, doc, row) {
49
+ this.$outdent.autoOutdent(doc, row);
50
+ };
77
51
 
78
- }).call(Mode.prototype);
52
+ this.$id = "ace/mode/golang";
53
+ }).call(Mode.prototype);
79
54
 
80
- exports.Mode = Mode;
55
+ exports.Mode = Mode;
81
56
  });
82
- define('ace/mode/golang_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/lang', 'ace/mode/doc_comment_highlight_rules', 'ace/mode/text_highlight_rules'], function(require, exports, module) {
57
+ define('ace/mode/golang_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/doc_comment_highlight_rules', 'ace/mode/text_highlight_rules'], function(require, exports, module) {
83
58
  var oop = require("../lib/oop");
84
- var lang = require("../lib/lang");
85
59
  var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules;
86
60
  var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
87
61
 
88
62
  var GolangHighlightRules = function() {
89
- var keywords = lang.arrayToMap(
90
- ("true|else|false|break|case|return|goto|if|const|" +
91
- "continue|struct|default|switch|for|" +
92
- "func|import|package|chan|defer|fallthrough|go|interface|map|range" +
93
- "select|type|var").split("|")
63
+ var keywords = (
64
+ "else|break|case|return|goto|if|const|select|" +
65
+ "continue|struct|default|switch|for|range|" +
66
+ "func|import|package|chan|defer|fallthrough|go|interface|map|range|" +
67
+ "select|type|var"
94
68
  );
95
-
96
- var buildinConstants = lang.arrayToMap(
97
- ("nil|true|false|iota").split("|")
69
+ var builtinTypes = (
70
+ "string|uint8|uint16|uint32|uint64|int8|int16|int32|int64|float32|" +
71
+ "float64|complex64|complex128|byte|rune|uint|int|uintptr|bool|error"
98
72
  );
73
+ var builtinFunctions = (
74
+ "make|close|new|panic|recover"
75
+ );
76
+ var builtinConstants = ("nil|true|false|iota");
77
+
78
+ var keywordMapper = this.createKeywordMapper({
79
+ "keyword": keywords,
80
+ "constant.language": builtinConstants,
81
+ "support.function": builtinFunctions,
82
+ "support.type": builtinTypes
83
+ }, "identifier");
99
84
 
100
85
  this.$rules = {
101
86
  "start" : [
@@ -106,25 +91,22 @@ define('ace/mode/golang_highlight_rules', ['require', 'exports', 'module' , 'ace
106
91
  DocCommentHighlightRules.getStartRule("doc-start"),
107
92
  {
108
93
  token : "comment", // multi line comment
109
- merge : true,
110
94
  regex : "\\/\\*",
111
95
  next : "comment"
112
96
  }, {
113
97
  token : "string", // single line
114
98
  regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'
115
- }, {
116
- token : "string", // multi line string start
117
- merge : true,
118
- regex : '["].*\\\\$',
119
- next : "qqstring"
120
99
  }, {
121
100
  token : "string", // single line
122
- regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"
101
+ regex : '[`](?:[^`]*)[`]'
123
102
  }, {
124
103
  token : "string", // multi line string start
125
104
  merge : true,
126
- regex : "['].*\\\\$",
127
- next : "qstring"
105
+ regex : '[`](?:[^`]*)$',
106
+ next : "bqstring"
107
+ }, {
108
+ token : "constant.numeric", // rune
109
+ regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))[']"
128
110
  }, {
129
111
  token : "constant.numeric", // hex
130
112
  regex : "0[xX][0-9a-fA-F]+\\b"
@@ -132,26 +114,11 @@ define('ace/mode/golang_highlight_rules', ['require', 'exports', 'module' , 'ace
132
114
  token : "constant.numeric", // float
133
115
  regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"
134
116
  }, {
135
- token : "constant", // <CONSTANT>
136
- regex : "<[a-zA-Z0-9.]+>"
137
- }, {
138
- token : "keyword", // pre-compiler directivs
139
- regex : "(?:#include|#pragma|#line|#define|#undef|#ifdef|#else|#elif|#endif|#ifndef)"
140
- }, {
141
- token : function(value) {
142
- if (value == "this")
143
- return "variable.language";
144
- else if (keywords.hasOwnProperty(value))
145
- return "keyword";
146
- else if (buildinConstants.hasOwnProperty(value))
147
- return "constant.language";
148
- else
149
- return "identifier";
150
- },
117
+ token : keywordMapper,
151
118
  regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b"
152
119
  }, {
153
120
  token : "keyword.operator",
154
- regex : "!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|==|=|!=|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|new|delete|typeof|void)"
121
+ regex : "!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|==|=|!=|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^="
155
122
  }, {
156
123
  token : "punctuation.operator",
157
124
  regex : "\\?|\\:|\\,|\\;|\\."
@@ -161,6 +128,9 @@ define('ace/mode/golang_highlight_rules', ['require', 'exports', 'module' , 'ace
161
128
  }, {
162
129
  token : "paren.rparen",
163
130
  regex : "[\\])}]"
131
+ }, {
132
+ token: "invalid",
133
+ regex: "\\s+$"
164
134
  }, {
165
135
  token : "text",
166
136
  regex : "\\s+"
@@ -173,37 +143,24 @@ define('ace/mode/golang_highlight_rules', ['require', 'exports', 'module' , 'ace
173
143
  next : "start"
174
144
  }, {
175
145
  token : "comment", // comment spanning whole line
176
- merge : true,
177
146
  regex : ".+"
178
147
  }
179
148
  ],
180
- "qqstring" : [
181
- {
182
- token : "string",
183
- regex : '(?:(?:\\\\.)|(?:[^"\\\\]))*?"',
184
- next : "start"
185
- }, {
186
- token : "string",
187
- merge : true,
188
- regex : '.+'
189
- }
190
- ],
191
- "qstring" : [
149
+ "bqstring" : [
192
150
  {
193
151
  token : "string",
194
- regex : "(?:(?:\\\\.)|(?:[^'\\\\]))*?'",
152
+ regex : '(?:[^`]*)`',
195
153
  next : "start"
196
154
  }, {
197
155
  token : "string",
198
- merge : true,
199
156
  regex : '.+'
200
157
  }
201
158
  ]
202
159
  };
203
-
204
- this.embedRules(DocCommentHighlightRules, "doc-",
205
- [ DocCommentHighlightRules.getEndRule("start") ]);
206
- }
160
+
161
+ this.embedRules(DocCommentHighlightRules, "doc-",
162
+ [ DocCommentHighlightRules.getEndRule("start") ]);
163
+ };
207
164
  oop.inherits(GolangHighlightRules, TextHighlightRules);
208
165
 
209
166
  exports.GolangHighlightRules = GolangHighlightRules;
@@ -222,21 +179,10 @@ var DocCommentHighlightRules = function() {
222
179
  token : "comment.doc.tag",
223
180
  regex : "@[\\w\\d_]+" // TODO: fix email addresses
224
181
  }, {
225
- token : "comment.doc",
226
- merge : true,
227
- regex : "\\s+"
228
- }, {
229
- token : "comment.doc",
230
- merge : true,
231
- regex : "TODO"
232
- }, {
233
- token : "comment.doc",
234
- merge : true,
235
- regex : "[^@\\*]+"
182
+ token : "comment.doc.tag",
183
+ regex : "\\bTODO\\b"
236
184
  }, {
237
- token : "comment.doc",
238
- merge : true,
239
- regex : "."
185
+ defaultToken : "comment.doc"
240
186
  }]
241
187
  };
242
188
  };
@@ -246,7 +192,6 @@ oop.inherits(DocCommentHighlightRules, TextHighlightRules);
246
192
  DocCommentHighlightRules.getStartRule = function(start) {
247
193
  return {
248
194
  token : "comment.doc", // doc comment
249
- merge : true,
250
195
  regex : "\\/\\*(?=\\*)",
251
196
  next : start
252
197
  };
@@ -255,7 +200,6 @@ DocCommentHighlightRules.getStartRule = function(start) {
255
200
  DocCommentHighlightRules.getEndRule = function (start) {
256
201
  return {
257
202
  token : "comment.doc", // closing comment
258
- merge : true,
259
203
  regex : "\\*\\/",
260
204
  next : start
261
205
  };
@@ -298,12 +242,7 @@ var MatchingBraceOutdent = function() {};
298
242
  };
299
243
 
300
244
  this.$getIndent = function(line) {
301
- var match = line.match(/^(\s+)/);
302
- if (match) {
303
- return match[1];
304
- }
305
-
306
- return "";
245
+ return line.match(/^\s*/)[0];
307
246
  };
308
247
 
309
248
  }).call(MatchingBraceOutdent.prototype);
@@ -311,59 +250,155 @@ var MatchingBraceOutdent = function() {};
311
250
  exports.MatchingBraceOutdent = MatchingBraceOutdent;
312
251
  });
313
252
 
314
- define('ace/mode/behaviour/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/behaviour'], function(require, exports, module) {
253
+ define('ace/mode/behaviour/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/behaviour', 'ace/token_iterator', 'ace/lib/lang'], function(require, exports, module) {
315
254
 
316
255
 
317
256
  var oop = require("../../lib/oop");
318
257
  var Behaviour = require("../behaviour").Behaviour;
258
+ var TokenIterator = require("../../token_iterator").TokenIterator;
259
+ var lang = require("../../lib/lang");
260
+
261
+ var SAFE_INSERT_IN_TOKENS =
262
+ ["text", "paren.rparen", "punctuation.operator"];
263
+ var SAFE_INSERT_BEFORE_TOKENS =
264
+ ["text", "paren.rparen", "punctuation.operator", "comment"];
265
+
266
+
267
+ var autoInsertedBrackets = 0;
268
+ var autoInsertedRow = -1;
269
+ var autoInsertedLineEnd = "";
270
+ var maybeInsertedBrackets = 0;
271
+ var maybeInsertedRow = -1;
272
+ var maybeInsertedLineStart = "";
273
+ var maybeInsertedLineEnd = "";
319
274
 
320
275
  var CstyleBehaviour = function () {
276
+
277
+ CstyleBehaviour.isSaneInsertion = function(editor, session) {
278
+ var cursor = editor.getCursorPosition();
279
+ var iterator = new TokenIterator(session, cursor.row, cursor.column);
280
+ if (!this.$matchTokenType(iterator.getCurrentToken() || "text", SAFE_INSERT_IN_TOKENS)) {
281
+ var iterator2 = new TokenIterator(session, cursor.row, cursor.column + 1);
282
+ if (!this.$matchTokenType(iterator2.getCurrentToken() || "text", SAFE_INSERT_IN_TOKENS))
283
+ return false;
284
+ }
285
+ iterator.stepForward();
286
+ return iterator.getCurrentTokenRow() !== cursor.row ||
287
+ this.$matchTokenType(iterator.getCurrentToken() || "text", SAFE_INSERT_BEFORE_TOKENS);
288
+ };
289
+
290
+ CstyleBehaviour.$matchTokenType = function(token, types) {
291
+ return types.indexOf(token.type || token) > -1;
292
+ };
293
+
294
+ CstyleBehaviour.recordAutoInsert = function(editor, session, bracket) {
295
+ var cursor = editor.getCursorPosition();
296
+ var line = session.doc.getLine(cursor.row);
297
+ if (!this.isAutoInsertedClosing(cursor, line, autoInsertedLineEnd[0]))
298
+ autoInsertedBrackets = 0;
299
+ autoInsertedRow = cursor.row;
300
+ autoInsertedLineEnd = bracket + line.substr(cursor.column);
301
+ autoInsertedBrackets++;
302
+ };
303
+
304
+ CstyleBehaviour.recordMaybeInsert = function(editor, session, bracket) {
305
+ var cursor = editor.getCursorPosition();
306
+ var line = session.doc.getLine(cursor.row);
307
+ if (!this.isMaybeInsertedClosing(cursor, line))
308
+ maybeInsertedBrackets = 0;
309
+ maybeInsertedRow = cursor.row;
310
+ maybeInsertedLineStart = line.substr(0, cursor.column) + bracket;
311
+ maybeInsertedLineEnd = line.substr(cursor.column);
312
+ maybeInsertedBrackets++;
313
+ };
314
+
315
+ CstyleBehaviour.isAutoInsertedClosing = function(cursor, line, bracket) {
316
+ return autoInsertedBrackets > 0 &&
317
+ cursor.row === autoInsertedRow &&
318
+ bracket === autoInsertedLineEnd[0] &&
319
+ line.substr(cursor.column) === autoInsertedLineEnd;
320
+ };
321
+
322
+ CstyleBehaviour.isMaybeInsertedClosing = function(cursor, line) {
323
+ return maybeInsertedBrackets > 0 &&
324
+ cursor.row === maybeInsertedRow &&
325
+ line.substr(cursor.column) === maybeInsertedLineEnd &&
326
+ line.substr(0, cursor.column) == maybeInsertedLineStart;
327
+ };
328
+
329
+ CstyleBehaviour.popAutoInsertedClosing = function() {
330
+ autoInsertedLineEnd = autoInsertedLineEnd.substr(1);
331
+ autoInsertedBrackets--;
332
+ };
333
+
334
+ CstyleBehaviour.clearMaybeInsertedClosing = function() {
335
+ maybeInsertedBrackets = 0;
336
+ maybeInsertedRow = -1;
337
+ };
321
338
 
322
339
  this.add("braces", "insertion", function (state, action, editor, session, text) {
340
+ var cursor = editor.getCursorPosition();
341
+ var line = session.doc.getLine(cursor.row);
323
342
  if (text == '{') {
324
343
  var selection = editor.getSelectionRange();
325
344
  var selected = session.doc.getTextRange(selection);
326
- if (selected !== "") {
345
+ if (selected !== "" && selected !== "{" && editor.getWrapBehavioursEnabled()) {
327
346
  return {
328
347
  text: '{' + selected + '}',
329
348
  selection: false
330
349
  };
331
- } else {
332
- return {
333
- text: '{}',
334
- selection: [1, 1]
335
- };
350
+ } else if (CstyleBehaviour.isSaneInsertion(editor, session)) {
351
+ if (/[\]\}\)]/.test(line[cursor.column]) || editor.inMultiSelectMode) {
352
+ CstyleBehaviour.recordAutoInsert(editor, session, "}");
353
+ return {
354
+ text: '{}',
355
+ selection: [1, 1]
356
+ };
357
+ } else {
358
+ CstyleBehaviour.recordMaybeInsert(editor, session, "{");
359
+ return {
360
+ text: '{',
361
+ selection: [1, 1]
362
+ };
363
+ }
336
364
  }
337
365
  } else if (text == '}') {
338
- var cursor = editor.getCursorPosition();
339
- var line = session.doc.getLine(cursor.row);
340
366
  var rightChar = line.substring(cursor.column, cursor.column + 1);
341
367
  if (rightChar == '}') {
342
368
  var matching = session.$findOpeningBracket('}', {column: cursor.column + 1, row: cursor.row});
343
- if (matching !== null) {
369
+ if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) {
370
+ CstyleBehaviour.popAutoInsertedClosing();
344
371
  return {
345
372
  text: '',
346
373
  selection: [1, 1]
347
374
  };
348
375
  }
349
376
  }
350
- } else if (text == "\n") {
351
- var cursor = editor.getCursorPosition();
352
- var line = session.doc.getLine(cursor.row);
377
+ } else if (text == "\n" || text == "\r\n") {
378
+ var closing = "";
379
+ if (CstyleBehaviour.isMaybeInsertedClosing(cursor, line)) {
380
+ closing = lang.stringRepeat("}", maybeInsertedBrackets);
381
+ CstyleBehaviour.clearMaybeInsertedClosing();
382
+ }
353
383
  var rightChar = line.substring(cursor.column, cursor.column + 1);
354
- if (rightChar == '}') {
355
- var openBracePos = session.findMatchingBracket({row: cursor.row, column: cursor.column + 1});
384
+ if (rightChar === '}') {
385
+ var openBracePos = session.findMatchingBracket({row: cursor.row, column: cursor.column+1}, '}');
356
386
  if (!openBracePos)
357
387
  return null;
358
-
359
- var indent = this.getNextLineIndent(state, line.substring(0, line.length - 1), session.getTabString());
360
- var next_indent = this.$getIndent(session.doc.getLine(openBracePos.row));
361
-
362
- return {
363
- text: '\n' + indent + '\n' + next_indent,
364
- selection: [1, indent.length, 1, indent.length]
365
- };
388
+ var next_indent = this.$getIndent(session.getLine(openBracePos.row));
389
+ } else if (closing) {
390
+ var next_indent = this.$getIndent(line);
391
+ } else {
392
+ return;
366
393
  }
394
+ var indent = next_indent + session.getTabString();
395
+
396
+ return {
397
+ text: '\n' + indent + '\n' + next_indent + closing,
398
+ selection: [1, indent.length, 1, indent.length]
399
+ };
400
+ } else {
401
+ CstyleBehaviour.clearMaybeInsertedClosing();
367
402
  }
368
403
  });
369
404
 
@@ -375,6 +410,8 @@ var CstyleBehaviour = function () {
375
410
  if (rightChar == '}') {
376
411
  range.end.column++;
377
412
  return range;
413
+ } else {
414
+ maybeInsertedBrackets--;
378
415
  }
379
416
  }
380
417
  });
@@ -383,12 +420,13 @@ var CstyleBehaviour = function () {
383
420
  if (text == '(') {
384
421
  var selection = editor.getSelectionRange();
385
422
  var selected = session.doc.getTextRange(selection);
386
- if (selected !== "") {
423
+ if (selected !== "" && editor.getWrapBehavioursEnabled()) {
387
424
  return {
388
425
  text: '(' + selected + ')',
389
426
  selection: false
390
427
  };
391
- } else {
428
+ } else if (CstyleBehaviour.isSaneInsertion(editor, session)) {
429
+ CstyleBehaviour.recordAutoInsert(editor, session, ")");
392
430
  return {
393
431
  text: '()',
394
432
  selection: [1, 1]
@@ -400,7 +438,8 @@ var CstyleBehaviour = function () {
400
438
  var rightChar = line.substring(cursor.column, cursor.column + 1);
401
439
  if (rightChar == ')') {
402
440
  var matching = session.$findOpeningBracket(')', {column: cursor.column + 1, row: cursor.row});
403
- if (matching !== null) {
441
+ if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) {
442
+ CstyleBehaviour.popAutoInsertedClosing();
404
443
  return {
405
444
  text: '',
406
445
  selection: [1, 1]
@@ -426,12 +465,13 @@ var CstyleBehaviour = function () {
426
465
  if (text == '[') {
427
466
  var selection = editor.getSelectionRange();
428
467
  var selected = session.doc.getTextRange(selection);
429
- if (selected !== "") {
468
+ if (selected !== "" && editor.getWrapBehavioursEnabled()) {
430
469
  return {
431
470
  text: '[' + selected + ']',
432
471
  selection: false
433
472
  };
434
- } else {
473
+ } else if (CstyleBehaviour.isSaneInsertion(editor, session)) {
474
+ CstyleBehaviour.recordAutoInsert(editor, session, "]");
435
475
  return {
436
476
  text: '[]',
437
477
  selection: [1, 1]
@@ -443,7 +483,8 @@ var CstyleBehaviour = function () {
443
483
  var rightChar = line.substring(cursor.column, cursor.column + 1);
444
484
  if (rightChar == ']') {
445
485
  var matching = session.$findOpeningBracket(']', {column: cursor.column + 1, row: cursor.row});
446
- if (matching !== null) {
486
+ if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) {
487
+ CstyleBehaviour.popAutoInsertedClosing();
447
488
  return {
448
489
  text: '',
449
490
  selection: [1, 1]
@@ -470,7 +511,7 @@ var CstyleBehaviour = function () {
470
511
  var quote = text;
471
512
  var selection = editor.getSelectionRange();
472
513
  var selected = session.doc.getTextRange(selection);
473
- if (selected !== "") {
514
+ if (selected !== "" && selected !== "'" && selected != '"' && editor.getWrapBehavioursEnabled()) {
474
515
  return {
475
516
  text: quote + selected + quote,
476
517
  selection: false
@@ -479,13 +520,9 @@ var CstyleBehaviour = function () {
479
520
  var cursor = editor.getCursorPosition();
480
521
  var line = session.doc.getLine(cursor.row);
481
522
  var leftChar = line.substring(cursor.column-1, cursor.column);
482
-
483
- // We're escaped.
484
523
  if (leftChar == '\\') {
485
524
  return null;
486
525
  }
487
-
488
- // Find what token we're inside.
489
526
  var tokens = session.getTokens(selection.start.row);
490
527
  var col = 0, token;
491
528
  var quotepos = -1; // Track whether we're inside an open quote.
@@ -502,15 +539,14 @@ var CstyleBehaviour = function () {
502
539
  }
503
540
  col += tokens[x].value.length;
504
541
  }
505
-
506
- // Try and be smart about when we auto insert.
507
542
  if (!token || (quotepos < 0 && token.type !== "comment" && (token.type !== "string" || ((selection.start.column !== token.value.length+col-1) && token.value.lastIndexOf(quote) === token.value.length-1)))) {
543
+ if (!CstyleBehaviour.isSaneInsertion(editor, session))
544
+ return;
508
545
  return {
509
546
  text: quote + quote,
510
547
  selection: [1,1]
511
548
  };
512
549
  } else if (token && token.type === "string") {
513
- // Ignore input and move right one if we're typing over the closing quote.
514
550
  var rightChar = line.substring(cursor.column, cursor.column + 1);
515
551
  if (rightChar == quote) {
516
552
  return {
@@ -528,7 +564,7 @@ var CstyleBehaviour = function () {
528
564
  if (!range.isMultiLine() && (selected == '"' || selected == "'")) {
529
565
  var line = session.doc.getLine(range.start.row);
530
566
  var rightChar = line.substring(range.start.column + 1, range.start.column + 2);
531
- if (rightChar == '"') {
567
+ if (rightChar == selected) {
532
568
  range.end.column++;
533
569
  return range;
534
570
  }
@@ -549,15 +585,24 @@ var oop = require("../../lib/oop");
549
585
  var Range = require("../../range").Range;
550
586
  var BaseFoldMode = require("./fold_mode").FoldMode;
551
587
 
552
- var FoldMode = exports.FoldMode = function() {};
588
+ var FoldMode = exports.FoldMode = function(commentRegex) {
589
+ if (commentRegex) {
590
+ this.foldingStartMarker = new RegExp(
591
+ this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)
592
+ );
593
+ this.foldingStopMarker = new RegExp(
594
+ this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)
595
+ );
596
+ }
597
+ };
553
598
  oop.inherits(FoldMode, BaseFoldMode);
554
599
 
555
600
  (function() {
556
601
 
557
602
  this.foldingStartMarker = /(\{|\[)[^\}\]]*$|^\s*(\/\*)/;
558
603
  this.foldingStopMarker = /^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/;
559
-
560
- this.getFoldWidgetRange = function(session, foldStyle, row) {
604
+
605
+ this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) {
561
606
  var line = session.getLine(row);
562
607
  var match = line.match(this.foldingStartMarker);
563
608
  if (match) {
@@ -565,115 +610,63 @@ oop.inherits(FoldMode, BaseFoldMode);
565
610
 
566
611
  if (match[1])
567
612
  return this.openingBracketBlock(session, match[1], row, i);
568
-
569
- var range = session.getCommentFoldRange(row, i + match[0].length);
570
- range.end.column -= 2;
613
+
614
+ var range = session.getCommentFoldRange(row, i + match[0].length, 1);
615
+
616
+ if (range && !range.isMultiLine()) {
617
+ if (forceMultiline) {
618
+ range = this.getSectionRange(session, row);
619
+ } else if (foldStyle != "all")
620
+ range = null;
621
+ }
622
+
571
623
  return range;
572
624
  }
573
625
 
574
- if (foldStyle !== "markbeginend")
626
+ if (foldStyle === "markbegin")
575
627
  return;
576
-
628
+
577
629
  var match = line.match(this.foldingStopMarker);
578
630
  if (match) {
579
631
  var i = match.index + match[0].length;
580
632
 
581
- if (match[2]) {
582
- var range = session.getCommentFoldRange(row, i);
583
- range.end.column -= 2;
584
- return range;
585
- }
586
-
587
- var end = {row: row, column: i};
588
- var start = session.$findOpeningBracket(match[1], end);
589
-
590
- if (!start)
591
- return;
592
-
593
- start.column++;
594
- end.column--;
633
+ if (match[1])
634
+ return this.closingBracketBlock(session, match[1], row, i);
595
635
 
596
- return Range.fromPoints(start, end);
636
+ return session.getCommentFoldRange(row, i, -1);
597
637
  }
598
638
  };
599
639
 
600
- }).call(FoldMode.prototype);
601
-
602
- });
603
-
604
- define('ace/mode/folding/fold_mode', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) {
605
-
606
-
607
- var Range = require("../../range").Range;
608
-
609
- var FoldMode = exports.FoldMode = function() {};
610
-
611
- (function() {
612
-
613
- this.foldingStartMarker = null;
614
- this.foldingStopMarker = null;
615
-
616
- // must return "" if there's no fold, to enable caching
617
- this.getFoldWidget = function(session, foldStyle, row) {
618
- var line = session.getLine(row);
619
- if (this.foldingStartMarker.test(line))
620
- return "start";
621
- if (foldStyle == "markbeginend"
622
- && this.foldingStopMarker
623
- && this.foldingStopMarker.test(line))
624
- return "end";
625
- return "";
626
- };
627
-
628
- this.getFoldWidgetRange = function(session, foldStyle, row) {
629
- return null;
630
- };
631
-
632
- this.indentationBlock = function(session, row, column) {
633
- var re = /\S/;
640
+ this.getSectionRange = function(session, row) {
634
641
  var line = session.getLine(row);
635
- var startLevel = line.search(re);
636
- if (startLevel == -1)
637
- return;
638
-
639
- var startColumn = column || line.length;
640
- var maxRow = session.getLength();
642
+ var startIndent = line.search(/\S/);
641
643
  var startRow = row;
644
+ var startColumn = line.length;
645
+ row = row + 1;
642
646
  var endRow = row;
643
-
647
+ var maxRow = session.getLength();
644
648
  while (++row < maxRow) {
645
- var level = session.getLine(row).search(re);
646
-
647
- if (level == -1)
649
+ line = session.getLine(row);
650
+ var indent = line.search(/\S/);
651
+ if (indent === -1)
648
652
  continue;
649
-
650
- if (level <= startLevel)
653
+ if (startIndent > indent)
651
654
  break;
652
-
655
+ var subRange = this.getFoldWidgetRange(session, "all", row);
656
+
657
+ if (subRange) {
658
+ if (subRange.start.row <= startRow) {
659
+ break;
660
+ } else if (subRange.isMultiLine()) {
661
+ row = subRange.end.row;
662
+ } else if (startIndent == indent) {
663
+ break;
664
+ }
665
+ }
653
666
  endRow = row;
654
667
  }
655
-
656
- if (endRow > startRow) {
657
- var endColumn = session.getLine(endRow).length;
658
- return new Range(startRow, startColumn, endRow, endColumn);
659
- }
660
- };
661
-
662
- this.openingBracketBlock = function(session, bracket, row, column, typeRe) {
663
- var start = {row: row, column: column + 1};
664
- var end = session.$findClosingBracket(bracket, start, typeRe);
665
- if (!end)
666
- return;
667
-
668
- var fw = session.foldWidgets[end.row];
669
- if (fw == null)
670
- fw = this.getFoldWidget(session, end.row);
671
-
672
- if (fw == "start" && end.row > start.row) {
673
- end.row --;
674
- end.column = session.getLine(end.row).length;
675
- }
676
- return Range.fromPoints(start, end);
668
+
669
+ return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);
677
670
  };
678
671
 
679
672
  }).call(FoldMode.prototype);