diff --git a/internal/app/app.go b/internal/app/app.go index c2bfb0ebd027388146b9745cb3fbc69a514336ed..961ce5960e7d64e38c5d6548e881ed697f6283f9 100644 --- a/internal/app/app.go +++ b/internal/app/app.go @@ -235,9 +235,7 @@ func setupSubscriber[T any]( subscriber func(context.Context) <-chan pubsub.Event[T], outputCh chan<- tea.Msg, ) { - wg.Add(1) - go func() { - defer wg.Done() + wg.Go(func() { subCh := subscriber(ctx) for { select { @@ -260,7 +258,7 @@ func setupSubscriber[T any]( return } } - }() + }) } func (app *App) InitCoderAgent() error { diff --git a/internal/app/lsp_events.go b/internal/app/lsp_events.go index 5961ec5c13e05fc42ff4eab7fbee744224a49694..08e54582b95d8db725bffc7ff8bd43d4a37528b1 100644 --- a/internal/app/lsp_events.go +++ b/internal/app/lsp_events.go @@ -2,6 +2,7 @@ package app import ( "context" + "maps" "time" "github.com/charmbracelet/crush/internal/csync" @@ -48,11 +49,7 @@ func SubscribeLSPEvents(ctx context.Context) <-chan pubsub.Event[LSPEvent] { // GetLSPStates returns the current state of all LSP clients func GetLSPStates() map[string]LSPClientInfo { - states := make(map[string]LSPClientInfo) - for name, info := range lspStates.Seq2() { - states[name] = info - } - return states + return maps.Collect(lspStates.Seq2()) } // GetLSPState returns the state of a specific LSP client diff --git a/internal/csync/slices.go b/internal/csync/slices.go index b7717f0c6df667701f5b64658b0073eaf73fc248..c5c635683e70046694f1cdf647aac8cb425abd24 100644 --- a/internal/csync/slices.go +++ b/internal/csync/slices.go @@ -16,11 +16,9 @@ type LazySlice[K any] struct { // to populate it. func NewLazySlice[K any](load func() []K) *LazySlice[K] { s := &LazySlice[K]{} - s.wg.Add(1) - go func() { + s.wg.Go(func() { s.inner = load() - s.wg.Done() - }() + }) return s } diff --git a/internal/permission/permission_test.go b/internal/permission/permission_test.go index c3c646ecd97f51a0f91d8209e2a34c6855d6547b..d1ccd286836768f1bc1119966568941f7494affd 100644 --- a/internal/permission/permission_test.go +++ b/internal/permission/permission_test.go @@ -154,12 +154,10 @@ func TestPermissionService_SequentialProperties(t *testing.T) { events := service.Subscribe(t.Context()) var result1 bool var wg sync.WaitGroup - wg.Add(1) - go func() { - defer wg.Done() + wg.Go(func() { result1 = service.Request(req) - }() + }) var permissionReq PermissionRequest event := <-events @@ -170,12 +168,10 @@ func TestPermissionService_SequentialProperties(t *testing.T) { assert.True(t, result1, "First request should be granted") var result2 bool - wg.Add(1) - go func() { - defer wg.Done() + wg.Go(func() { result2 = service.Request(req) - }() + }) event = <-events permissionReq = event.Payload