@@ -23,6 +23,7 @@ import (
23
23
"github.com/microsoft/typescript-go/internal/project"
24
24
"github.com/microsoft/typescript-go/internal/project/ata"
25
25
"github.com/microsoft/typescript-go/internal/project/logging"
26
+ "github.com/microsoft/typescript-go/internal/tspath"
26
27
"github.com/microsoft/typescript-go/internal/vfs"
27
28
"golang.org/x/sync/errgroup"
28
29
"golang.org/x/text/language"
@@ -639,9 +640,27 @@ func (s *Server) handleInitialized(ctx context.Context, params *lsproto.Initiali
639
640
s .watchEnabled = true
640
641
}
641
642
643
+ cwd := s .cwd
644
+ if s .initializeParams .Capabilities != nil &&
645
+ s .initializeParams .Capabilities .Workspace != nil &&
646
+ s .initializeParams .Capabilities .Workspace .WorkspaceFolders != nil &&
647
+ ptrIsTrue (s .initializeParams .Capabilities .Workspace .WorkspaceFolders ) &&
648
+ s .initializeParams .WorkspaceFolders != nil &&
649
+ s .initializeParams .WorkspaceFolders .WorkspaceFolders != nil &&
650
+ len (* s .initializeParams .WorkspaceFolders .WorkspaceFolders ) == 1 {
651
+ cwd = lsproto .DocumentUri ((* s .initializeParams .WorkspaceFolders .WorkspaceFolders )[0 ].Uri ).FileName ()
652
+ } else if s .initializeParams .RootUri .DocumentUri != nil {
653
+ cwd = s .initializeParams .RootUri .DocumentUri .FileName ()
654
+ } else if s .initializeParams .RootPath != nil && s .initializeParams .RootPath .String != nil {
655
+ cwd = * s .initializeParams .RootPath .String
656
+ }
657
+ if ! tspath .PathIsAbsolute (cwd ) {
658
+ cwd = s .cwd
659
+ }
660
+
642
661
s .session = project .NewSession (& project.SessionInit {
643
662
Options : & project.SessionOptions {
644
- CurrentDirectory : s . cwd ,
663
+ CurrentDirectory : cwd ,
645
664
DefaultLibraryPath : s .defaultLibraryPath ,
646
665
TypingsLocation : s .typingsLocation ,
647
666
PositionEncoding : s .positionEncoding ,
0 commit comments