diff --git a/.claude-plugin/marketplace.json b/.claude-plugin/marketplace.json index c5b9a52..280ca69 100644 --- a/.claude-plugin/marketplace.json +++ b/.claude-plugin/marketplace.json @@ -129,6 +129,17 @@ "author": { "name": "Jan Kott" } + }, + { + "name": "dart-analyzer", + "version": "1.0.0", + "source": "./dart-analyzer", + "description": "Dart/Flutter language server", + "category": "development", + "tags": ["dart", "flutter", "lsp"], + "author": { + "name": "Tyler Jewell" + } } ] } diff --git a/README.md b/README.md index 6587a41..5321e0a 100644 --- a/README.md +++ b/README.md @@ -33,6 +33,7 @@ The Language Server Protocol provides IDE-like intelligence to Claude Code. On s | [rust-analyzer](./rust-analyzer) | Rust | [rust-analyzer](https://github.com/rust-lang/rust-analyzer) | | [solargraph](./solargraph) | Ruby | [Solargraph](https://github.com/castwide/solargraph) | | [vscode-html-css](./vscode-html-css) | HTML/CSS | [vscode-langservers](https://github.com/hrsh7th/vscode-langservers-extracted) | +| [dart-analyzer](./dart-analyzer) | Dart/Flutter | [Dart SDK](https://dart.dev/tools/dart-analyze) | ## Getting Started @@ -73,6 +74,7 @@ Install individual plugins: /plugin install rust-analyzer@claude-code-lsps /plugin install solargraph@claude-code-lsps /plugin install vscode-html-css@claude-code-lsps +/plugin install dart-analyzer@claude-code-lsps ``` Or browse and install interactively: @@ -210,6 +212,26 @@ npm install -g vscode-langservers-extracted +
+Dart/Flutter (dart-analyzer) + +Install Dart SDK: + +```bash +brew tap dart-lang/dart +brew install dart +``` + +Or install Flutter (includes Dart): + +```bash +# See https://docs.flutter.dev/get-started/install +``` + +Ensure `dart` is in your PATH. + +
+ --- ## Creating Your Own Plugin diff --git a/dart-analyzer/.claude-plugin/plugin.json b/dart-analyzer/.claude-plugin/plugin.json new file mode 100644 index 0000000..5b6e7ef --- /dev/null +++ b/dart-analyzer/.claude-plugin/plugin.json @@ -0,0 +1,8 @@ +{ + "name": "dart-analyzer", + "description": "Dart/Flutter language server", + "version": "1.0.0", + "author": { + "name": "Jan Kott" + } +} diff --git a/dart-analyzer/.lsp.json b/dart-analyzer/.lsp.json new file mode 100644 index 0000000..b2ccbb9 --- /dev/null +++ b/dart-analyzer/.lsp.json @@ -0,0 +1,13 @@ +{ + "dart": { + "command": "dart", + "args": ["language-server", "--client-id=claude-code.dart-analyzer", "--client-version=1.0.0"], + "extensionToLanguage": { + ".dart": "dart" + }, + "transport": "stdio", + "initializationOptions": {}, + "settings": {}, + "maxRestarts": 3 + } +} diff --git a/dart-analyzer/hooks/check-dart.sh b/dart-analyzer/hooks/check-dart.sh new file mode 100755 index 0000000..bb473b2 --- /dev/null +++ b/dart-analyzer/hooks/check-dart.sh @@ -0,0 +1,36 @@ +#!/bin/bash + +# Check if Dart SDK is installed and available in PATH + +if command -v dart &> /dev/null; then + DART_VERSION=$(dart --version 2>&1) + exit 0 +fi + +# Check common Dart/Flutter installation paths +FLUTTER_DART="$FLUTTER_ROOT/bin/cache/dart-sdk/bin/dart" +if [ -n "$FLUTTER_ROOT" ] && [ -x "$FLUTTER_DART" ]; then + echo "[dart-analyzer] Dart found via FLUTTER_ROOT: $FLUTTER_ROOT" + echo " Add to PATH: export PATH=\"\$PATH:\$FLUTTER_ROOT/bin/cache/dart-sdk/bin\"" + exit 0 +fi + +# Check for Flutter in common locations +for FLUTTER_PATH in "$HOME/flutter" "$HOME/.flutter" "/opt/flutter" "/usr/local/flutter"; do + if [ -x "$FLUTTER_PATH/bin/cache/dart-sdk/bin/dart" ]; then + echo "[dart-analyzer] Dart found at: $FLUTTER_PATH/bin/cache/dart-sdk/bin/dart" + echo " Add to PATH: export PATH=\"\$PATH:$FLUTTER_PATH/bin/cache/dart-sdk/bin\"" + exit 0 + fi +done + +# Dart not found +echo "[dart-analyzer] Dart SDK not found in PATH." +echo "" +echo "Install options:" +echo " 1. Flutter (includes Dart): https://docs.flutter.dev/get-started/install" +echo " 2. Dart only: https://dart.dev/get-dart" +echo "" +echo "After installation, ensure 'dart' is in your PATH." + +exit 0 diff --git a/dart-analyzer/hooks/hooks.json b/dart-analyzer/hooks/hooks.json new file mode 100644 index 0000000..8fff46e --- /dev/null +++ b/dart-analyzer/hooks/hooks.json @@ -0,0 +1,16 @@ +{ + "description": "Check for Dart SDK installation on session start", + "hooks": { + "SessionStart": [ + { + "hooks": [ + { + "type": "command", + "command": "bash ${CLAUDE_PLUGIN_ROOT}/hooks/check-dart.sh", + "timeout": 30 + } + ] + } + ] + } +}