func()

in src/ulsp/controller/ulsp-daemon/ulsp_daemon.go [174:209]


func (c *controller) registerSessionPlugins(ctx context.Context) error {
	s, err := c.sessions.GetFromContext(ctx)
	if err != nil {
		return fmt.Errorf("getting session from context: %w", err)
	}

	enabledPlugins := []ulspplugin.PluginInfo{}
	for _, plugin := range c.pluginsAll {
		if plugin == nil {
			continue
		}
		info, err := plugin.StartupInfo(ctx)
		if err != nil {
			return fmt.Errorf("getting plugin startup info: %w", err)
		}

		if info.RelevantRepos != nil {
			// Skip if not relevant to this session's repo.
			if _, ok := info.RelevantRepos[s.Monorepo]; !ok {
				continue
			}
		}

		if isEnabled := c.pluginConfig[info.NameKey]; isEnabled {
			c.logger.Infow("plugin registration", "plugin", info.NameKey, "status", "enabled")
			enabledPlugins = append(enabledPlugins, info)
		} else {
			c.logger.Infow("plugin registration", "plugin", info.NameKey, "status", "disabled")
		}
	}
	c.pluginMethods[s.UUID], err = mapper.PluginInfoToRuntimePrioritizedMethods(enabledPlugins)
	if err != nil {
		return fmt.Errorf("prioritizing plugin methods: %w", err)
	}
	return nil
}