diff --git a/lang/collect/collect.go b/lang/collect/collect.go index 0dae115..944a0de 100644 --- a/lang/collect/collect.go +++ b/lang/collect/collect.go @@ -29,6 +29,7 @@ import ( . "github.com/cloudwego/abcoder/lang/lsp" "github.com/cloudwego/abcoder/lang/python" "github.com/cloudwego/abcoder/lang/rust" + "github.com/cloudwego/abcoder/lang/typescript" "github.com/cloudwego/abcoder/lang/uniast" ) @@ -91,6 +92,8 @@ func switchSpec(l uniast.Language) LanguageSpec { return cxx.NewCxxSpec() case uniast.Python: return python.NewPythonSpec() + case uniast.Typescript: + return typescript.NewTypescriptSpec() default: panic(fmt.Sprintf("unsupported language %s", l)) } diff --git a/lang/lsp/client.go b/lang/lsp/client.go index d4ecbf2..c46b0eb 100644 --- a/lang/lsp/client.go +++ b/lang/lsp/client.go @@ -219,7 +219,14 @@ func (rwc rwc) Close() error { // start a LSP process and return its io func startLSPSever(path string) (io.ReadWriteCloser, error) { // Launch rust-analyzer - cmd := exec.Command(path) + cmd := exec.Command(path, "--stdio") + cmd.Env = append(os.Environ(), "PATH=/usr/local/bin/:"+os.Getenv("PATH")) + abc, err := exec.LookPath("typescript-language-server") + if err != nil { + fmt.Println("未找到 typescript-language-server 命令:", err) + } else { + fmt.Println("找到 typescript-language-server 命令在:", abc) + } stdin, err := cmd.StdinPipe() if err != nil { diff --git a/lang/parse.go b/lang/parse.go index 9ef9530..fbf48fe 100644 --- a/lang/parse.go +++ b/lang/parse.go @@ -32,6 +32,7 @@ import ( "github.com/cloudwego/abcoder/lang/lsp" "github.com/cloudwego/abcoder/lang/python" "github.com/cloudwego/abcoder/lang/rust" + "github.com/cloudwego/abcoder/lang/typescript" "github.com/cloudwego/abcoder/lang/uniast" ) @@ -109,6 +110,8 @@ func checkRepoPath(repoPath string, language uniast.Language) (openfile string, openfile, wait = cxx.CheckRepo(repoPath) case uniast.Python: openfile, wait = python.CheckRepo(repoPath) + case uniast.Typescript: + openfile, wait = typescript.CheckRepo(repoPath) default: openfile = "" wait = 0 @@ -126,6 +129,8 @@ func checkLSP(language uniast.Language, lspPath string) (l uniast.Language, s st l, s = cxx.GetDefaultLSP() case uniast.Python: l, s = python.GetDefaultLSP() + case uniast.Typescript: + l, s = typescript.GetDefaultLSP() case uniast.Golang: l = uniast.Golang s = "" diff --git a/lang/uniast/ast.go b/lang/uniast/ast.go index 394acea..36e396b 100644 --- a/lang/uniast/ast.go +++ b/lang/uniast/ast.go @@ -27,11 +27,12 @@ import ( type Language string const ( - Golang Language = "go" - Rust Language = "rust" - Cxx Language = "cxx" - Python Language = "python" - Unknown Language = "" + Golang Language = "go" + Rust Language = "rust" + Cxx Language = "cxx" + Python Language = "python" + Typescript Language = "typescript" + Unknown Language = "" ) func (l Language) String() string { @@ -44,6 +45,8 @@ func (l Language) String() string { return "cxx" case Python: return "python" + case Typescript: + return "typescript" default: return string(l) } @@ -64,6 +67,8 @@ func NewLanguage(lang string) (l Language) { return Cxx case "python": return Python + case "typescript": + return Typescript default: return Unknown }