anchor.diff:  
       _context.onDartReconcile.listen((_) => _performAnalysis());
   
  +    keys.bind(['alt-enter', 'ctrl-1'], () {
  +      editor.showCompletions(onlyShowFixes: true);
  +    }, "Quick fix");
  +
  +    keys.bind(['ctrl-space', 'macctrl-space'], () {
  +      editor.showCompletions();
  +    }, "Completion");
  +    
  +    document.onKeyUp.listen((e) {
  +      if (editor.completionActive ||
  +          DocHandler.cursorKeys.contains(e.keyCode)) {
  +        docHandler.generateDoc(_docPanel);
  +      }
  +      _handleAutoCompletion(e);
  +    });
  +    
  +    editorFactory.registerCompleter(
  +            'dart', new DartCompleter(dartServices, _context._dartDoc));
  +    // Set up the gist loader.
  +    // TODO: Move to using the defaultFilters().
  +    deps[GistLoader] = new GistLoader();
  +
  +    document.onKeyUp.listen((e) {
  +      if (editor.completionActive ||
  +          DocHandler.cursorKeys.contains(e.keyCode)) {
  +        docHandler.generateDocWithText(_docPanel);
  +      }
  +    });
       docHandler = new DocHandler(editor, _context);
   
       _finishedInit();
  
positive.code: import 'package:logging/logging.dart';
  import 'package:route_hierarchical/client.dart';
  
  import '../dart_pad.dart';
  import '../documentation.dart';
  import '../context.dart';
  import '../core/dependencies.dart';
  import '../core/modules.dart';
  import '../editing/editor.dart';
  import '../modules/codemirror_module.dart';
  
negative.code:   DocHandler docHandler;
    String _gistId;
  
    bool get _isCompletionActive => editor.completionActive;
    
    Future createNewGist() {
      return null;
    }
  