A userscript that highlights the linked-to comment
// ==UserScript==
// @name GitHub Issue Highlighter
// @version 1.1.1
// @description A userscript that highlights the linked-to comment
// @license MIT
// @author Rob Garrison
// @namespace https://github.com/Mottie
// @match https://github.com/*
// @run-at document-idle
// @grant GM.addStyle
// @grant GM_addStyle
// @require https://greasemonkey.github.io/gm4-polyfill/gm4-polyfill.js?updated=20180103
// @icon https://github.githubassets.com/pinned-octocat.svg
// @supportURL https://github.com/Mottie/GitHub-userscripts/issues
// ==/UserScript==
(() => {
"use strict";
// !important needed to override styles added by
// https://github.com/StylishThemes/GitHub-Dark
GM.addStyle(`
.timeline-comment.selected,
.timeline-comment.current-user.selected {
border-color: #4183C4 !important;
}
.timeline-comment.selected .comment:before,
.timeline-comment.current-user.selected:before {
border-right-color: #4183C4 !important;
}
`);
const regex = /^#issue(comment)?-\d+/;
function init(event) {
if (document.querySelector("#discussion_bucket")) {
let target, indx,
hash = window.location.hash;
// remove "selected" class on hashchange
if (event) {
target = document.querySelectorAll(".timeline-comment");
indx = target.length;
while (indx--) {
target[indx].classList.remove("selected");
}
}
// add "selected" class
if (regex.test(hash)) {
target = document.querySelector(hash.match(regex)[0]);
if (target) {
target.querySelector(".timeline-comment").classList.add("selected");
}
}
}
}
window.addEventListener("hashchange", init);
document.addEventListener("pjax:end", init);
init();
})();