ネット接続不要、単一の HTML ファイルだけで動く Markdown エディタ/ビューア offline-md-editor-viewer の v0.4.2 を出しました。ソースとプレビューを並べて連動スクロールさせていると、文書の先頭へ戻る途中で、あと少しのところで止まって押し戻されることがありました。原因は見出しの数え方のずれと、スクロールの跳ね返りの 2 つでした。0.4.2 は GitHub Releases、npm、Microsoft Store のすべてで公開済みです。
連動スクロールは、ソースとプレビューの見出しを組にして位置を合わせています。ところがソース側の見出しの数え方が Markdown の解析結果と食い違っていて、組がずれていました。
もう 1 つは跳ね返りです。片方をスクロールするともう片方も動き、その動きがまた元の側へ伝わって押し戻していました。鏡を向かい合わせに置いたような状態です。
直し方は 3 つです。見出しは解析結果から取る。連動で書いたスクロール位置が跳ね返ってきたら、値を見て捨てる。片方が先頭か末尾に着いたら、もう片方も先頭か末尾へ合わせる。
起きていたことは 3 つ。直し方も、それぞれに 1 つずつ当てています。
左右の画面がお互いを押し返していたのが、今回の不具合の正体でした。
Shift_JIS、EUC-JP、ISO-2022-JP で保存するとき、その文字コードで表せない文字(絵文字や、波ダッシュの 〜 など)が入っていると確認を出すようにしました。以前は黙って ? に置き換わっていて、開き直して初めて気づく状態でした。キャンセルすれば、ファイルは変わりません。
以前は黙って ? に置き換わるだけでした。いまは確認が出ます。
note 版には、アプリ全体を見直す監査で出た指摘 13 件のうち目に見える直しと、セキュリティ側の変更も書いています。プレビューのリンクを中クリックしたときの扱い、相対パスの .md を引数に起動したときのフォルダの認可、デスクトップ版のファイル操作が使うパス、Microsoft Store 用の CI の 4 点です。
アプリ全体を端から見直して、指摘を 1 件ずつ直していきました。
外部リンクを無効にしていても、中クリックだけがすり抜けていました。