您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
change default settings for the github editor
当前为
// ==UserScript== // @name GitHub Editor - Change Default Settings // @namespace https://greatest.deepsurf.us/users/649 // @version 1.0.6 // @description change default settings for the github editor // @author Adrien Pyke // @match *://github.com/*/new/* // @match *://github.com/*/edit/* // @grant GM_getValue // @grant GM_setValue // @grant GM_registerMenuCommand // ==/UserScript== (function() { 'use strict'; var loadConfig = function() { var defaults = { indentMode: 'tab', indentWidth: 4, wrapMode: 'off' }; var cfg = GM_getValue('cfg'); if (!cfg) return defaults; return JSON.parse(cfg); }; var saveConfig = function (cfg) { GM_setValue('cfg', JSON.stringify(cfg)); }; var setup = function() { var createContainer = function() { var div = document.createElement('div'); div.style.backgroundColor = 'white'; div.style.padding = '5px'; div.style.border = '1px solid black'; div.style.position = 'fixed'; div.style.top = '0'; div.style.right = '0'; return div; }; var createSelect = function(label, options, value) { var select = document.createElement('select'); select.style.margin = '2px'; var optgroup = document.createElement('optgroup'); if (label) { optgroup.setAttribute('label', label); } select.appendChild(optgroup); options.forEach(function(opt) { var option = document.createElement('option'); option.setAttribute('value', opt.value); option.textContent = opt.text; optgroup.appendChild(option); }); select.value = value; return select; }; var createButton = function(text, onclick) { var button = document.createElement('button'); button.style.margin = '2px'; button.textContent = text; button.onclick = onclick; return button; }; var createLineBreak = function() { return document.createElement('br'); }; var init = function(cfg) { var div = createContainer(); var indentMode = createSelect('Indent mode', [ { value: 'space', text: 'Spaces' }, { value: 'tab', text: 'Tabs' } ], cfg.indentMode); div.appendChild(indentMode); var indentWidth = createSelect('Indent size', [ { value: 2, text: 2 }, { value: 4, text: 4 }, { value: 8, text: 8 } ], cfg.indentWidth); div.appendChild(indentWidth); var wrapMode = createSelect('Line wrap mode', [ { value: 'off', text: 'No wrap' }, { value: 'on', text: 'Soft wrap' } ], cfg.wrapMode); div.appendChild(wrapMode); div.appendChild(createLineBreak()); div.appendChild(createButton('Save', function(e) { var settings = { indentMode: indentMode.value, indentWidth: indentWidth.value, wrapMode: wrapMode.value }; saveConfig(settings); div.remove(); })); div.appendChild(createButton('Cancel', function(e) { div.remove(); })); document.body.appendChild(div); }; init(loadConfig()); }; var updateDropdown = function(dropdown, value) { dropdown.value = value; var evt = document.createEvent('HTMLEvents'); evt.initEvent('change', false, true); dropdown.dispatchEvent(evt); }; var applySettings = function(cfg) { var indentMode = document.querySelector('.js-code-indent-mode'); var indentWidth = document.querySelector('.js-code-indent-width'); var wrapMode = document.querySelector('.js-code-wrap-mode'); if (location.href.match(/^https?:\/\/github.com\/[^\/]*\/[^\/]*\/new\/.*/)) { // new file updateDropdown(indentMode, cfg.indentMode); updateDropdown(indentWidth, cfg.indentWidth); updateDropdown(wrapMode, cfg.wrapMode); } else if (location.href.match(/^https?:\/\/github.com\/[^\/]*\/[^\/]*\/edit\/.*/)) { // edit file // if the file is using space indentation we don't want to change it if (indentMode.value === 'tab') { updateDropdown(indentWidth, cfg.indentWidth); } updateDropdown(wrapMode, cfg.wrapMode); } }; GM_registerMenuCommand('GitHub Editor Settings', setup); var settings = loadConfig(); applySettings(settings); })();