2 if (typeof exports
== "object" && typeof module
== "object") // CommonJS
3 mod(require("../../lib/codemirror"), require("../../mode/css/css"));
4 else if (typeof define
== "function" && define
.amd
) // AMD
5 define(["../../lib/codemirror", "../../mode/css/css"], mod
);
6 else // Plain browser env
8 })(function(CodeMirror
) {
11 var pseudoClasses
= {link
: 1, visited
: 1, active
: 1, hover
: 1, focus
: 1,
12 "first-letter": 1, "first-line": 1, "first-child": 1,
13 before
: 1, after
: 1, lang
: 1};
15 CodeMirror
.registerHelper("hint", "css", function(cm
) {
16 var cur
= cm
.getCursor(), token
= cm
.getTokenAt(cur
);
17 var inner
= CodeMirror
.innerMode(cm
.getMode(), token
.state
);
18 if (inner
.mode
.name
!= "css") return;
20 var word
= token
.string
, start
= token
.start
, end
= token
.end
;
21 if (/[^\w$_-]/.test(word
)) {
22 word
= ""; start
= end
= cur
.ch
;
25 var spec
= CodeMirror
.resolveMode("text/css");
28 function add(keywords
) {
29 for (var name
in keywords
)
30 if (!word
|| name
.lastIndexOf(word
, 0) == 0)
34 var st
= token
.state
.state
;
35 if (st
== "pseudo" || token
.type
== "variable-3") {
37 } else if (st
== "block" || st
== "maybeprop") {
38 add(spec
.propertyKeywords
);
39 } else if (st
== "prop" || st
== "parens" || st
== "at" || st
== "params") {
40 add(spec
.valueKeywords
);
41 add(spec
.colorKeywords
);
42 } else if (st
== "media" || st
== "media_parens") {
44 add(spec
.mediaFeatures
);
47 if (result
.length
) return {
49 from: CodeMirror
.Pos(cur
.line
, start
),
50 to
: CodeMirror
.Pos(cur
.line
, end
)