Просмотр исходного кода

refactor: extract Diagnostic namespace into lsp/diagnostic.ts + self-reexport (#22983)

Kit Langton 2 дней назад
Родитель
Сommit
8afb625bab
2 измененных файлов с 30 добавлено и 27 удалено
  1. 29 0
      packages/opencode/src/lsp/diagnostic.ts
  2. 1 27
      packages/opencode/src/lsp/lsp.ts

+ 29 - 0
packages/opencode/src/lsp/diagnostic.ts

@@ -0,0 +1,29 @@
+import * as LSPClient from "./client"
+
+const MAX_PER_FILE = 20
+
+export function pretty(diagnostic: LSPClient.Diagnostic) {
+  const severityMap = {
+    1: "ERROR",
+    2: "WARN",
+    3: "INFO",
+    4: "HINT",
+  }
+
+  const severity = severityMap[diagnostic.severity || 1]
+  const line = diagnostic.range.start.line + 1
+  const col = diagnostic.range.start.character + 1
+
+  return `${severity} [${line}:${col}] ${diagnostic.message}`
+}
+
+export function report(file: string, issues: LSPClient.Diagnostic[]) {
+  const errors = issues.filter((item) => item.severity === 1)
+  if (errors.length === 0) return ""
+  const limited = errors.slice(0, MAX_PER_FILE)
+  const more = errors.length - MAX_PER_FILE
+  const suffix = more > 0 ? `\n... and ${more} more` : ""
+  return `<diagnostics file="${file}">\n${limited.map(pretty).join("\n")}${suffix}\n</diagnostics>`
+}
+
+export * as Diagnostic from "./diagnostic"

+ 1 - 27
packages/opencode/src/lsp/lsp.ts

@@ -505,30 +505,4 @@ export const layer = Layer.effect(
 
 export const defaultLayer = layer.pipe(Layer.provide(Config.defaultLayer))
 
-export namespace Diagnostic {
-  const MAX_PER_FILE = 20
-
-  export function pretty(diagnostic: LSPClient.Diagnostic) {
-    const severityMap = {
-      1: "ERROR",
-      2: "WARN",
-      3: "INFO",
-      4: "HINT",
-    }
-
-    const severity = severityMap[diagnostic.severity || 1]
-    const line = diagnostic.range.start.line + 1
-    const col = diagnostic.range.start.character + 1
-
-    return `${severity} [${line}:${col}] ${diagnostic.message}`
-  }
-
-  export function report(file: string, issues: LSPClient.Diagnostic[]) {
-    const errors = issues.filter((item) => item.severity === 1)
-    if (errors.length === 0) return ""
-    const limited = errors.slice(0, MAX_PER_FILE)
-    const more = errors.length - MAX_PER_FILE
-    const suffix = more > 0 ? `\n... and ${more} more` : ""
-    return `<diagnostics file="${file}">\n${limited.map(pretty).join("\n")}${suffix}\n</diagnostics>`
-  }
-}
+export * as Diagnostic from "./diagnostic"