novel-writer 3.4.9~3.4.11に関する開発ノートです。
novel-writerはファイルの並び順を以下のような文字列ソートで行っていました。ファイル名を表現している文字コードの番号が小さい方から順番に並べる方法です。
1-冒頭情景.txt
10-言葉の応酬.txt
11-プロローグ終了.txt
2-主人公登場.txt
3-友人との対話.txt
4...文字列ソートで「1-冒頭情景.txt」の次にくるのは「2-主人公登場.txt」ではなく、「10-言葉の応酬.txt」になります。奇妙に見えるかもしれませんが「10」の「1」は「2」よりも番号が若いので、文字列ソートでは「1, 10, 11, 2, 3…」のように並んでしまいます。
使いにくいことはわかっていて後回しにしてたのですが、Xで「これはバグかな」という疑問の声を見かけたので、この際手を入れることにしました。Mac OSのFinderもWindowsのExpolorerも少し前までは文字列ソートを行っていましたが、今や自然な順番に並んでいるので、これがnovel-writerのバグだと思われても仕方がありません。使い始めた頃は文字列ソートだったVS Codeも自然順ソートに変わっています。何より私も不便には思っていたのです。
実装は思ったよりも簡単に終わりました。
npmのNatural Compareを追加して、ファイルのリストを内部的に作っているところに並び替えを行う機能を追加しただけ。これでテキストの結合と、原稿のファイル名が自然な順番に並ぶようになりました。地味な変更ですが、使いやすくなっていると思います。OSやプラットフォームのVS Codeと並び順が一致したのは嬉しいものです。Natural Compareは「EP1、EP2..EP10」のような接頭辞のあるナンバリングにも対応しているようなので、私が気づいていないところでも使いやすくなるかもしれませんね。
それでは執筆をお楽しみください。