您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Switches word wrapping for CODE blocks in comments on github.com
当前为
// ==UserScript== // @name Github Word Wrapping for CODE blocks // @namespace gihubpre // @run-at document-start // @description Switches word wrapping for CODE blocks in comments on github.com // @author Mak Alexey (S-ed, Sedokun) // @match http://github.com/* // @match https://github.com/* // @version 1.220705.1 // @grant none // @license MIT License // ==/UserScript== // if Local Storage used, uncomment to reset default setting or type line in console // localStorage.removeItem("wrapDefault") // wrapDefault = true; if no Local Storage available, will enable word wrapping by default // will reset on script update obviously var wrapDefault = false; var preCSS = '\ .preButtonDiv {\ cursor: pointer;\ display: block;\ left: 0px;\ margin: 2px 0 0 2px;\ position: absolute;\ width: 16px;\ height: 16px;\ line-height: 16px;\ border-radius: 8px;\ text-align: center;\ transition: .5s;\ }\ .comment-body .preButtonDiv{\ margin-left: 5px\ }\ .preButtonDiv:hover {\ transition: .3s;\ background-color: #ccc;\ }' if(typeof(localStorage) !== "undefined") { wrapDefault = localStorage.getItem("wrapDefault"); if( wrapDefault == null ){ if(confirm("github-pre userscript:\nWould You like to set word wrapping to 'enabled' by default?")){ wrapDefault = true; } else wrapDefault = false; localStorage.setItem("wrapDefault", wrapDefault); } } else { console.warn( "Sorry, no Local Storage Available\n\ Hardcoded 'wrapDefault' variable will be used instead (edit script to set)" ); } //Intercepting fetch to trigger DOM parse on navigation events const { fetch: originalFetch } = window; window.fetch = async (...args) => { let [resource, config] = args; let response = await originalFetch(resource, config); initGithubPre(); return response; }; var preStyleSheet = document.createElement("style"); preStyleSheet.type = "text/css"; preStyleSheet.appendChild(document.createTextNode(preCSS)); document.head.appendChild(preStyleSheet); //Trigger once on page load document.addEventListener("DOMContentLoaded", initGithubPreDOM()); function initGithubPreDOM(){ document.removeEventListener("DOMContentLoaded", initGithubPreDOM); initGithubPre(); console.warn( "waka"); } //Parse the page, find all code containers change the wrap, and add swith buttons function initGithubPre(){ var preCollection = document.querySelectorAll(".markdown-body pre"); for (var i = 0; i < preCollection.length; ++i) { if( !preCollection[i].parentNode.firstChild.classList.contains('preButtonDiv') ) addPreButton(preCollection[i]); if (wrapDefault) preCollection[i].firstChild.style.whiteSpace = "pre-wrap"; } } //Function to embed button switches in each code container function addPreButton(element){ var preButtonDiv = document.createElement("div"); var preButtonText = document.createTextNode("▾"); preButtonDiv.appendChild(preButtonText); preButtonDiv.className = "preButtonDiv"; element.parentNode.insertBefore(preButtonDiv, element); preButtonDiv.addEventListener("click", switchPreStyle, false); } //Function to handle Click events function switchPreStyle(){ var pre = this.nextSibling.firstChild.style; pre.whiteSpace = (pre.whiteSpace != "pre-wrap")?"pre-wrap":"pre"; this.style.transform = (this.style.transform != "rotate(-90deg)")?"rotate(-90deg)":""; }