---
generated_at: 2026-02-19 18:25:00
metrics:
  claims_total: 90
  claims_with_evidence: 88
  claims_without_evidence: 2
confidence_derived: 0.98
---

# 根拠レポート：modules-editor-fold 単体テストケース一覧

## 本レポートについて

### 目的
本レポートは、生成された単体テストケース一覧の信頼性を検証し、人間レビュアーが効率的にレビューできるようにすることを目的としています。

### チェック方法
以下の観点でドキュメントの内容（Claim：主張）を検証しています：

1. **根拠の有無確認**：各主張に対して、ソースコード・既存設計書・要件定義書などの根拠（Evidence）が存在するか
2. **根拠との整合性**：主張の内容が根拠と矛盾していないか
3. **網羅性**：参照すべき情報源を適切にカバーしているか

### 信頼度スコアの算出
- **confidence_derived** = 根拠あり件数 / 総主張件数
- 状態「○」：根拠あり、「△」：根拠不足または要確認

### 本レポートの使い方
1. まず「サマリー」で全体の信頼度と優先レビュー項目を確認
2. 「Claims と根拠の対応」で △ の項目を重点的にレビュー
3. 「不足情報」で補完が必要な情報源を確認

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.98**
  - 根拠あり：88 / 90、根拠なし：2
- 優先レビュー（高）
  1. **UT-FOL-038**: +fold/open-recの折りたたみ不在時のエラー動作は、実装コードから推測したもの
  2. **UT-FOL-090**: アドバイス関数の実行タイミングはdefadvice!マクロの動作に依存

## 2) 参照した情報（Evidence一覧）
> ここに「実在するもの」だけ列挙。抽出フェーズで付けたIDをそのまま出す。

- E-01: `modules/editor/fold/config.el` - 設定ファイル、カスタム変数、フェイス定義、パッケージ設定
- E-02: `modules/editor/fold/autoload/fold.el` - メイン折りたたみ機能、コマンド、ヘルパー関数
- E-03: `modules/editor/fold/autoload/hideshow.el` - hideshow関連のカスタム関数、インデント検出
- E-04: `modules/editor/fold/packages.el` - パッケージ依存関係定義

## 3) Claims と根拠の対応（レビューの主戦場）

### ヘルパー関数 (+fold--ensure-hideshow-mode)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | hs-minor-modeが既に有効な場合にtを返す | E-02 (L16-22) | ○ |
| C-02 | comment-start/endが定義されている場合にhs-minor-modeを有効化 | E-02 (L19-21) | ○ |
| C-03 | comment-startが未定義の場合にnilを返す | E-02 (L19-20) | ○ |
| C-04 | comment-endが未定義の場合にnilを返す | E-02 (L19-20) | ○ |

### 述語関数 (+fold--vimish-fold-p, +fold--outline-fold-p, +fold--hideshow-fold-p, +fold--treesit-fold-p)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-05 | vimish-foldオーバーレイ存在時に真を返す | E-02 (L24-27) | ○ |
| C-06 | vimish-foldオーバーレイ不在時にnilを返す | E-02 (L24-27) | ○ |
| C-07 | vimish-fold未ロード時にnilを返す | E-02 (L25) | ○ |
| C-08 | outline-modeで見出し上にいる場合に真を返す | E-02 (L29-32) | ○ |
| C-09 | outline-minor-modeで見出し上にいる場合に真を返す | E-02 (L30) | ○ |
| C-10 | 見出し以外の位置でnilを返す | E-02 (L32) | ○ |
| C-11 | outline-mode無効時にnilを返す | E-02 (L30-31) | ○ |
| C-12 | ブロック開始位置で開始位置を返す | E-02 (L34-42) | ○ |
| C-13 | 行の途中からでもブロック開始位置を検出 | E-02 (L40-42) | ○ |
| C-14 | 折りたたみ対象外でnilを返す | E-02 (L37) | ○ |
| C-15 | treesit-fold使用可能時に真を返す | E-02 (L44-48) | ○ |
| C-16 | treesit利用不可時にnilを返す | E-02 (L45) | ○ |
| C-17 | パーサー不在時にnilを返す | E-02 (L46) | ○ |

### +fold--invisible-points
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-18 | 正のcountで次の非表示ポイントを取得 | E-02 (L50-64) | ○ |
| C-19 | 負のcountで前の非表示ポイントを取得 | E-02 (L54, L56) | ○ |
| C-20 | count=0で空リストを返す | E-02 (L61) | ○ |
| C-21 | 非表示ポイント不在時に空リストを返す | E-02 (L57-62) | ○ |

