| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 | 
							- <!doctype html>
 
- <html>
 
-   <head>
 
-     <title>CodeMirror 2: Autocomplete Demo</title>
 
-     <link rel="stylesheet" href="../lib/codemirror.css">
 
-     <script src="../lib/codemirror.js"></script>
 
-     <link rel="stylesheet" href="../theme/night.css">
 
-     <script src="../mode/javascript/javascript.js"></script>
 
-     <link rel="stylesheet" href="../css/docs.css">
 
-     <style type="text/css">
 
-       .completions {
 
-         position: absolute;
 
-         z-index: 10;
 
-         overflow: hidden;
 
-         -webkit-box-shadow: 2px 3px 5px rgba(0,0,0,.2);
 
-         -moz-box-shadow: 2px 3px 5px rgba(0,0,0,.2);
 
-         box-shadow: 2px 3px 5px rgba(0,0,0,.2);
 
-       }
 
-       .completions select {
 
-         background: #fafafa;
 
-         outline: none;
 
-         border: none;
 
-         padding: 0;
 
-         margin: 0;
 
-         font-family: monospace;
 
-       }
 
-       .CodeMirror {
 
-         border: 1px solid #eee;
 
-       }
 
-     </style>
 
-   </head>
 
-   <body>
 
-     <h1>CodeMirror 2: Autocomplete demo</h1>
 
-     <form><textarea id="code" name="code">
 
- function getCompletions(token, context) {
 
-   var found = [], start = token.string;
 
-   function maybeAdd(str) {
 
-     if (str.indexOf(start) == 0) found.push(str);
 
-   }
 
-   function gatherCompletions(obj) {
 
-     if (typeof obj == "string") forEach(stringProps, maybeAdd);
 
-     else if (obj instanceof Array) forEach(arrayProps, maybeAdd);
 
-     else if (obj instanceof Function) forEach(funcProps, maybeAdd);
 
-     for (var name in obj) maybeAdd(name);
 
-   }
 
-   if (context) {
 
-     // If this is a property, see if it belongs to some object we can
 
-     // find in the current environment.
 
-     var obj = context.pop(), base;
 
-     if (obj.className == "js-variable")
 
-       base = window[obj.string];
 
-     else if (obj.className == "js-string")
 
-       base = "";
 
-     else if (obj.className == "js-atom")
 
-       base = 1;
 
-     while (base != null && context.length)
 
-       base = base[context.pop().string];
 
-     if (base != null) gatherCompletions(base);
 
-   }
 
-   else {
 
-     // If not, just look in the window object and any local scope
 
-     // (reading into JS mode internals to get at the local variables)
 
-     for (var v = token.state.localVars; v; v = v.next) maybeAdd(v.name);
 
-     gatherCompletions(window);
 
-     forEach(keywords, maybeAdd);
 
-   }
 
-   return found;
 
- }
 
- </textarea></form>
 
- <p>Press <strong>ctrl-space</strong> to activate autocompletion. See
 
- the <a href="complete.js">code</a> to figure out how it works.</p>
 
-     <script src="complete.js"></script>
 
-   </body>
 
- </html>
 
 
  |