GitHub - Make PRs easier

Collapsing Headers on diffs

As of 2015-09-22. See the latest version.

  1. // ==UserScript==
  2. // @name GitHub - Make PRs easier
  3. // @namespace http://adamwknox.com
  4. // @version 0.6
  5. // @description Collapsing Headers on diffs
  6. // @author DrKnoxy
  7. // @include https://github.com/*
  8. // @grant none
  9. // ==/UserScript==
  10.  
  11. var blobSelector = '.blob-wrapper, .render-wrapper, .file-header + .empty';
  12. function monitorHeaderToggle() {
  13. $(document).on('click', '.file-header', function(e){
  14. $(this).next(blobSelector).toggle();
  15. });
  16. }
  17.  
  18. var toggleID = 'js-blob-collapser';
  19. function addToggle() {
  20. if (!$('#'+toggleID).length){
  21. $('#toc .btn-group').before('<a id="'+toggleID+'" class="btn btn-sm right" style="margin-left:4px;">Collapse</a>');
  22. }
  23. }
  24.  
  25. var allVisible = true;
  26. function monitorToggle() {
  27. $(document).on('click', '#'+toggleID, function(e) {
  28. e.preventDefault();
  29. if (allVisible) {
  30. $(this).addClass('selected');
  31. $(blobSelector).hide();
  32. } else {
  33. $(this).removeClass('selected');
  34. $(blobSelector).show();
  35. }
  36.  
  37. allVisible = !allVisible;
  38. });
  39. }
  40.  
  41. $(function(){
  42. // Toggling with the header
  43. monitorHeaderToggle();
  44.  
  45. // Collapsing all
  46. addToggle();
  47. monitorToggle();
  48.  
  49. $(document).on('pjax:complete pjax:popstate', function(e){
  50. addToggle();
  51. });
  52. });