<p></p>
<p>After a little more research I think it might be possible to do it fully within JS by loading the scroll position from the browser's localStorage (or maybe just sessionStorage) when the DOM is finished loading and saving it before the page is unloaded. If I can get that working, it should do the trick for both Webkit1 and Webkit2 and allow to remove some code from the plugin.</p>
<p>Basic theoretical untested code:</p>
<div class="highlight highlight-source-js"><pre><span class="pl-smi">document</span><span class="pl-kos">.</span><span class="pl-en">addEventListener</span><span class="pl-kos">(</span><span class="pl-s">'DOMContentLoaded'</span><span class="pl-kos">,</span> <span class="pl-kos">(</span><span class="pl-kos">)</span> <span class="pl-c1">=></span> <span class="pl-kos">{</span> 
  <span class="pl-k">const</span> <span class="pl-s1">pos</span> <span class="pl-c1">=</span> <span class="pl-s1">localStorage</span><span class="pl-kos">.</span><span class="pl-en">getItem</span><span class="pl-kos">(</span><span class="pl-s">'mdScrollPos'</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
  <span class="pl-k">if</span> <span class="pl-kos">(</span><span class="pl-s1">pos</span><span class="pl-kos">)</span> <span class="pl-smi">window</span><span class="pl-kos">.</span><span class="pl-en">scrollTo</span><span class="pl-kos">(</span><span class="pl-s1">pos</span><span class="pl-kos">.</span><span class="pl-c1">x</span><span class="pl-kos">,</span> <span class="pl-s1">pos</span><span class="pl-kos">.</span><span class="pl-c1">y</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
<span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
<span class="pl-smi">window</span><span class="pl-kos">.</span><span class="pl-en">onbeforeunload</span> <span class="pl-c1">=</span> <span class="pl-kos">(</span><span class="pl-kos">)</span> <span class="pl-c1">=></span> <span class="pl-kos">{</span>
  <span class="pl-s1">localStorage</span><span class="pl-kos">.</span><span class="pl-en">setItem</span><span class="pl-kos">(</span><span class="pl-s">'mdScrollPos'</span><span class="pl-kos">,</span> <span class="pl-kos">{</span>
    <span class="pl-c1">x</span>: <span class="pl-smi">window</span><span class="pl-kos">.</span><span class="pl-c1">scrollX</span><span class="pl-kos">,</span>
    <span class="pl-c1">y</span>: <span class="pl-smi">window</span><span class="pl-kos">.</span><span class="pl-c1">scrollY</span><span class="pl-kos">,</span>
  <span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
<span class="pl-kos">}</span><span class="pl-kos">;</span></pre></div>
<p>To make it have different scroll positions saved per file rather than one global scroll position for all files will require to pass the filename through the template to JS so it can keep track of which scroll position to load/save. It might also require a bit of JS code to prune/vacuum the localStorage to get rid of scroll positions older than a certain date and/or above a certain number, but that might be overkill.</p>
<p>Next time I'm working on the plugin I'll try and see if it works.</p>

<p style="font-size:small;-webkit-text-size-adjust:none;color:#666;">—<br />You are receiving this because you are subscribed to this thread.<br />Reply to this email directly, <a href="https://github.com/geany/geany-plugins/issues/1055#issuecomment-776559476">view it on GitHub</a>, or <a href="https://github.com/notifications/unsubscribe-auth/AAIOWJ7XXFQZ775Q42GZJGTS6JEZLANCNFSM4V3WCQPQ">unsubscribe</a>.<img src="https://github.com/notifications/beacon/AAIOWJYYBL52ORUVZPPMKKTS6JEZLA5CNFSM4V3WCQP2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOFZEVW5A.gif" height="1" width="1" alt="" /></p>
<script type="application/ld+json">[
{
"@context": "http://schema.org",
"@type": "EmailMessage",
"potentialAction": {
"@type": "ViewAction",
"target": "https://github.com/geany/geany-plugins/issues/1055#issuecomment-776559476",
"url": "https://github.com/geany/geany-plugins/issues/1055#issuecomment-776559476",
"name": "View Issue"
},
"description": "View this Issue on GitHub",
"publisher": {
"@type": "Organization",
"name": "GitHub",
"url": "https://github.com"
}
}
]</script>