### +fold--union
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-22 | 複数種類の折りたたみ重複時に結合領域を返す | E-02 (L72-110) | ○ |
| C-23 | vimish-foldのみの場合にその領域を返す | E-02 (L84-88) | ○ |
| C-24 | hideshow foldのみの場合にその領域を返す | E-02 (L94-105) | ○ |
| C-25 | outline foldのみの場合にその領域を返す | E-02 (L89-93) | ○ |
| C-26 | treesit-foldのみの場合にその領域を返す | E-02 (L106-110) | ○ |
| C-27 | 折りたたみ不在時にnilを返す | E-02 (L78-82) | ○ |

### +fold--open-rec-between
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-28 | 範囲内のvimish-foldを全て展開 | E-02 (L114-116) | ○ |
| C-29 | 範囲内のhideshowオーバーレイを削除 | E-02 (L119-123) | ○ |
| C-30 | 範囲内のoutlineサブツリーを展開 | E-02 (L117-118) | ○ |
| C-31 | 範囲内のtreesit-foldオーバーレイを削除 | E-02 (L124-131) | ○ |

### コマンド関数 (+fold/toggle, +fold/open, +fold/close)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-32 | vimish-fold上でトグル | E-02 (L143) | ○ |
| C-33 | outline見出し上でトグル | E-02 (L144-146) | ○ |
| C-34 | treesit-fold上でトグル | E-02 (L147) | ○ |
| C-35 | hideshow上でトグル | E-02 (L148) | ○ |
| C-36 | 対象外位置で何も起こらない | E-02 (L142-148, cond構造) | ○ |
| C-37 | ネストした折りたたみを再帰展開 | E-02 (L151-157) | ○ |
| C-38 | 折りたたみ不在時にエラー発生 | E-02 (L156, cl-destructuring-bind) | △ |
| C-39 | vimish-foldを展開 | E-02 (L166) | ○ |
| C-40 | outline見出しの下を展開 | E-02 (L167-169) | ○ |
| C-41 | treesit-foldを展開 | E-02 (L170) | ○ |
| C-42 | hideshowブロックを展開 | E-02 (L171) | ○ |
| C-43 | vimish-foldを折りたたみ | E-02 (L180) | ○ |
| C-44 | outline見出しの下を折りたたみ | E-02 (L181) | ○ |
| C-45 | treesit-foldを折りたたみ | E-02 (L182) | ○ |
| C-46 | hideshowブロックを折りたたみ | E-02 (L183) | ○ |

### +fold/open-all, +fold/close-all
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-47 | levelなしで全展開 | E-02 (L186-203) | ○ |
| C-48 | 指定levelまで展開 | E-02 (L197-201) | ○ |
| C-49 | treesit-fold環境で全展開 | E-02 (L190-191) | ○ |
| C-50 | level=0で最小レベルのみ表示 | E-02 (L201) | ○ |
| C-51 | levelなしで全折りたたみ | E-02 (L206-223) | ○ |
| C-52 | 指定levelで折りたたみ | E-02 (L217-218, L220-221) | ○ |
| C-53 | treesit-fold環境で全折りたたみ | E-02 (L211-212) | ○ |

### +fold/next, +fold/previous
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-54 | 次の折りたたみにジャンプ | E-02 (L226-277) | ○ |
| C-55 | 複数個先にジャンプ | E-02 (L275-276) | ○ |
| C-56 | 次の折りたたみ不在時にエラー | E-02 (L277) | ○ |
| C-57 | 全種類の折りたたみを検出 | E-02 (L230-271) | ○ |
| C-58 | 前の折りたたみにジャンプ | E-02 (L280-283) | ○ |
| C-59 | 複数個前にジャンプ | E-02 (L283, -count) | ○ |
| C-60 | 前の折りたたみ不在時にエラー | E-02 (L277) | ○ |

