diff options
| author | adamdottv <[email protected]> | 2025-05-09 13:37:13 -0500 |
|---|---|---|
| committer | adamdottv <[email protected]> | 2025-05-09 13:37:13 -0500 |
| commit | f1007771997bd0401516eda87a7e0ac92f269680 (patch) | |
| tree | d26198d031516eaebcc885870b470925492d8775 /internal/lsp/discovery | |
| parent | f41b7bbd0a0cc731fd7c471b7ee8b26f14a21755 (diff) | |
| download | opencode-f1007771997bd0401516eda87a7e0ac92f269680.tar.gz opencode-f1007771997bd0401516eda87a7e0ac92f269680.zip | |
wip: logging improvements
Diffstat (limited to 'internal/lsp/discovery')
| -rw-r--r-- | internal/lsp/discovery/integration.go | 13 | ||||
| -rw-r--r-- | internal/lsp/discovery/language.go | 9 | ||||
| -rw-r--r-- | internal/lsp/discovery/server.go | 53 |
3 files changed, 38 insertions, 37 deletions
diff --git a/internal/lsp/discovery/integration.go b/internal/lsp/discovery/integration.go index 7820b6449..d44389384 100644 --- a/internal/lsp/discovery/integration.go +++ b/internal/lsp/discovery/integration.go @@ -4,7 +4,7 @@ import ( "fmt" "github.com/opencode-ai/opencode/internal/config" - "github.com/opencode-ai/opencode/internal/logging" + "log/slog" ) // IntegrateLSPServers discovers languages and LSP servers and integrates them into the application configuration @@ -23,9 +23,9 @@ func IntegrateLSPServers(workingDir string) error { // Always run language detection, but log differently for first run vs. subsequent runs if shouldInit || len(cfg.LSP) == 0 { - logging.Info("Running initial LSP auto-discovery...") + slog.Info("Running initial LSP auto-discovery...") } else { - logging.Debug("Running LSP auto-discovery to detect new languages...") + slog.Debug("Running LSP auto-discovery to detect new languages...") } // Configure LSP servers @@ -38,7 +38,7 @@ func IntegrateLSPServers(workingDir string) error { for langID, serverInfo := range servers { // Skip languages that already have a configured server if _, exists := cfg.LSP[langID]; exists { - logging.Debug("LSP server already configured for language", "language", langID) + slog.Debug("LSP server already configured for language", "language", langID) continue } @@ -49,12 +49,12 @@ func IntegrateLSPServers(workingDir string) error { Command: serverInfo.Path, Args: serverInfo.Args, } - logging.Info("Added LSP server to configuration", + slog.Info("Added LSP server to configuration", "language", langID, "command", serverInfo.Command, "path", serverInfo.Path) } else { - logging.Warn("LSP server not available", + slog.Warn("LSP server not available", "language", langID, "command", serverInfo.Command, "installCmd", serverInfo.InstallCmd) @@ -63,4 +63,3 @@ func IntegrateLSPServers(workingDir string) error { return nil } - diff --git a/internal/lsp/discovery/language.go b/internal/lsp/discovery/language.go index 5e0a8d1af..69fef01d5 100644 --- a/internal/lsp/discovery/language.go +++ b/internal/lsp/discovery/language.go @@ -6,8 +6,8 @@ import ( "strings" "sync" - "github.com/opencode-ai/opencode/internal/logging" "github.com/opencode-ai/opencode/internal/lsp" + "log/slog" ) // LanguageInfo stores information about a detected language @@ -206,9 +206,9 @@ func DetectLanguages(rootDir string) (map[string]LanguageInfo, error) { // Log detected languages for id, info := range languages { if info.IsPrimary { - logging.Debug("Detected primary language", "language", id, "files", info.FileCount, "projectFiles", len(info.ProjectFiles)) + slog.Debug("Detected primary language", "language", id, "files", info.FileCount, "projectFiles", len(info.ProjectFiles)) } else { - logging.Debug("Detected secondary language", "language", id, "files", info.FileCount) + slog.Debug("Detected secondary language", "language", id, "files", info.FileCount) } } @@ -295,4 +295,5 @@ func GetLanguageIDFromPath(path string) string { uri := "file://" + path langKind := lsp.DetectLanguageID(uri) return GetLanguageIDFromProtocol(string(langKind)) -}
\ No newline at end of file +} + diff --git a/internal/lsp/discovery/server.go b/internal/lsp/discovery/server.go index 2b7d4eeb6..98b56bc18 100644 --- a/internal/lsp/discovery/server.go +++ b/internal/lsp/discovery/server.go @@ -8,7 +8,7 @@ import ( "runtime" "strings" - "github.com/opencode-ai/opencode/internal/logging" + "log/slog" ) // ServerInfo contains information about an LSP server @@ -114,7 +114,7 @@ func FindLSPServer(languageID string) (ServerInfo, error) { if err == nil { serverInfo.Available = true serverInfo.Path = path - logging.Debug("Found LSP server in PATH", "language", languageID, "command", serverInfo.Command, "path", path) + slog.Debug("Found LSP server in PATH", "language", languageID, "command", serverInfo.Command, "path", path) return serverInfo, nil } @@ -125,13 +125,13 @@ func FindLSPServer(languageID string) (ServerInfo, error) { // Found the server serverInfo.Available = true serverInfo.Path = searchPath - logging.Debug("Found LSP server in common location", "language", languageID, "command", serverInfo.Command, "path", searchPath) + slog.Debug("Found LSP server in common location", "language", languageID, "command", serverInfo.Command, "path", searchPath) return serverInfo, nil } } // Server not found - logging.Debug("LSP server not found", "language", languageID, "command", serverInfo.Command) + slog.Debug("LSP server not found", "language", languageID, "command", serverInfo.Command) return serverInfo, fmt.Errorf("LSP server for %s not found. Install with: %s", languageID, serverInfo.InstallCmd) } @@ -140,7 +140,7 @@ func getCommonLSPPaths(languageID, command string) []string { var paths []string homeDir, err := os.UserHomeDir() if err != nil { - logging.Error("Failed to get user home directory", "error", err) + slog.Error("Failed to get user home directory", "error", err) return paths } @@ -148,21 +148,21 @@ func getCommonLSPPaths(languageID, command string) []string { switch runtime.GOOS { case "darwin": // macOS paths - paths = append(paths, + paths = append(paths, fmt.Sprintf("/usr/local/bin/%s", command), fmt.Sprintf("/opt/homebrew/bin/%s", command), fmt.Sprintf("%s/.local/bin/%s", homeDir, command), ) case "linux": // Linux paths - paths = append(paths, + paths = append(paths, fmt.Sprintf("/usr/bin/%s", command), fmt.Sprintf("/usr/local/bin/%s", command), fmt.Sprintf("%s/.local/bin/%s", homeDir, command), ) case "windows": // Windows paths - paths = append(paths, + paths = append(paths, fmt.Sprintf("%s\\AppData\\Local\\Programs\\%s.exe", homeDir, command), fmt.Sprintf("C:\\Program Files\\%s\\bin\\%s.exe", command, command), ) @@ -182,12 +182,12 @@ func getCommonLSPPaths(languageID, command string) []string { case "typescript", "javascript", "html", "css", "json", "yaml", "php": // Node.js global packages if runtime.GOOS == "windows" { - paths = append(paths, + paths = append(paths, fmt.Sprintf("%s\\AppData\\Roaming\\npm\\%s.cmd", homeDir, command), fmt.Sprintf("%s\\AppData\\Roaming\\npm\\node_modules\\.bin\\%s.cmd", homeDir, command), ) } else { - paths = append(paths, + paths = append(paths, fmt.Sprintf("%s/.npm-global/bin/%s", homeDir, command), fmt.Sprintf("%s/.nvm/versions/node/*/bin/%s", homeDir, command), fmt.Sprintf("/usr/local/lib/node_modules/.bin/%s", command), @@ -196,12 +196,12 @@ func getCommonLSPPaths(languageID, command string) []string { case "python": // Python paths if runtime.GOOS == "windows" { - paths = append(paths, + paths = append(paths, fmt.Sprintf("%s\\AppData\\Local\\Programs\\Python\\Python*\\Scripts\\%s.exe", homeDir, command), fmt.Sprintf("C:\\Python*\\Scripts\\%s.exe", command), ) } else { - paths = append(paths, + paths = append(paths, fmt.Sprintf("%s/.local/bin/%s", homeDir, command), fmt.Sprintf("%s/.pyenv/shims/%s", homeDir, command), fmt.Sprintf("/usr/local/bin/%s", command), @@ -210,12 +210,12 @@ func getCommonLSPPaths(languageID, command string) []string { case "rust": // Rust paths if runtime.GOOS == "windows" { - paths = append(paths, + paths = append(paths, fmt.Sprintf("%s\\.rustup\\toolchains\\*\\bin\\%s.exe", homeDir, command), fmt.Sprintf("%s\\.cargo\\bin\\%s.exe", homeDir, command), ) } else { - paths = append(paths, + paths = append(paths, fmt.Sprintf("%s/.rustup/toolchains/*/bin/%s", homeDir, command), fmt.Sprintf("%s/.cargo/bin/%s", homeDir, command), ) @@ -248,7 +248,7 @@ func getCommonLSPPaths(languageID, command string) []string { // getVSCodeExtensionsPath returns the path to VSCode extensions directory func getVSCodeExtensionsPath(homeDir string) string { var basePath string - + switch runtime.GOOS { case "darwin": basePath = filepath.Join(homeDir, "Library", "Application Support", "Code", "User", "globalStorage") @@ -259,12 +259,12 @@ func getVSCodeExtensionsPath(homeDir string) string { default: return "" } - + // Check if the directory exists if _, err := os.Stat(basePath); err != nil { return "" } - + return basePath } @@ -275,32 +275,33 @@ func ConfigureLSPServers(rootDir string) (map[string]ServerInfo, error) { if err != nil { return nil, fmt.Errorf("failed to detect languages: %w", err) } - + // Find LSP servers for detected languages servers := make(map[string]ServerInfo) for langID, langInfo := range languages { // Prioritize primary languages but include all languages that have server definitions if !langInfo.IsPrimary && langInfo.FileCount < 3 { // Skip non-primary languages with very few files - logging.Debug("Skipping non-primary language with few files", "language", langID, "files", langInfo.FileCount) + slog.Debug("Skipping non-primary language with few files", "language", langID, "files", langInfo.FileCount) continue } - + // Check if we have a server for this language serverInfo, err := FindLSPServer(langID) if err != nil { - logging.Warn("LSP server not found", "language", langID, "error", err) + slog.Warn("LSP server not found", "language", langID, "error", err) continue } - + // Add to the map of configured servers servers[langID] = serverInfo if langInfo.IsPrimary { - logging.Info("Configured LSP server for primary language", "language", langID, "command", serverInfo.Command, "path", serverInfo.Path) + slog.Info("Configured LSP server for primary language", "language", langID, "command", serverInfo.Command, "path", serverInfo.Path) } else { - logging.Info("Configured LSP server for secondary language", "language", langID, "command", serverInfo.Command, "path", serverInfo.Path) + slog.Info("Configured LSP server for secondary language", "language", langID, "command", serverInfo.Command, "path", serverInfo.Path) } } - + return servers, nil -}
\ No newline at end of file +} + |
