anchor.diff:        runButton.disabled = false;
         overlay.visible = false;
       });
  +  }
  +
  +  /// Switch to the console or html results tab depending on whether the sample
  +  /// has html content or not.
  +  void _switchOutputTab(String html) {
  +    if (html.trim().isEmpty) {
  +      outputTabController.selectTab("console");
  +    } else {
  +      outputTabController.selectTab("result");
  +    }
     }
   
     Future<String> _createSummary() {
  
positive.code:     context.onModeChange.listen((_) => docHandler.generateDoc(_docPanel));
  
      // Bind the editable files to the gist.
      Property htmlFile =
          new GistFileProperty(editableGist.getGistFile('index.html'))
        ..onChanged
            .listen((html) => _checkForEmptyHtml(html == null ? "" : html));
      Property htmlDoc =
          new EditorDocumentProperty(_context.htmlDocument, 'html');
      bind(htmlDoc, htmlFile);
      bind(htmlFile, htmlDoc);
  
      Property cssFile =
          new GistFileProperty(editableGist.getGistFile('styles.css'));
      Property cssDoc = new EditorDocumentProperty(_context.cssDocument, 'css');
      bind(cssDoc, cssFile);
      bind(cssFile, cssDoc);
  
      Property dartFile =
          new GistFileProperty(editableGist.getGistFile('main.dart'));
      Property dartDoc =
          new EditorDocumentProperty(_context.dartDocument, 'dart');
      bind(dartDoc, dartFile);
      bind(dartFile, dartDoc);
  
  
negative.code:       if (exp.hasMatch(new String.fromCharCode(e.keyCode))) {
          editor.showCompletions(autoInvoked: true);
        }
      }
    }
  
  