github-tabstop

add tabstop option for hard tabs (works for github/gist)

  1. // Copyright (c) 2016, summivox. (MIT Licensed)
  2. // ==UserScript==
  3. // @name github-tabstop
  4. // @namespace http://github.com/smilekzs
  5. // @version 0.2.0
  6. // @description add tabstop option for hard tabs (works for github/gist)
  7. // @grant GM_xmlhttpRequest
  8. // @match *://github.com/*
  9. // @match *://gist.github.com/*
  10. // ==/UserScript==
  11. // vim: set nowrap ft= :
  12.  
  13. // http://stackoverflow.com/questions/4190442/run-greasemonkey-script-only-once-per-page-load
  14. if (window.top != window.self) return; //don't run on frames or iframes
  15.  
  16.  
  17. ;var PACKED_HTML={"tab.html":"<span class=\"ghts-tab\">&nbsp;&nbsp;&nbsp;&nbsp;</span>\r\n","ui-gist.html":"<li style=\"padding: 0 0.5em;\">\r\n <label>Tab stop: <input class=\"ghts-input\" style=\"width: 1.2em;\" value=\"4\"></label>\r\n</li>\r\n","ui-github.html":"<label>Tab stop: <input class=\"ghts-input\" style=\"width: 1.2em;\" value=\"4\"></label>\r\n"};
  18.  
  19.  
  20. var bind, make, modify, repeat, transform;
  21.  
  22. repeat = function(c, n) {
  23. var i, s, _i;
  24. s = '';
  25. for (i = _i = 0; _i < n; i = _i += 1) {
  26. s += c;
  27. }
  28. return s;
  29. };
  30.  
  31. transform = (function() {
  32. var TAB;
  33. TAB = PACKED_HTML['tab.html'].trim();
  34. return function(el) {
  35. var line, _i, _len, _ref, _results;
  36. _ref = $(el).addClass('ghts-file').find('.js-file-line');
  37. _results = [];
  38. for (_i = 0, _len = _ref.length; _i < _len; _i++) {
  39. line = _ref[_i];
  40. _results.push(line.innerHTML = line.innerHTML.replace(/\t/g, TAB));
  41. }
  42. return _results;
  43. };
  44. })();
  45.  
  46. modify = function(el, ts) {
  47. var et, tab, _i, _len, _ref;
  48. if (isNaN(ts)) {
  49. return false;
  50. }
  51. et = repeat('&nbsp;', ts);
  52. _ref = el.getElementsByClassName('ghts-tab');
  53. for (_i = 0, _len = _ref.length; _i < _len; _i++) {
  54. tab = _ref[_i];
  55. tab.innerHTML = et;
  56. }
  57. return true;
  58. };
  59.  
  60. bind = function(file, input) {
  61. return input != null ? input.addEventListener('change', function() {
  62. return modify(file, Number(input.value));
  63. }) : void 0;
  64. };
  65.  
  66. make = {
  67. 'github.com': function() {
  68. var file, input, _i, _len, _ref;
  69. _ref = $('.file:not(.ghts-file)');
  70. for (_i = 0, _len = _ref.length; _i < _len; _i++) {
  71. file = _ref[_i];
  72. transform(file);
  73. $(file).find('.file-actions').prepend(PACKED_HTML['ui-github.html']);
  74. input = $(file).find('.ghts-input')[0];
  75. bind(file, input);
  76. }
  77. }
  78. };
  79.  
  80. make['gist.github.com'] = make['github.com'];
  81.  
  82. $(function() {
  83. var f;
  84. if (f = make[document.location.host]) {
  85. f();
  86. return setInterval(f, 500);
  87. }
  88. });

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址