# 機能設計書 24-lightline連携

## 概要

本ドキュメントは、space-vimにおけるlightline.vim連携機能の設計仕様を定義する。

### 本機能の処理概要

lightline.vimは、軽量でカスタマイズ可能なVim/NeoVim向けステータスラインプラグインである。space-vimでは、+themes/lightlineレイヤーを通じてlightline.vimを統合し、vim-airlineの代替として使用できる。

**業務上の目的・背景**：vim-airlineは機能が豊富だが、その分重くなることがある。lightline.vimは軽量でありながら必要十分なステータスライン機能を提供し、起動時間やレスポンスを重視するユーザーに適している。また、シンプルなカスタマイズAPIにより、独自のステータスライン構成を容易に実現できる。

**機能の利用シーン**：
- 軽量なステータスライン表示が必要な場合
- vim-airlineの代替としてlightlineを使用する場合
- カスタムステータスライン構成を行う場合

**主要な処理内容**：
1. +themes/lightlineレイヤー有効化時にプラグインを登録
2. wombatカラースキームをデフォルト適用
3. ステータスラインにモード、ファイル情報などを表示

**関連システム・外部連携**：
- space-vim-theme（カラースキーム連携）
- itchyny/lightline.vim プラグイン

**権限による制御**：特になし

## 関連画面

| 画面No | 画面名 | 関連種別 | 関連する操作・処理 |
|--------|--------|----------|------------------|
| 15 | Lightline（ステータスライン） | 主機能 | lightline.vimによる軽量ステータスライン表示 |

## 機能種別

UI表示 / ステータスライン

## 入力仕様

### 入力パラメータ

| パラメータ名 | 型 | 必須 | 説明 | バリデーション |
|-------------|-----|-----|------|---------------|
| g:lightline.colorscheme | String | No | lightlineカラースキーム | デフォルト: wombat |

### 入力データソース

- Vimグローバル変数

## 出力仕様

### 出力データ

| 項目名 | 型 | 説明 |
|--------|-----|------|
| ステータスライン | Vim statusline | モード、ファイル情報等の表示 |

### 出力先

- Vimステータスライン領域

## 処理フロー

### 処理シーケンス

```
1. +themes/lightlineレイヤー読み込み
   └─ packages.vimでlightline.vimプラグイン登録
2. config.vim実行
   └─ g:lightline設定（colorscheme: wombat）
3. ステータスライン表示
   └─ 軽量なステータスライン表示
```

### フローチャート

```mermaid
flowchart TD
    A[Vim起動] --> B[+themes/lightlineレイヤー読み込み]
    B --> C[packages.vimでプラグイン登録]
    C --> D[config.vim実行]
    D --> E[g:lightline設定]
    E --> F[wombatテーマ適用]
    F --> G[ステータスライン表示完了]
```

## ビジネスルール

### 業務ルール

| ルールNo | ルール名 | 内容 | 適用条件 |
|---------|---------|------|---------|
| BR-24-01 | 排他的使用 | airlineレイヤーとlightlineレイヤーは排他的 | レイヤー設定時 |
| BR-24-02 | フォールバック | airline/lightline未使用時はeleline.vimを使用 | 常時 |

### 計算ロジック

なし

## データベース操作仕様

### 操作別データベース影響一覧

データベース操作なし

### テーブル別操作詳細

該当なし

## エラー処理

### エラーケース一覧

| エラーコード | エラー種別 | 発生条件 | 対処方法 |
|------------|----------|---------|---------|
| E-24-01 | プラグイン未検出 | lightline.vimが存在しない | silent!で無視 |

### リトライ仕様

なし

## トランザクション仕様

該当なし

## パフォーマンス要件

- vim-airlineより軽量な実装
- 即座にステータスライン表示

## セキュリティ考慮事項

なし

## 備考

- vim-airlineより軽量
- シンプルなカスタマイズAPI

---

## コードリーディングガイド

本機能を理解するために参照すべきファイルと、推奨する読み解き順序を以下に示す。

### 推奨読解順序

#### Step 1: プラグイン登録を理解する

| 順序 | ファイル | パス | 読解ポイント |
|-----|---------|------|-------------|
| 1-1 | packages.vim | `layers/+themes/lightline/packages.vim` | プラグイン登録 |

**読解のコツ**: MPマクロでlightline.vimを登録。

**主要処理フロー**:
- **1行目**: `MP 'itchyny/lightline.vim'` - lightline.vimプラグイン登録

#### Step 2: 設定処理を理解する

| 順序 | ファイル | パス | 読解ポイント |
|-----|---------|------|-------------|
| 2-1 | config.vim | `layers/+themes/lightline/config.vim` | lightline設定 |

**主要処理フロー**:
- **2-4行目**: `g:lightline`辞書でcolorscheme設定
- **3行目**: `'colorscheme': 'wombat'` - wombatテーマをデフォルト使用

#### Step 3: フォールバック処理を理解する

| 順序 | ファイル | パス | 読解ポイント |
|-----|---------|------|-------------|
| 3-1 | packages.vim | `layers/+distributions/spacevim/packages.vim` | フォールバック処理 |

**主要処理フロー**:
- **6-8行目**: `spacevim#load_any('airline', 'lightline')`でどちらも未使用時、eleline.vimを使用

### プログラム呼び出し階層図

```
spacevim#bootstrap()
    │
    ├─ layers/+themes/lightline/packages.vim
    │      └─ MP 'itchyny/lightline.vim'
    │
    └─ layers/+themes/lightline/config.vim
           └─ g:lightline = { 'colorscheme': 'wombat' }
```

### データフロー図

```
[入力]               [処理]                    [出力]

packages.vim ───▶ プラグイン登録 ───▶ lightline読み込み
                         │
                         ▼
                  config.vim ───▶ テーマ設定 ───▶ ステータスライン表示
```

### 関連ファイル一覧

| ファイル | パス | 種別 | 役割 |
|---------|------|------|------|
| packages.vim | `layers/+themes/lightline/packages.vim` | ソース | プラグイン登録 |
| config.vim | `layers/+themes/lightline/config.vim` | ソース | lightline設定 |
| packages.vim | `layers/+distributions/spacevim/packages.vim` | ソース | フォールバック処理 |
