internal/lsp/client_capabilities.go (25 lines of code) (raw):
package lsp
import (
"context"
"errors"
lsp "github.com/Azure/azapi-lsp/internal/protocol"
)
type clientCapsCtxKey struct{}
func SetClientCapabilities(ctx context.Context, caps *lsp.ClientCapabilities) error {
cc, ok := ctx.Value(clientCapsCtxKey{}).(*lsp.ClientCapabilities)
if !ok {
return errors.New("client capabilities not found")
}
*cc = *caps
return nil
}
func WithClientCapabilities(ctx context.Context, caps *lsp.ClientCapabilities) context.Context {
return context.WithValue(ctx, clientCapsCtxKey{}, caps)
}
func ClientCapabilities(ctx context.Context) (lsp.ClientCapabilities, error) {
caps, ok := ctx.Value(clientCapsCtxKey{}).(*lsp.ClientCapabilities)
if !ok {
return lsp.ClientCapabilities{}, errors.New("client capabilities not found")
}
return *caps, nil
}