aboutsummaryrefslogtreecommitdiffstats
path: root/github-apple-option-p-to-preview.user.js
diff options
context:
space:
mode:
authorTeddy Wing2017-09-29 00:10:21 +0200
committerTeddy Wing2017-09-29 00:10:21 +0200
commita56fc2cdc16929216bea1db71b76641152a9c00b (patch)
tree95bc908a07de882605ef2a8be99b21dad15ee724 /github-apple-option-p-to-preview.user.js
downloadGitHub-Apple-Option-P-to-Preview-a56fc2cdc16929216bea1db71b76641152a9c00b.tar.bz2
Add a key event listener to open Preview pane on GitHub comments
Use Apple-Option-P to open the preview pane and toggle it closed. GitHub uses Apple-Shift-P by default to toggle the Preview pane. I need this new shortcut because Firefox uses Apple-Shift-P to open new private browsing windows, shadowing it from GitHub. This is the initial working version of this script. It doesn't currently support comment fields that are added to the page after page load.
Diffstat (limited to 'github-apple-option-p-to-preview.user.js')
-rw-r--r--github-apple-option-p-to-preview.user.js48
1 files changed, 48 insertions, 0 deletions
diff --git a/github-apple-option-p-to-preview.user.js b/github-apple-option-p-to-preview.user.js
new file mode 100644
index 0000000..72e40a4
--- /dev/null
+++ b/github-apple-option-p-to-preview.user.js
@@ -0,0 +1,48 @@
+// ==UserScript==
+// @name GitHub Apple-Option-P to Preview
+// @namespace com.teddywing
+// @description Enables Apple-Option-P to toggle the Preview pane
+// @version 0.0.1
+// @match https://*.github.com/*
+// @grant none
+// ==/UserScript==
+
+var KEY_CODE_P = 80;
+
+
+var comment_textareas = document.querySelectorAll('textarea.js-comment-field');
+
+for (var i = 0; i < comment_textareas.length; i++) {
+ comment_textareas[i].onkeydown = function(e) {
+ if (e.metaKey && e.altKey && e.keyCode == KEY_CODE_P) {
+ show_preview_pane(this);
+
+ var write_tab = this
+ .closest('.js-previewable-comment-form')
+ .querySelector('.js-write-tab');
+ window.setTimeout(function() {
+ register_pane_toggle_shortcut(write_tab);
+ });
+ }
+ };
+}
+
+
+function show_preview_pane (node) {
+ node
+ .closest('.js-previewable-comment-form')
+ .querySelector('.js-preview-tab')
+ .click();
+}
+
+function register_pane_toggle_shortcut (write_tab) {
+ document.body.addEventListener('keydown', toggle_write_pane);
+
+ function toggle_write_pane (e) {
+ if (e.metaKey && e.altKey && e.keyCode == KEY_CODE_P) {
+ write_tab.click();
+
+ document.body.removeEventListener('keydown', toggle_write_pane);
+ }
+ }
+}