ace-rails-ap 4.0.1 → 4.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (92) hide show
  1. checksums.yaml +4 -4
  2. data/lib/ace/rails/version.rb +1 -1
  3. data/vendor/assets/javascripts/ace/ace.js +187 -175
  4. data/vendor/assets/javascripts/ace/ext-chromevox.js +5 -5
  5. data/vendor/assets/javascripts/ace/ext-emmet.js +4 -5
  6. data/vendor/assets/javascripts/ace/ext-keybinding_menu.js +1 -1
  7. data/vendor/assets/javascripts/ace/ext-language_tools.js +23 -22
  8. data/vendor/assets/javascripts/ace/ext-modelist.js +11 -5
  9. data/vendor/assets/javascripts/ace/ext-settings_menu.js +13 -7
  10. data/vendor/assets/javascripts/ace/ext-textarea.js +0 -72
  11. data/vendor/assets/javascripts/ace/keybinding-emacs.js +3 -2
  12. data/vendor/assets/javascripts/ace/keybinding-vim.js +23 -18
  13. data/vendor/assets/javascripts/ace/mode-abap.js +3 -19
  14. data/vendor/assets/javascripts/ace/mode-c_cpp.js +21 -29
  15. data/vendor/assets/javascripts/ace/mode-cirru.js +15 -15
  16. data/vendor/assets/javascripts/ace/mode-coffee.js +3 -22
  17. data/vendor/assets/javascripts/ace/mode-coldfusion.js +40 -54
  18. data/vendor/assets/javascripts/ace/mode-csharp.js +6 -0
  19. data/vendor/assets/javascripts/ace/mode-css.js +3 -3
  20. data/vendor/assets/javascripts/ace/mode-curly.js +40 -54
  21. data/vendor/assets/javascripts/ace/mode-dart.js +21 -29
  22. data/vendor/assets/javascripts/ace/mode-django.js +40 -54
  23. data/vendor/assets/javascripts/ace/mode-eiffel.js +2 -2
  24. data/vendor/assets/javascripts/ace/mode-ejs.js +41 -55
  25. data/vendor/assets/javascripts/ace/mode-elm.js +3 -3
  26. data/vendor/assets/javascripts/ace/mode-ftl.js +36 -50
  27. data/vendor/assets/javascripts/ace/mode-gherkin.js +6 -6
  28. data/vendor/assets/javascripts/ace/mode-glsl.js +21 -29
  29. data/vendor/assets/javascripts/ace/mode-gobstones.js +1273 -0
  30. data/vendor/assets/javascripts/ace/mode-golang.js +2 -2
  31. data/vendor/assets/javascripts/ace/mode-groovy.js +33 -47
  32. data/vendor/assets/javascripts/ace/mode-haml.js +981 -27
  33. data/vendor/assets/javascripts/ace/mode-handlebars.js +40 -54
  34. data/vendor/assets/javascripts/ace/mode-html.js +40 -54
  35. data/vendor/assets/javascripts/ace/mode-html_elixir.js +40 -54
  36. data/vendor/assets/javascripts/ace/mode-html_ruby.js +41 -55
  37. data/vendor/assets/javascripts/ace/mode-jade.js +83 -189
  38. data/vendor/assets/javascripts/ace/mode-java.js +35 -49
  39. data/vendor/assets/javascripts/ace/mode-javascript.js +33 -47
  40. data/vendor/assets/javascripts/ace/mode-jsp.js +38 -52
  41. data/vendor/assets/javascripts/ace/mode-lean.js +1 -1
  42. data/vendor/assets/javascripts/ace/mode-less.js +368 -136
  43. data/vendor/assets/javascripts/ace/mode-liquid.js +36 -50
  44. data/vendor/assets/javascripts/ace/mode-livescript.js +3 -18
  45. data/vendor/assets/javascripts/ace/mode-logiql.js +11 -11
  46. data/vendor/assets/javascripts/ace/mode-lua.js +1 -4
  47. data/vendor/assets/javascripts/ace/mode-luapage.js +41 -58
  48. data/vendor/assets/javascripts/ace/mode-markdown.js +40 -54
  49. data/vendor/assets/javascripts/ace/mode-mask.js +36 -50
  50. data/vendor/assets/javascripts/ace/mode-matlab.js +1 -1
  51. data/vendor/assets/javascripts/ace/mode-mel.js +1 -1
  52. data/vendor/assets/javascripts/ace/mode-nix.js +21 -29
  53. data/vendor/assets/javascripts/ace/mode-nsis.js +304 -0
  54. data/vendor/assets/javascripts/ace/mode-objectivec.js +21 -29
  55. data/vendor/assets/javascripts/ace/mode-pascal.js +1 -1
  56. data/vendor/assets/javascripts/ace/mode-pgsql.js +33 -47
  57. data/vendor/assets/javascripts/ace/mode-php.js +42 -57
  58. data/vendor/assets/javascripts/ace/mode-powershell.js +86 -57
  59. data/vendor/assets/javascripts/ace/mode-praat.js +1 -1
  60. data/vendor/assets/javascripts/ace/mode-protobuf.js +21 -29
  61. data/vendor/assets/javascripts/ace/mode-r.js +20 -20
  62. data/vendor/assets/javascripts/ace/mode-razor.js +3136 -0
  63. data/vendor/assets/javascripts/ace/mode-rdoc.js +20 -20
  64. data/vendor/assets/javascripts/ace/mode-rhtml.js +60 -74
  65. data/vendor/assets/javascripts/ace/mode-rst.js +249 -0
  66. data/vendor/assets/javascripts/ace/mode-ruby.js +1 -1
  67. data/vendor/assets/javascripts/ace/mode-rust.js +4 -8
  68. data/vendor/assets/javascripts/ace/mode-scala.js +33 -47
  69. data/vendor/assets/javascripts/ace/mode-sjs.js +42 -56
  70. data/vendor/assets/javascripts/ace/mode-smarty.js +40 -54
  71. data/vendor/assets/javascripts/ace/mode-soy_template.js +41 -55
  72. data/vendor/assets/javascripts/ace/mode-sqlserver.js +3 -3
  73. data/vendor/assets/javascripts/ace/mode-stylus.js +1 -1
  74. data/vendor/assets/javascripts/ace/mode-svg.js +34 -48
  75. data/vendor/assets/javascripts/ace/mode-swift.js +5 -5
  76. data/vendor/assets/javascripts/ace/mode-tex.js +24 -24
  77. data/vendor/assets/javascripts/ace/mode-twig.js +40 -54
  78. data/vendor/assets/javascripts/ace/mode-typescript.js +33 -47
  79. data/vendor/assets/javascripts/ace/mode-velocity.js +40 -54
  80. data/vendor/assets/javascripts/ace/mode-vhdl.js +2 -2
  81. data/vendor/assets/javascripts/ace/mode-wollok.js +1256 -0
  82. data/vendor/assets/javascripts/ace/mode-xml.js +1 -1
  83. data/vendor/assets/javascripts/ace/worker-coffee.js +1 -1
  84. data/vendor/assets/javascripts/ace/worker-css.js +1 -1
  85. data/vendor/assets/javascripts/ace/worker-html.js +2 -2
  86. data/vendor/assets/javascripts/ace/worker-javascript.js +1 -1
  87. data/vendor/assets/javascripts/ace/worker-json.js +1 -1
  88. data/vendor/assets/javascripts/ace/worker-lua.js +1 -1
  89. data/vendor/assets/javascripts/ace/worker-php.js +2 -4
  90. data/vendor/assets/javascripts/ace/worker-xml.js +1 -1
  91. data/vendor/assets/javascripts/ace/worker-xquery.js +1 -1
  92. metadata +8 -3
