+++ /dev/null
-(function() {
- "use strict";
-
- var WORD = /[\w$]+/, RANGE = 500;
-
- CodeMirror.registerHelper("hint", "anyword", function(editor, options) {
- var word = options && options.word || WORD;
- var range = options && options.range || RANGE;
- var cur = editor.getCursor(), curLine = editor.getLine(cur.line);
- var start = cur.ch, end = start;
- while (end < curLine.length && word.test(curLine.charAt(end))) ++end;
- while (start && word.test(curLine.charAt(start - 1))) --start;
- var curWord = start != end && curLine.slice(start, end);
-
- var list = [], seen = {};
- function scan(dir) {
- var line = cur.line, end = Math.min(Math.max(line + dir * range, editor.firstLine()), editor.lastLine()) + dir;
- for (; line != end; line += dir) {
- var text = editor.getLine(line), m;
- var re = new RegExp(word.source, "g");
- while (m = re.exec(text)) {
- if (line == cur.line && m[0] === curWord) continue;
- if ((!curWord || m[0].indexOf(curWord) == 0) && !seen.hasOwnProperty(m[0])) {
- seen[m[0]] = true;
- list.push(m[0]);
- }
- }
- }
- }
- scan(-1);
- scan(1);
- return {list: list, from: CodeMirror.Pos(cur.line, start), to: CodeMirror.Pos(cur.line, end)};
- });
-})();