Skip to content

Commit 123c670

Browse files
committedApr 12, 2021
[anywordhint demo] Update to show current code
Issue #6653
1 parent 2997167 commit 123c670

File tree

1 file changed

+11
-13
lines changed

1 file changed

+11
-13
lines changed
 

‎demo/anywordhint.html

+11-13
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
<link rel="stylesheet" href="../addon/hint/show-hint.css">
99
<script src="../lib/codemirror.js"></script>
1010
<script src="../addon/hint/show-hint.js"></script>
11-
<script src="../addon/hint/anyword-hint.js"></script>
11+
<script src="../addon/hint/anyword-hint.js" id=anyword></script>
1212
<script src="../mode/javascript/javascript.js"></script>
1313
<div id=nav>
1414
<a href="https://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../doc/logo.png"></a>
@@ -29,33 +29,31 @@ <h2>Any Word Completion Demo</h2>
2929
(function() {
3030
"use strict";
3131

32-
var WORD = /[\w$]+/g, RANGE = 500;
32+
var WORD = /[\w$]+/, RANGE = 500;
3333

3434
CodeMirror.registerHelper("hint", "anyword", function(editor, options) {
3535
var word = options && options.word || WORD;
3636
var range = options && options.range || RANGE;
3737
var cur = editor.getCursor(), curLine = editor.getLine(cur.line);
38-
var start = cur.ch, end = start;
39-
while (end < curLine.length && word.test(curLine.charAt(end))) ++end;
38+
var end = cur.ch, start = end;
4039
while (start && word.test(curLine.charAt(start - 1))) --start;
4140
var curWord = start != end && curLine.slice(start, end);
4241

43-
var list = [], seen = {};
44-
function scan(dir) {
45-
var line = cur.line, end = Math.min(Math.max(line + dir * range, editor.firstLine()), editor.lastLine()) + dir;
46-
for (; line != end; line += dir) {
42+
var list = options && options.list || [], seen = {};
43+
var re = new RegExp(word.source, "g");
44+
for (var dir = -1; dir <= 1; dir += 2) {
45+
var line = cur.line, endLine = Math.min(Math.max(line + dir * range, editor.firstLine()), editor.lastLine()) + dir;
46+
for (; line != endLine; line += dir) {
4747
var text = editor.getLine(line), m;
48-
word.lastIndex = 0;
49-
while (m = word.exec(text)) {
50-
if ((!curWord || m[0].indexOf(curWord) == 0) && !seen.hasOwnProperty(m[0])) {
48+
while (m = re.exec(text)) {
49+
if (line == cur.line && m[0] === curWord) continue;
50+
if ((!curWord || m[0].lastIndexOf(curWord, 0) == 0) && !Object.prototype.hasOwnProperty.call(seen, m[0])) {
5151
seen[m[0]] = true;
5252
list.push(m[0]);
5353
}
5454
}
5555
}
5656
}
57-
scan(-1);
58-
scan(1);
5957
return {list: list, from: CodeMirror.Pos(cur.line, start), to: CodeMirror.Pos(cur.line, end)};
6058
});
6159
})();

0 commit comments

Comments
 (0)