1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- (function () {
- "use strict";
- function getHints(cm) {
- var cur = cm.getCursor(), token = cm.getTokenAt(cur);
- var inner = CodeMirror.innerMode(cm.getMode(), token.state);
- if (inner.mode.name != "css") return;
- // If it's not a 'word-style' token, ignore the token.
- if (!/^[\w$_-]*$/.test(token.string)) {
- token = {
- start: cur.ch, end: cur.ch, string: "", state: token.state,
- type: null
- };
- var stack = token.state.stack;
- var lastToken = stack && stack.length > 0 ? stack[stack.length - 1] : "";
- if (token.string == ":" || lastToken.indexOf("property") == 0)
- token.type = "variable";
- else if (token.string == "{" || lastToken.indexOf("rule") == 0)
- token.type = "property";
- }
- if (!token.type)
- return;
- var spec = CodeMirror.resolveMode("text/css");
- var keywords = null;
- if (token.type.indexOf("property") == 0)
- keywords = spec.propertyKeywords;
- else if (token.type.indexOf("variable") == 0)
- keywords = spec.valueKeywords;
- if (!keywords)
- return;
- var result = [];
- for (var name in keywords) {
- if (name.indexOf(token.string) == 0 /* > -1 */)
- result.push(name);
- }
- return {
- list: result,
- from: CodeMirror.Pos(cur.line, token.start),
- to: CodeMirror.Pos(cur.line, token.end)
- };
- }
- CodeMirror.registerHelper("hint", "css", getHints);
- })();
|