viMarkdown の概要、主な特徴、操作方法、ロードマップ、ビルド方法等を知りたい方は README_ja.md を参照してください。
※ windows版: ビルドや環境構築は不要です! 本ページ下部の Assets からZIPをダウンロードして解凍するだけで、すぐに起動できます。
v0.3.034 リリースノート
1. インライン差分(単語単位比較)機能の新規実装と高度化
- 単語(トークン)単位比較へのアップグレード
- 変更があった行(置換行)の内部を自動比較し、変更された部分だけをさらに部分強調(インライン・ハイライト)する機能を実装しました。
- 当初の「文字単位」の比較から、人間の認知により自然で読みやすい**「単語・トークン単位」の比較アルゴリズムへと拡張**。英語だけでなく、日本語の文章(英数字、スペース、記号の切り分け)においても高精度な部分強調表示を実現しました。
- データ構造の確立
- 算出されたインライン差分情報(追加・削除の文字位置と長さ)を、各行のメタデータ(
QTextBlock::userData)に安全に保存・蓄積する仕組みを実装しました。
- 算出されたインライン差分情報(追加・削除の文字位置と長さ)を、各行のメタデータ(
2. アーキテクチャの最適化(リファクタリング)
- DiffHighlighter の新規導入
- マークダウン用の
MarkdownHighlighterから差分強調ロジックを完全に分離し、差分描画専用のDiffHighlighterクラスを新規に定義しました。 - これにより、「Diffモード中のみ差分ハイライターを動的に適用する」という設計が可能になり、コードの可読性・保守性および描画効率が向上しました。
- マークダウン用の
3. UI・ビジュアル面のブラッシュアップ
- 変更行の背景色変更
- 差分箇所のうち、行の追加・削除(ピンク)と区別するため、行の一部が書き換えられた「変更行(
!)」の背景色を、視認性の高い「明黄色(イエロー)」に変更しました。
- 差分箇所のうち、行の追加・削除(ピンク)と区別するため、行の一部が書き換えられた「変更行(
- メニューチェック状態の自動同期
- 現在アクティブになっているタブ(文書)がDiffモードである場合のみ、メニューバーの「Diff」アクションを有効(Checked)状態にするよう動的な同期制御を追加しました。
4. デバッグ・テスト支援機能の強化
- テストコマンド
DumpCharFlagsをDumpUserDataにリネーム。Diff表示中において、各行のブロックデータに正しくインライン差分情報が格納されているかを、アウトプットバーにダンプ出力して視覚的に検証できるデバッグ機能を実装しました。
5. 不具合修正(クラッシュ対策・境界バグの解消)
- 特定の比較パターンにおけるクラッシュの解消
- 文字列の長さが異なる比較(例:
abcとa/abcとac)や、複雑な反復パターン(aaxyzccaaxyzcc等)を文字単位比較した際に、アプリが異常終了(クラッシュ)する重大なバグを複数修正しました。
- 文字列の長さが異なる比較(例:
- 複数行におよぶ変更行のハイライトズレ修正
- 変更行が複数行に及ぶ場合、2行目以降の左右の行ペアが正しく認識されず、インラインハイライトが消えてしまう(あるいは意図しない箇所に上書きされる)不具合を修正しました。
- 強調位置の微調整
- 比較先(右側)ビューにおける挿入テキストのインラインハイライトが一部表示されない不具合、およびハイライトの開始位置が1文字分ズレてしまう(1-basedに起因する)オフバイワンエラーを修正しました。