# 画面遷移図

## 概要

本プロジェクト（clojure-lsp）は **Language Server Protocol (LSP) のサーバー実装** であり、ユーザーが直接操作するUI画面を持ちません。

## プロジェクトの特性

- **種別**: CLIツール / ライブラリ
- **動作形態**: エディタ（VSCode、Emacs、Vim等）のバックエンドサービスとして動作
- **インターフェース**: LSPプロトコルを介してエディタと通信

## 画面遷移図

本プロジェクトには画面遷移が存在しないため、代わりにLSPサーバーとクライアント間の通信フローを示します。

```mermaid
flowchart TD
    subgraph Editor["エディタ（クライアント）"]
        VSCode["VSCode"]
        Emacs["Emacs"]
        Vim["Vim/Neovim"]
        Other["その他のエディタ"]
    end

    subgraph ClojureLSP["clojure-lsp サーバー"]
        Main["Main Entry Point<br/>cli/src/clojure_lsp/main.clj"]
        Server["LSP Server<br/>cli/src/clojure_lsp/server.clj"]

        subgraph Features["機能モジュール"]
            Completion["補完（Autocomplete）"]
            Definition["定義ジャンプ（Go to Definition）"]
            References["参照検索（Find References）"]
            Rename["リネーム（Rename）"]
            CodeAction["コードアクション"]
            Format["フォーマット"]
            Diagnostics["診断（Diagnostics）"]
        end
    end

    VSCode -->|LSP Protocol| Server
    Emacs -->|LSP Protocol| Server
    Vim -->|LSP Protocol| Server
    Other -->|LSP Protocol| Server

    Main --> Server
    Server --> Features
```

## 注記

- 画面一覧および画面遷移図は、Webアプリケーションやデスクトップアプリケーションなど、ユーザーインターフェースを持つプロジェクトに適用されます。
- 本プロジェクトはLSPサーバーとして動作し、エディタが提供するUIを通じてユーザーと対話します。
- エディタのUIは各エディタの実装に依存し、本プロジェクトの管轄外となります。
