Skip to content

Commit 627b730

Browse files
fix: execute scans async in didChangeWorkspaceFolders and purgeCache (#709)
1 parent 58542b7 commit 627b730

File tree

3 files changed

+11
-3
lines changed

3 files changed

+11
-3
lines changed

application/server/server.go

+4-1
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,9 @@ func Start(c *config.Config) {
6464

6565
handlers := handler.Map{}
6666
srv = jrpc2.NewServer(handlers, &jrpc2.ServerOptions{
67+
Logger: func(text string) {
68+
c.Logger().Trace().Str("method", "jrpc-server").Msg(text)
69+
},
6770
RPCLog: RPCLogger{c},
6871
AllowPush: true,
6972
})
@@ -195,7 +198,7 @@ func workspaceDidChangeWorkspaceFoldersHandler(srv *jrpc2.Server) jrpc2.Handler
195198
command.HandleFolders(bgCtx, srv, di.Notifier(), di.ScanPersister())
196199
if config.CurrentConfig().IsAutoScanEnabled() {
197200
for _, f := range changedFolders {
198-
f.ScanFolder(ctx)
201+
go f.ScanFolder(ctx)
199202
}
200203
}
201204
return nil, nil

domain/ide/command/clear_cache.go

+3-2
Original file line numberDiff line numberDiff line change
@@ -78,14 +78,15 @@ func (cmd *clearCache) Execute(_ context.Context) (any, error) {
7878

7979
func (cmd *clearCache) purgeInMemoryCache(logger *zerolog.Logger, folderUri *lsp.DocumentURI) {
8080
ws := workspace.Get()
81-
for _, folder := range ws.Folders() {
81+
trusted, _ := ws.GetFolderTrust()
82+
for _, folder := range trusted {
8283
if folderUri != nil && *folderUri != folder.Uri() {
8384
continue
8485
}
8586
logger.Info().Msgf("deleting in-memory cache for folder %s", folder.Path())
8687
folder.Clear()
8788
if config.CurrentConfig().IsAutoScanEnabled() {
88-
folder.ScanFolder(context.Background())
89+
go folder.ScanFolder(context.Background())
8990
}
9091
}
9192
}

domain/ide/command/folder_handler.go

+4
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,10 @@ func sendFolderConfigsNotification(notifier noti.Notifier) {
4747
folderConfig := c.FolderConfig(f.Path())
4848
folderConfigs = append(folderConfigs, *folderConfig)
4949
}
50+
51+
if folderConfigs == nil {
52+
return
53+
}
5054
folderConfigsParam := types.FolderConfigsParam{FolderConfigs: folderConfigs}
5155
notifier.Send(folderConfigsParam)
5256
}

0 commit comments

Comments
 (0)