diff --git a/IPython/frontend/html/notebook/static/js/context-hint.js b/IPython/frontend/html/notebook/static/js/context-hint.js
index d265c02..e109bdd 100644
--- a/IPython/frontend/html/notebook/static/js/context-hint.js
+++ b/IPython/frontend/html/notebook/static/js/context-hint.js
@@ -1,81 +1,92 @@
// highly adapted for codemiror jshint
-
-(function () {
+(function() {
"use strict";
+
function forEach(arr, f) {
for (var i = 0, e = arr.length; i < e; ++i) f(arr[i]);
}
-
+
function arrayContains(arr, item) {
if (!Array.prototype.indexOf) {
var i = arr.length;
while (i--) {
- if (arr[i] === item) {return true;}
+ if (arr[i] === item) {
+ return true;
+ }
}
return false;
}
return arr.indexOf(item) != -1;
}
-
+
CodeMirror.contextHint = function(editor) {
// Find the token at the cursor
- var cur = editor.getCursor(), token = editor.getTokenAt(cur), tprop = token;
+ var cur = editor.getCursor(),
+ token = editor.getTokenAt(cur),
+ tprop = token;
// If it's not a 'word-style' token, ignore the token.
// If it is a property, find out what it is a property of.
var list = new Array();
- var clist = getCompletions(token,editor);
- for(var i = 0 ; i < clist.length ; i++)
- {
- list.push(
- { str : clist[i],
- type : "context",
- from : {line: cur.line, ch: token.start},
- to : {line: cur.line, ch: token.end} })
+ var clist = getCompletions(token, editor);
+ for (var i = 0; i < clist.length; i++) {
+ list.push({
+ str: clist[i],
+ type: "context",
+ from: {
+ line: cur.line,
+ ch: token.start
+ },
+ to: {
+ line: cur.line,
+ ch: token.end
+ }
+ })
}
return list;
}
// find all 'words' of current cell
- var getAllTokens = function(editor)
- {
- var found = [];
+ var getAllTokens = function(editor) {
+ var found = [];
+
+ // add to found if not already in it
- // add to found if not already in it
- function maybeAdd(str) {
- if (!arrayContains(found, str)) found.push(str);
- }
- // loop through all token on all lines
- var lineCount = editor.lineCount();
- // loop on line
- for( var l=0; l< lineCount ; l++)
- {
- var line = editor.getLine(l);
- //loop on char
- for( var c = 1 ; c < line.length ; c++)
- {
- var tk = editor.getTokenAt({line:l,ch:c});
- // if token has a class, it has geat chances of beeing
- // of interest. Add it to the list of possible completions.
- // we could skip token of ClassName 'comment'
- // or 'number' and 'operator'
- if(tk.className != null){
- maybeAdd(tk.string);
+ function maybeAdd(str) {
+ if (!arrayContains(found, str)) found.push(str);
+ }
+
+ // loop through all token on all lines
+ var lineCount = editor.lineCount();
+ // loop on line
+ for (var l = 0; l < lineCount; l++) {
+ var line = editor.getLine(l);
+ //loop on char
+ for (var c = 1; c < line.length; c++) {
+ var tk = editor.getTokenAt({
+ line: l,
+ ch: c
+ });
+ // if token has a class, it has geat chances of beeing
+ // of interest. Add it to the list of possible completions.
+ // we could skip token of ClassName 'comment'
+ // or 'number' and 'operator'
+ if (tk.className != null) {
+ maybeAdd(tk.string);
+ }
+ // jump to char after end of current token
+ c = tk.end;
}
- // jump to char after end of current token
- c = tk.end;
}
+ return found;
}
- return found;
- }
- function getCompletions(token,editor)
- {
+ function getCompletions(token, editor) {
var candidates = getAllTokens(editor);
// filter all token that have a common start (but nox exactly) the lenght of the current token
- var lambda = function(x){
- return (x.indexOf(token.string)==0 && x != token.string)
+ var lambda = function(x) {
+ return (x.indexOf(token.string) == 0 && x != token.string)
};
var filterd = candidates.filter(lambda);
return filterd;