@@ -100,7 +100,7 @@ var leanHighlightRules = function() {
100
100
  "keyword.control" : keywordControls,
101
101
  "storage.type" : storageType,
102
102
  "keyword.operator" : keywordOperators,
103
- "variable.language": "sorry",
103
+ "variable.language": "sorry"
104
104
  }, "identifier");
105
105
 
106
106
  var identifierRe = "[A-Za-z_\u03b1-\u03ba\u03bc-\u03fb\u1f00-\u1ffe\u2100-\u214f][A-Za-z0-9_'\u03b1-\u03ba\u03bc-\u03fb\u1f00-\u1ffe\u2070-\u2079\u207f-\u2089\u2090-\u209c\u2100-\u214f]*";
@@ -1,128 +1,171 @@
1
- define("ace/mode/less_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module) {
1
+ define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module) {
2
2
  "use strict";
3
3
 
4
4
  var oop = require("../lib/oop");
5
5
  var lang = require("../lib/lang");
6
6
  var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
7
+ var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|min-height|min-width|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index";
8
+ var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters";
9
+ var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero";
10
+ var supportConstantColor = exports.supportConstantColor = "aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow";
11
+ var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace";
12
+
13
+ var numRe = exports.numRe = "\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))";
14
+ var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b";
15
+ var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b";
16
+
17
+ var CssHighlightRules = function() {
18
+
19
+ var keywordMapper = this.createKeywordMapper({
20
+ "support.function": supportFunction,
21
+ "support.constant": supportConstant,
22
+ "support.type": supportType,
23
+ "support.constant.color": supportConstantColor,
24
+ "support.constant.fonts": supportConstantFonts
25
+ }, "text", true);
26
+
27
+ this.$rules = {
28
+ "start" : [{
29
+ token : "comment", // multi line comment
30
+ regex : "\\/\\*",
31
+ push : "comment"
32
+ }, {
33
+ token: "paren.lparen",
34
+ regex: "\\{",
35
+ push: "ruleset"
36
+ }, {
37
+ token: "string",
38
+ regex: "@.*?{",
39
+ push: "media"
40
+ }, {
41
+ token: "keyword",
42
+ regex: "#[a-z0-9-_]+"
43
+ }, {
44
+ token: "variable",
45
+ regex: "\\.[a-z0-9-_]+"
46
+ }, {
47
+ token: "string",
48
+ regex: ":[a-z0-9-_]+"
49
+ }, {
50
+ token: "constant",
51
+ regex: "[a-z0-9-_]+"
52
+ }, {
53
+ caseInsensitive: true
54
+ }],
55
+
56
+ "media" : [{
57
+ token : "comment", // multi line comment
58
+ regex : "\\/\\*",
59
+ push : "comment"
60
+ }, {
61
+ token: "paren.lparen",
62
+ regex: "\\{",
63
+ push: "ruleset"
64
+ }, {
65
+ token: "string",
66
+ regex: "\\}",
67
+ next: "pop"
68
+ }, {
69
+ token: "keyword",
70
+ regex: "#[a-z0-9-_]+"
71
+ }, {
72
+ token: "variable",
73
+ regex: "\\.[a-z0-9-_]+"
74
+ }, {
75
+ token: "string",
76
+ regex: ":[a-z0-9-_]+"
77
+ }, {
78
+ token: "constant",
79
+ regex: "[a-z0-9-_]+"
80
+ }, {
81
+ caseInsensitive: true
82
+ }],
83
+
84
+ "comment" : [{
85
+ token : "comment",
86
+ regex : "\\*\\/",
87
+ next : "pop"
88
+ }, {
89
+ defaultToken : "comment"
90
+ }],
91
+
92
+ "ruleset" : [
93
+ {
94
+ token : "paren.rparen",
95
+ regex : "\\}",
96
+ next: "pop"
97
+ }, {
98
+ token : "comment", // multi line comment
99
+ regex : "\\/\\*",
100
+ push : "comment"
101
+ }, {
102
+ token : "string", // single line
103
+ regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'
104
+ }, {
105
+ token : "string", // single line
106
+ regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"
107
+ }, {
108
+ token : ["constant.numeric", "keyword"],
109
+ regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)"
110
+ }, {
111
+ token : "constant.numeric",
112
+ regex : numRe
113
+ }, {
114
+ token : "constant.numeric", // hex6 color
115
+ regex : "#[a-f0-9]{6}"
116
+ }, {
117
+ token : "constant.numeric", // hex3 color
118
+ regex : "#[a-f0-9]{3}"
119
+ }, {
120
+ token : ["punctuation", "entity.other.attribute-name.pseudo-element.css"],
121
+ regex : pseudoElements
122
+ }, {
123
+ token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"],
124
+ regex : pseudoClasses
125
+ }, {
126
+ token : ["support.function", "string", "support.function"],
127
+ regex : "(url\\()(.*)(\\))"
128
+ }, {
129
+ token : keywordMapper,
130
+ regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"
131
+ }, {
132
+ caseInsensitive: true
133
+ }]
134
+ };
135
+
136
+ this.normalizeRules();
137
+ };
138
+
139
+ oop.inherits(CssHighlightRules, TextHighlightRules);
140
+
141
+ exports.CssHighlightRules = CssHighlightRules;
142
+
143
+ });
144
+
145
+ define("ace/mode/less_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules","ace/mode/css_highlight_rules"], function(require, exports, module) {
146
+ "use strict";
147
+
148
+ var oop = require("../lib/oop");
149
+ var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
150
+ var CssHighlightRules = require('./css_highlight_rules');
7
151
 
8
152
  var LessHighlightRules = function() {
9
-
10
- var properties = lang.arrayToMap( (function () {
11
153
 
12
- var browserPrefix = ("-webkit-|-moz-|-o-|-ms-|-svg-|-pie-|-khtml-").split("|");
13
-
14
- var prefixProperties = ("appearance|background-clip|background-inline-policy|background-origin|" +
15
- "background-size|binding|border-bottom-colors|border-left-colors|" +
16
- "border-right-colors|border-top-colors|border-end|border-end-color|" +
17
- "border-end-style|border-end-width|border-image|border-start|" +
18
- "border-start-color|border-start-style|border-start-width|box-align|" +
19
- "box-direction|box-flex|box-flexgroup|box-ordinal-group|box-orient|" +
20
- "box-pack|box-sizing|column-count|column-gap|column-width|column-rule|" +
21
- "column-rule-width|column-rule-style|column-rule-color|float-edge|" +
22
- "font-feature-settings|font-language-override|force-broken-image-icon|" +
23
- "image-region|margin-end|margin-start|opacity|outline|outline-color|" +
24
- "outline-offset|outline-radius|outline-radius-bottomleft|" +
25
- "outline-radius-bottomright|outline-radius-topleft|outline-radius-topright|" +
26
- "outline-style|outline-width|padding-end|padding-start|stack-sizing|" +
27
- "tab-size|text-blink|text-decoration-color|text-decoration-line|" +
28
- "text-decoration-style|transform|transform-origin|transition|" +
29
- "transition-delay|transition-duration|transition-property|" +
30
- "transition-timing-function|user-focus|user-input|user-modify|user-select|" +
31
- "window-shadow|border-radius").split("|");
32
-
33
- var properties = ("azimuth|background-attachment|background-color|background-image|" +
34
- "background-position|background-repeat|background|border-bottom-color|" +
35
- "border-bottom-style|border-bottom-width|border-bottom|border-collapse|" +
36
- "border-color|border-left-color|border-left-style|border-left-width|" +
37
- "border-left|border-right-color|border-right-style|border-right-width|" +
38
- "border-right|border-spacing|border-style|border-top-color|" +
39
- "border-top-style|border-top-width|border-top|border-width|border|" +
40
- "bottom|box-sizing|caption-side|clear|clip|color|content|counter-increment|" +
41
- "counter-reset|cue-after|cue-before|cue|cursor|direction|display|" +
42
- "elevation|empty-cells|float|font-family|font-size-adjust|font-size|" +
43
- "font-stretch|font-style|font-variant|font-weight|font|height|left|" +
44
- "letter-spacing|line-height|list-style-image|list-style-position|" +
45
- "list-style-type|list-style|margin-bottom|margin-left|margin-right|" +
46
- "margin-top|marker-offset|margin|marks|max-height|max-width|min-height|" +
47
- "min-width|opacity|orphans|outline-color|" +
48
- "outline-style|outline-width|outline|overflow|overflow-x|overflow-y|padding-bottom|" +
49
- "padding-left|padding-right|padding-top|padding|page-break-after|" +
50
- "page-break-before|page-break-inside|page|pause-after|pause-before|" +
51
- "pause|pitch-range|pitch|play-during|position|quotes|richness|right|" +
52
- "size|speak-header|speak-numeral|speak-punctuation|speech-rate|speak|" +
53
- "stress|table-layout|text-align|text-decoration|text-indent|" +
54
- "text-shadow|text-transform|top|unicode-bidi|vertical-align|" +
55
- "visibility|voice-family|volume|white-space|widows|width|word-spacing|" +
56
- "z-index").split("|");
57
- var ret = [];
58
- for (var i=0, ln=browserPrefix.length; i<ln; i++) {
59
- Array.prototype.push.apply(
60
- ret,
61
- (( browserPrefix[i] + prefixProperties.join("|" + browserPrefix[i]) ).split("|"))
62
- );
63
- }
64
- Array.prototype.push.apply(ret, prefixProperties);
65
- Array.prototype.push.apply(ret, properties);
66
-
67
- return ret;
68
-
69
- })() );
70
-
71
154
 
155
+ var keywordList = "@import|@media|@font-face|@keyframes|@-webkit-keyframes|@supports|" +
156
+ "@charset|@plugin|@namespace|@document|@page|@viewport|@-ms-viewport|" +
157
+ "or|and|when|not";
72
158
 
73
- var functions = lang.arrayToMap(
74
- ("hsl|hsla|rgb|rgba|url|attr|counter|counters|lighten|darken|saturate|" +
75
- "desaturate|fadein|fadeout|fade|spin|mix|hue|saturation|lightness|" +
76
- "alpha|round|ceil|floor|percentage|color|iscolor|isnumber|isstring|" +
77
- "iskeyword|isurl|ispixel|ispercentage|isem").split("|")
78
- );
79
-
80
- var constants = lang.arrayToMap(
81
- ("absolute|all-scroll|always|armenian|auto|baseline|below|bidi-override|" +
82
- "block|bold|bolder|border-box|both|bottom|break-all|break-word|capitalize|center|" +
83
- "char|circle|cjk-ideographic|col-resize|collapse|content-box|crosshair|dashed|" +
84
- "decimal-leading-zero|decimal|default|disabled|disc|" +
85
- "distribute-all-lines|distribute-letter|distribute-space|" +
86
- "distribute|dotted|double|e-resize|ellipsis|fixed|georgian|groove|" +
87
- "hand|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|" +
88
- "ideograph-alpha|ideograph-numeric|ideograph-parenthesis|" +
89
- "ideograph-space|inactive|inherit|inline-block|inline|inset|inside|" +
90
- "inter-ideograph|inter-word|italic|justify|katakana-iroha|katakana|" +
91
- "keep-all|left|lighter|line-edge|line-through|line|list-item|loose|" +
92
- "lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|" +
93
- "medium|middle|move|n-resize|ne-resize|newspaper|no-drop|no-repeat|" +
94
- "nw-resize|none|normal|not-allowed|nowrap|oblique|outset|outside|" +
95
- "overline|pointer|progress|relative|repeat-x|repeat-y|repeat|right|" +
96
- "ridge|row-resize|rtl|s-resize|scroll|se-resize|separate|small-caps|" +
97
- "solid|square|static|strict|super|sw-resize|table-footer-group|" +
98
- "table-header-group|tb-rl|text-bottom|text-top|text|thick|thin|top|" +
99
- "transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|" +
100
- "vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|" +
101
- "zero").split("|")
102
- );
103
-
104
- var colors = lang.arrayToMap(
105
- ("aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|" +
106
- "purple|red|silver|teal|white|yellow").split("|")
107
- );
108
-
109
- var keywords = lang.arrayToMap(
110
- ("@mixin|@extend|@include|@import|@media|@debug|@warn|@if|@for|@each|" +
111
- "@while|@else|@font-face|@-webkit-keyframes|if|and|!default|module|" +
112
- "def|end|declare|when|not|and").split("|")
113
- );
114
-
115
- var tags = lang.arrayToMap(
116
- ("a|abbr|acronym|address|applet|area|article|aside|audio|b|base|basefont|bdo|" +
117
- "big|blockquote|body|br|button|canvas|caption|center|cite|code|col|colgroup|" +
118
- "command|datalist|dd|del|details|dfn|dir|div|dl|dt|em|embed|fieldset|" +
119
- "figcaption|figure|font|footer|form|frame|frameset|h1|h2|h3|h4|h5|h6|head|" +
120
- "header|hgroup|hr|html|i|iframe|img|input|ins|keygen|kbd|label|legend|li|" +
121
- "link|map|mark|menu|meta|meter|nav|noframes|noscript|object|ol|optgroup|" +
122
- "option|output|p|param|pre|progress|q|rp|rt|ruby|s|samp|script|section|select|" +
123
- "small|source|span|strike|strong|style|sub|summary|sup|table|tbody|td|" +
124
- "textarea|tfoot|th|thead|time|title|tr|tt|u|ul|var|video|wbr|xmp").split("|")
125
- );
159
+ var keywords = keywordList.split('|');
160
+
161
+ var properties = CssHighlightRules.supportType.split('|');
162
+
163
+ var keywordMapper = this.createKeywordMapper({
164
+ "support.constant": CssHighlightRules.supportConstant,
165
+ "keyword": keywordList,
166
+ "support.constant.color": CssHighlightRules.supportConstantColor,
167
+ "support.constant.fonts": CssHighlightRules.supportConstantFonts
168
+ }, "identifier", true);
126
169
 
127
170
  var numRe = "\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))";
128
171
 
@@ -143,8 +186,8 @@ var LessHighlightRules = function() {
143
186
  token : "string", // single line
144
187
  regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"
145
188
  }, {
146
- token : "constant.numeric",
147
- regex : numRe + "(?:em|ex|px|cm|mm|in|pt|pc|deg|rad|grad|ms|s|hz|khz|%)"
189
+ token : ["constant.numeric", "keyword"],
190
+ regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)"
148
191
  }, {
149
192
  token : "constant.numeric", // hex6 color
150
193
  regex : "#[a-f0-9]{6}"
@@ -154,31 +197,38 @@ var LessHighlightRules = function() {
154
197
  }, {
155
198
  token : "constant.numeric",
156
199
  regex : numRe
200
+ }, {
201
+ token : ["support.function", "paren.lparen", "string", "paren.rparen"],
202
+ regex : "(url)(\\()(.*)(\\))"
203
+ }, {
204
+ token : ["support.function", "paren.lparen"],
205
+ regex : "(:extend|[a-z0-9_\\-]+)(\\()"
157
206
  }, {
158
207
  token : function(value) {
159
- if (keywords.hasOwnProperty(value))
208
+ if (keywords.indexOf(value.toLowerCase()) > -1)
160
209
  return "keyword";
161
210
  else
162
211
  return "variable";
163
212
  },
164
- regex : "@[a-z0-9_\\-@]*\\b"
213
+ regex : "[@\\$][a-z0-9_\\-@\\$]*\\b"
165
214
  }, {
166
- token : function(value) {
167
- if (properties.hasOwnProperty(value.toLowerCase()))
168
- return "support.type";
169
- else if (keywords.hasOwnProperty(value))
170
- return "keyword";
171
- else if (constants.hasOwnProperty(value))
172
- return "constant.language";
173
- else if (functions.hasOwnProperty(value))
174
- return "support.function";
175
- else if (colors.hasOwnProperty(value.toLowerCase()))
176
- return "support.constant.color";
177
- else if (tags.hasOwnProperty(value.toLowerCase()))
178
- return "variable.language";
179
- else
180
- return "text";
215
+ token : "variable",
216
+ regex : "[@\\$]\\{[a-z0-9_\\-@\\$]*\\}"
217
+ }, {
218
+ token : function(first, second) {
219
+ if(properties.indexOf(first.toLowerCase()) > -1) {
220
+ return ["support.type.property", "text"];
221
+ }
222
+ else {
223
+ return ["support.type.unknownProperty", "text"];
224
+ }
181
225
  },
226
+ regex : "([a-z0-9-_]+)(\\s*:)"
227
+ }, {
228
+ token : "keyword",
229
+ regex : "&" // special case - always treat as keyword
230
+ }, {
231
+ token : keywordMapper,
182
232
  regex : "\\-?[@a-z_][@a-z0-9_\\-]*"
183
233
  }, {
184
234
  token: "variable.language",
@@ -194,7 +244,7 @@ var LessHighlightRules = function() {
194
244
  regex: "[a-z0-9-_]+"
195
245
  }, {
196
246
  token : "keyword.operator",
197
- regex : "<|>|<=|>=|==|!=|-|%|#|\\+|\\$|\\+|\\*"
247
+ regex : "<|>|<=|>=|=|!=|-|%|\\+|\\*"
198
248
  }, {
199
249
  token : "paren.lparen",
200
250
  regex : "[[({]"
@@ -219,6 +269,7 @@ var LessHighlightRules = function() {
219
269
  }
220
270
  ]
221
271
  };
272
+ this.normalizeRules();
222
273
  };
223
274
 
224
275
  oop.inherits(LessHighlightRules, TextHighlightRules);
@@ -703,6 +754,180 @@ oop.inherits(CssBehaviour, CstyleBehaviour);
703
754
  exports.CssBehaviour = CssBehaviour;
704
755
  });
