-
Notifications
You must be signed in to change notification settings - Fork 2
/
github-editor-default-settings.user.js
87 lines (80 loc) · 2.57 KB
/
github-editor-default-settings.user.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
// ==UserScript==
// @name GitHub Editor - Change Default Settings
// @namespace https://greasyfork.org/users/649
// @version 1.1.21
// @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
// @require https://cdn.jsdelivr.net/gh/kufii/My-UserScripts@22210afba13acf7303fc91590b8265faf3c7eda7/libs/gm_config.js
// @require https://cdn.jsdelivr.net/gh/fuzetsu/userscripts@ec863aa92cea78a20431f92e80ac0e93262136df/wait-for-elements/wait-for-elements.js
// ==/UserScript==
(() => {
'use strict';
const Config = GM_config([
{
key: 'indentMode',
label: 'Indent mode',
default: 'tab',
type: 'dropdown',
values: [
{ value: 'space', text: 'Spaces' },
{ value: 'tab', text: 'Tabs' }
]
},
{
key: 'indentWidth',
label: 'Indent size',
default: 4,
type: 'dropdown',
values: [2, 4, 8]
},
{
key: 'wrapMode',
label: 'Line wrap mode',
default: 'off',
type: 'dropdown',
values: [
{ value: 'off', text: 'No wrap' },
{ value: 'on', text: 'Soft wrap' }
]
}
]);
const updateDropdown = function (dropdown, value) {
dropdown.value = value;
const evt = document.createEvent('HTMLEvents');
evt.initEvent('change', false, true);
dropdown.dispatchEvent(evt);
};
const applySettings = function (cfg) {
const indentMode = document.querySelector('.js-code-indent-mode');
const indentWidth = document.querySelector('.js-code-indent-width');
const wrapMode = document.querySelector('.js-code-wrap-mode');
if (location.href.match(/^https?:\/\/github.com\/[^/]*\/[^/]*\/new\/.*/u)) {
// new file
updateDropdown(indentMode, cfg.indentMode);
updateDropdown(indentWidth, cfg.indentWidth);
updateDropdown(wrapMode, cfg.wrapMode);
} else if (
location.href.match(/^https?:\/\/github.com\/[^/]*\/[^/]*\/edit\/.*/u)
) {
// 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', Config.setup);
const settings = Config.load();
waitForElems({
sel: '.CodeMirror-code',
onmatch() {
applySettings(settings);
}
});
})();