Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Sets Bitbucket, Github, Gist or (whatever you add) source code view indentation to something sensible
// ==UserScript==
// @name Source View Indentation Fix
// @namespace http://davestewart.io
// @version 1.0
// @description Sets Bitbucket, Github, Gist or (whatever you add) source code view indentation to something sensible
// @author Dave Stewart
// @grant none
// @match https://bitbucket.org/*
// @match https://gist.github.com
// @match https://gist.github.com/*
// @match https://github.com/*
// ==/UserScript==
// -----------------------------------------------------------------------------------------------------------
// user preferences
// tab sizes
var sizes =
{
// add / modify language extensions here...
default :4,
html :4,
js :4,
rb :2
};
// selectors
var selectors =
{
// add / modifiy selector templates here...
general:
[
'pre, pre *', // preformatted tags & content
'.code pre', // bitbucket
'.line' // gist
],
diffs:
[
'div[class*="{lang}-"] td', // github
'section[data-filename$=".{lang}"] pre.source' // bitbucket
],
files:
[
'div.{lang}-blob-data div.line', // gist
'td.{lang}-file-line', // github
'#editor-container[data-source-url$="{lang}"] pre' // bitbucket
]
};
// -----------------------------------------------------------------------------------------------------------
// code
// setup
function addStyle(selector, lang, size)
{
selector = selector.replace('{lang}', lang);
styles += selector + '{ tab-size: ' +size+ '; }\n';
}
var styles = '';
// build styles
// loop over types
for(var type in selectors)
{
// add heading
styles += '\n/* ' +type+ ' */\n\n';
// loop over rules
for(var i = 0; i < selectors[type].length; i++)
{
var selector = selectors[type][i];
// if no {lang} variable is found in the selector, just add the style once
if(selector.indexOf('{lang}') == -1)
{
addStyle(selector, null, sizes.default);
}
// otherwise, create a new rule for each language
else
{
for(var lang in sizes)
{
if(lang !== 'default')
{
addStyle(selector, lang, sizes[lang]);
}
}
}
}
}
// add styles to page
console.log('Code view indentation modified by Tampermonkey script "Source View Indentation Fix"');
$('head').append('<style>' +styles+ '</style>');
@vitaly-zdanevich

This comment has been minimized.

Copy link

vitaly-zdanevich commented Mar 14, 2017

Hm, not working for me :(

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.