User:Cobaltcigs/DiffPreviewFindLine.js

function GetCharacterIndices(s, c) {var a = [];for(var i = 0; i < s.length; i++) if(s[i] === c) a.push(i);return a;}function FindLine(num) {var wpTextbox1 = document.getElementById("wpTextbox1");var indices = GetCharacterIndices(wpTextbox1.value, '\n');indices.unshift(-1);var start = indices[num-1]+1, end = indices[num];var tmp = wpTextbox1.value;location.hash = "";wpTextbox1.scrollTop = 0;wpTextbox1.value = tmp.substring(0, end);wpTextbox1.scrollTop = wpTextbox1.scrollHeight;wpTextbox1.value = tmp;location.hash = "#wpTextbox1";wpTextbox1.selectionStart = wpTextbox1.selectionEnd = start;wpTextbox1.blur();wpTextbox1.focus();wpTextbox1.setSelectionRange(start, end);}function DiffPreviewFindLineSetup() {var wikiDiff = document.getElementById("wikiDiff");var isShowChanges = wikiDiff && (mw.config.get('wgAction') == "submit");if(!isShowChanges) return;var trs = wikiDiff.getElementsByTagName("tr"), lineNum = 0;for(var i = 1; i < trs.length; i++) { var tds = trs[i].getElementsByTagName("td");if(tds.length == 2) {lineNum = parseInt(tds[1].innerText.replace(/\D/g, ""));continue;}var last = tds[tds.length-1];if(/\bdiff-empty\b/.test(last.className)) continue;last.setAttribute("onclick", "FindLine(" + lineNum + ")");lineNum++;}}