705
756
 
757
+ define("ace/mode/css_completions",["require","exports","module"], function(require, exports, module) {
758
+ "use strict";
759
+
760
+ var propertyMap = {
761
+ "background": {"#$0": 1},
762
+ "background-color": {"#$0": 1, "transparent": 1, "fixed": 1},
763
+ "background-image": {"url('/$0')": 1},
764
+ "background-repeat": {"repeat": 1, "repeat-x": 1, "repeat-y": 1, "no-repeat": 1, "inherit": 1},
765
+ "background-position": {"bottom":2, "center":2, "left":2, "right":2, "top":2, "inherit":2},
766
+ "background-attachment": {"scroll": 1, "fixed": 1},
767
+ "background-size": {"cover": 1, "contain": 1},
768
+ "background-clip": {"border-box": 1, "padding-box": 1, "content-box": 1},
769
+ "background-origin": {"border-box": 1, "padding-box": 1, "content-box": 1},
770
+ "border": {"solid $0": 1, "dashed $0": 1, "dotted $0": 1, "#$0": 1},
771
+ "border-color": {"#$0": 1},
772
+ "border-style": {"solid":2, "dashed":2, "dotted":2, "double":2, "groove":2, "hidden":2, "inherit":2, "inset":2, "none":2, "outset":2, "ridged":2},
773
+ "border-collapse": {"collapse": 1, "separate": 1},
774
+ "bottom": {"px": 1, "em": 1, "%": 1},
775
+ "clear": {"left": 1, "right": 1, "both": 1, "none": 1},
776
+ "color": {"#$0": 1, "rgb(#$00,0,0)": 1},
777
+ "cursor": {"default": 1, "pointer": 1, "move": 1, "text": 1, "wait": 1, "help": 1, "progress": 1, "n-resize": 1, "ne-resize": 1, "e-resize": 1, "se-resize": 1, "s-resize": 1, "sw-resize": 1, "w-resize": 1, "nw-resize": 1},
778
+ "display": {"none": 1, "block": 1, "inline": 1, "inline-block": 1, "table-cell": 1},
779
+ "empty-cells": {"show": 1, "hide": 1},
780
+ "float": {"left": 1, "right": 1, "none": 1},
781
+ "font-family": {"Arial":2,"Comic Sans MS":2,"Consolas":2,"Courier New":2,"Courier":2,"Georgia":2,"Monospace":2,"Sans-Serif":2, "Segoe UI":2,"Tahoma":2,"Times New Roman":2,"Trebuchet MS":2,"Verdana": 1},
782
+ "font-size": {"px": 1, "em": 1, "%": 1},
783
+ "font-weight": {"bold": 1, "normal": 1},
784
+ "font-style": {"italic": 1, "normal": 1},
785
+ "font-variant": {"normal": 1, "small-caps": 1},
786
+ "height": {"px": 1, "em": 1, "%": 1},
787
+ "left": {"px": 1, "em": 1, "%": 1},
788
+ "letter-spacing": {"normal": 1},
789
+ "line-height": {"normal": 1},
790
+ "list-style-type": {"none": 1, "disc": 1, "circle": 1, "square": 1, "decimal": 1, "decimal-leading-zero": 1, "lower-roman": 1, "upper-roman": 1, "lower-greek": 1, "lower-latin": 1, "upper-latin": 1, "georgian": 1, "lower-alpha": 1, "upper-alpha": 1},
791
+ "margin": {"px": 1, "em": 1, "%": 1},
792
+ "margin-right": {"px": 1, "em": 1, "%": 1},
793
+ "margin-left": {"px": 1, "em": 1, "%": 1},
794
+ "margin-top": {"px": 1, "em": 1, "%": 1},
795
+ "margin-bottom": {"px": 1, "em": 1, "%": 1},
796
+ "max-height": {"px": 1, "em": 1, "%": 1},
797
+ "max-width": {"px": 1, "em": 1, "%": 1},
798
+ "min-height": {"px": 1, "em": 1, "%": 1},
799
+ "min-width": {"px": 1, "em": 1, "%": 1},
800
+ "overflow": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1},
801
+ "overflow-x": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1},
802
+ "overflow-y": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1},
803
+ "padding": {"px": 1, "em": 1, "%": 1},
804
+ "padding-top": {"px": 1, "em": 1, "%": 1},
805
+ "padding-right": {"px": 1, "em": 1, "%": 1},
806
+ "padding-bottom": {"px": 1, "em": 1, "%": 1},
807
+ "padding-left": {"px": 1, "em": 1, "%": 1},
808
+ "page-break-after": {"auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1},
809
+ "page-break-before": {"auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1},
810
+ "position": {"absolute": 1, "relative": 1, "fixed": 1, "static": 1},
811
+ "right": {"px": 1, "em": 1, "%": 1},
812
+ "table-layout": {"fixed": 1, "auto": 1},
813
+ "text-decoration": {"none": 1, "underline": 1, "line-through": 1, "blink": 1},
814
+ "text-align": {"left": 1, "right": 1, "center": 1, "justify": 1},
815
+ "text-transform": {"capitalize": 1, "uppercase": 1, "lowercase": 1, "none": 1},
816
+ "top": {"px": 1, "em": 1, "%": 1},
817
+ "vertical-align": {"top": 1, "bottom": 1},
818
+ "visibility": {"hidden": 1, "visible": 1},
819
+ "white-space": {"nowrap": 1, "normal": 1, "pre": 1, "pre-line": 1, "pre-wrap": 1},
820
+ "width": {"px": 1, "em": 1, "%": 1},
821
+ "word-spacing": {"normal": 1},
822
+ "filter": {"alpha(opacity=$0100)": 1},
823
+
824
+ "text-shadow": {"$02px 2px 2px #777": 1},
825
+ "text-overflow": {"ellipsis-word": 1, "clip": 1, "ellipsis": 1},
826
+ "-moz-border-radius": 1,
827
+ "-moz-border-radius-topright": 1,
828
+ "-moz-border-radius-bottomright": 1,
829
+ "-moz-border-radius-topleft": 1,
830
+ "-moz-border-radius-bottomleft": 1,
831
+ "-webkit-border-radius": 1,
832
+ "-webkit-border-top-right-radius": 1,
833
+ "-webkit-border-top-left-radius": 1,
834
+ "-webkit-border-bottom-right-radius": 1,
835
+ "-webkit-border-bottom-left-radius": 1,
836
+ "-moz-box-shadow": 1,
837
+ "-webkit-box-shadow": 1,
838
+ "transform": {"rotate($00deg)": 1, "skew($00deg)": 1},
839
+ "-moz-transform": {"rotate($00deg)": 1, "skew($00deg)": 1},
840
+ "-webkit-transform": {"rotate($00deg)": 1, "skew($00deg)": 1 }
841
+ };
842
+
843
+ var CssCompletions = function() {
844
+
845
+ };
846
+
847
+ (function() {
848
+
849
+ this.completionsDefined = false;
850
+
851
+ this.defineCompletions = function() {
852
+ if (document) {
853
+ var style = document.createElement('c').style;
854
+
855
+ for (var i in style) {
856
+ if (typeof style[i] !== 'string')
857
+ continue;
858
+
859
+ var name = i.replace(/[A-Z]/g, function(x) {
860
+ return '-' + x.toLowerCase();
861
+ });
862
+
863
+ if (!propertyMap.hasOwnProperty(name))
864
+ propertyMap[name] = 1;
865
+ }
866
+ }
867
+
868
+ this.completionsDefined = true;
869
+ }
870
+
871
+ this.getCompletions = function(state, session, pos, prefix) {
872
+ if (!this.completionsDefined) {
873
+ this.defineCompletions();
874
+ }
875
+
876
+ var token = session.getTokenAt(pos.row, pos.column);
877
+
878
+ if (!token)
879
+ return [];
880
+ if (state==='ruleset'){
881
+ var line = session.getLine(pos.row).substr(0, pos.column);
882
+ if (/:[^;]+$/.test(line)) {
883
+ /([\w\-]+):[^:]*$/.test(line);
884
+
885
+ return this.getPropertyValueCompletions(state, session, pos, prefix);
886
+ } else {
887
+ return this.getPropertyCompletions(state, session, pos, prefix);
888
+ }
889
+ }
890
+
891
+ return [];
892
+ };
893
+
894
+ this.getPropertyCompletions = function(state, session, pos, prefix) {
895
+ var properties = Object.keys(propertyMap);
896
+ return properties.map(function(property){
897
+ return {
898
+ caption: property,
899
+ snippet: property + ': $0',
900
+ meta: "property",
901
+ score: Number.MAX_VALUE
902
+ };
903
+ });
904
+ };
905
+
906
+ this.getPropertyValueCompletions = function(state, session, pos, prefix) {
907
+ var line = session.getLine(pos.row).substr(0, pos.column);
908
+ var property = (/([\w\-]+):[^:]*$/.exec(line) || {})[1];
909
+
910
+ if (!property)
911
+ return [];
912
+ var values = [];
913
+ if (property in propertyMap && typeof propertyMap[property] === "object") {
914
+ values = Object.keys(propertyMap[property]);
915
+ }
916
+ return values.map(function(value){
917
+ return {
918
+ caption: value,
919
+ snippet: value,
920
+ meta: "property value",
921
+ score: Number.MAX_VALUE
922
+ };
923
+ });
924
+ };
925
+
926
+ }).call(CssCompletions.prototype);
927
+
928
+ exports.CssCompletions = CssCompletions;
929
+ });
930
+
706
931
  define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) {
707
932
  "use strict";
708
933
 
@@ -843,7 +1068,7 @@ oop.inherits(FoldMode, BaseFoldMode);
843
1068
 
844
1069
  });