### hideshow.el関数
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-61 | HAMLで正しく前方移動 | E-03 (L4-6) | ○ |
| C-62 | インデントベースでブロック終端に移動 | E-03 (L9-15) | ○ |
| C-63 | インデント変化なしで移動しない | E-03 (L12) | ○ |
| C-64 | コード折りたたみオーバーレイに表示設定 | E-03 (L18-29) | ○ |
| C-65 | vimish-foldロード時にbefore-string設定 | E-03 (L20-26) | ○ |
| C-66 | コード以外のオーバーレイでは何もしない | E-03 (L19) | ○ |
| C-67 | 空行でtを返す | E-03 (L35-36) | ○ |
| C-68 | 空白のみの行でtを返す | E-03 (L36, string-trim) | ○ |
| C-69 | 内容がある行でnilを返す | E-03 (L36) | ○ |
| C-70 | インデントが基準以上でtを返す | E-03 (L38-40) | ○ |
| C-71 | インデントが基準と等しい場合にtを返す | E-03 (L40) | ○ |
| C-72 | 空行でtを返す(geq-or-empty) | E-03 (L39) | ○ |
| C-73 | インデントが基準未満でnilを返す | E-03 (L40) | ○ |
| C-74 | インデントが基準より大きい場合にtを返す | E-03 (L42-44) | ○ |
| C-75 | インデントが基準と等しい場合にnilを返す(g-or-empty) | E-03 (L44) | ○ |
| C-76 | 空行でtを返す(g-or-empty) | E-03 (L43) | ○ |
| C-77 | 前方検索で述語失敗位置を検出 | E-03 (L46-63) | ○ |
| C-78 | 後方検索で述語失敗位置を検出 | E-03 (L53-54) | ○ |
| C-79 | before=tで述語成功の最後の位置を返す | E-03 (L60-62) | ○ |
| C-80 | skip=tで現在行をスキップ | E-03 (L57) | ○ |
| C-81 | バッファ先頭に到達時の処理 | E-03 (L53-55) | ○ |
| C-82 | バッファ末尾に到達時の処理 | E-03 (L53-55) | ○ |
| C-83 | 同一インデントブロックの範囲を返す | E-03 (L65-79) | ○ |
| C-84 | 指定位置からインデント範囲を検出 | E-03 (L70-71) | ○ |
| C-85 | バッファ先頭でインデント範囲検出 | E-03 (L75-76) | ○ |
| C-86 | バッファ末尾でインデント範囲検出 | E-03 (L77-78) | ○ |
| C-87 | インデント0で全体を範囲とする | E-03 (L72-78) | ○ |

### config.el設定
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-88 | +fold-ellipsisのデフォルト値 | E-01 (L3-8) | ○ |
| C-89 | フェイスがfont-lock-comment-faceを継承 | E-01 (L10-13) | ○ |
| C-90 | アドバイス関数の動作 | E-01 (L55-58) | △ |

## 4) 不足情報（Unknown / Missing）
- **C-38**: `+fold/open-rec`で`+fold--union`がnilを返した場合の`cl-destructuring-bind`の挙動は実行時の動作確認が必要
  - 候補：Emacs Lisp単体テストフレームワーク（ERT）での実行確認
- **C-90**: `defadvice!`マクロの正確な動作タイミングはDoom Emacsのコアライブラリに依存
  - 候補：Doom Emacsコアの`defadvice!`マクロ定義の確認

## 5) リスクフラグ（レビュー観点）
- **0（低リスク）**: 設定値・フェイス定義関連（C-88, C-89）
- **1（中リスク）**: 外部パッケージ連携（treesit-fold、vimish-fold等）の動作はパッケージバージョンに依存
- **1（中リスク）**: インデントベースの折りたたみ検出はエッジケースが多い（空行混在、タブ/スペース混在等）
- **0（低リスク）**: コマンド関数はcondによる優先順位制御が明確

## 6) レビュアーチェックリスト（最小）
- [ ] +fold--ensure-hideshow-modeのcomment-start/end判定がプロジェクトの対象言語で正しく動作するか
- [ ] treesit-fold関連テストケースがtree-sitter未対応環境でスキップされるか確認
- [ ] vimish-fold関連テストケースがvimish-fold未インストール環境でスキップされるか確認
- [ ] +fold/next、+fold/previousの複数折りたたみ種類混在時の優先順位が期待通りか
- [ ] インデントベース折りたたみ（YAML等）でタブとスペース混在時の動作確認
- [ ] +fold--unionの複数オーバーレイ重複時のマージロジックが正しいか
- [ ] outline-modeとoutline-minor-modeの両方で見出し検出が動作するか
- [ ] アドバイス関数+fold--hideshow-ensure-mode-aが正しいタイミングで呼ばれるか
