Greasy Fork is available in English.

Leetcode relative line number

Make relative line number available on leetcode

2021-09-26 يوللانغان نەشرى. ئەڭ يېڭى نەشرىنى كۆرۈش.

  1. // ==UserScript==
  2. // @name Leetcode relative line number
  3. // @namespace http://tampermonkey.net/
  4. // @version 0.1
  5. // @description Make relative line number available on leetcode
  6. // @author You
  7. // @match https://leetcode.com/problems/*
  8. // @icon https://www.google.com/s2/favicons?domain=leetcode.com
  9. // @grant none
  10. // ==/UserScript==
  11.  
  12. (function() {
  13. 'use strict';
  14.  
  15. // Your code here...
  16. function setRelativeLineNumber() {
  17. let activeLineHTML = document.querySelector("div.CodeMirror-activeline > div > div").innerHTML;
  18. let activeLineNumber = 0;
  19. if (activeLineHTML != null && activeLineHTML !== undefined) {
  20. activeLineNumber = parseInt(activeLineHTML.match("[0-9]+")[0]);
  21. }
  22. let allLines = document.querySelectorAll("div.CodeMirror-linenumber");
  23. console.log(activeLineNumber);
  24. allLines.forEach(line => {
  25. if (!line.hasAttribute("natural-line")) {
  26. line.setAttribute("natural-line", parseInt(line.innerHTML));
  27. }
  28. line.innerHTML = Math.abs(line.getAttribute("natural-line") - activeLineNumber).toString();
  29. if (line.innerHTML == "0") {
  30. line.innerHTML = "<b>" + activeLineNumber.toString() + "</b>";
  31. }
  32. });
  33. };
  34. setInterval(setRelativeLineNumber, 300);
  35. document.addEventListener('click', setRelativeLineNumber);
  36.  
  37. // const observer = new MutationObserver(() => console.log("changed"));
  38. // const cursor = document.querySelector("div.CodeMirror-cursor");
  39. // observer.observe(cursor, { attributes: true, attributeFilter: ["style"] });
  40. })();