845
1070
 
846
- define("ace/mode/less",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/less_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/behaviour/css","ace/mode/folding/cstyle"], function(require, exports, module) {
1071
+ define("ace/mode/less",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/less_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/behaviour/css","ace/mode/css_completions","ace/mode/folding/cstyle"], function(require, exports, module) {
847
1072
  "use strict";
848
1073
 
849
1074
  var oop = require("../lib/oop");
@@ -851,12 +1076,15 @@ var TextMode = require("./text").Mode;
851
1076
  var LessHighlightRules = require("./less_highlight_rules").LessHighlightRules;
852
1077
  var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent;
853
1078
  var CssBehaviour = require("./behaviour/css").CssBehaviour;
1079
+ var CssCompletions = require("./css_completions").CssCompletions;
1080
+
854
1081
  var CStyleFoldMode = require("./folding/cstyle").FoldMode;
855
1082
 
856
1083
  var Mode = function() {
857
1084
  this.HighlightRules = LessHighlightRules;
858
1085
  this.$outdent = new MatchingBraceOutdent();
859
1086
  this.$behaviour = new CssBehaviour();
1087
+ this.$completer = new CssCompletions();
860
1088
  this.foldingRules = new CStyleFoldMode();
861
1089
  };
862
1090
  oop.inherits(Mode, TextMode);
@@ -889,6 +1117,10 @@ oop.inherits(Mode, TextMode);
889
1117
  this.$outdent.autoOutdent(doc, row);
890
1118
  };
891
1119
 
1120
+ this.getCompletions = function(state, session, pos, prefix) {
1121
+ return this.$completer.getCompletions("ruleset", session, pos, prefix);
1122
+ };
1123
+
892
1124
  this.$id = "ace/mode/less";
893
1125
  }).call(Mode.prototype);
894
1126