diff options
Diffstat (limited to 'internal/appconfig/feature_sections.go')
| -rw-r--r-- | internal/appconfig/feature_sections.go | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/internal/appconfig/feature_sections.go b/internal/appconfig/feature_sections.go new file mode 100644 index 0000000..9216400 --- /dev/null +++ b/internal/appconfig/feature_sections.go @@ -0,0 +1,50 @@ +package appconfig + +// This file defines the cohesive per-subsystem config structs that make up +// FeatureConfig. The old FeatureConfig was a grab-bag that mixed five unrelated +// non-LLM subsystems (ignore filtering, stats, tmux popup editor, tmux action +// menu, MCP server). Splitting them into named structs documents the seams +// between subsystems and lets consumers depend on a single subsystem's config +// (via the *Section accessors on App) instead of the whole App God-struct. +// +// Each struct is embedded into FeatureConfig, so Go field promotion keeps the +// historical flat access (e.g. cfg.MCPPromptsDir) working for read sites across +// the codebase. Only composite literals that set these leaf fields directly on +// FeatureConfig had to move to the nested form. + +// IgnoreConfig controls gitignore-aware file filtering for the LSP server. +// Files matching these patterns are skipped for completions and code actions. +type IgnoreConfig struct { + // IgnoreGitignore enables respecting .gitignore entries (default true). + IgnoreGitignore *bool `json:"-"` + // IgnoreExtraPatterns are additional glob patterns to always ignore. + IgnoreExtraPatterns []string `json:"-"` + // IgnoreLSPNotify controls whether the LSP notifies when ignoring a file. + IgnoreLSPNotify *bool `json:"-"` +} + +// StatsConfig holds settings for the usage statistics subsystem. +type StatsConfig struct { + // StatsWindowMinutes is the rolling window (in minutes) used for stats. + StatsWindowMinutes int `json:"-"` +} + +// TmuxEditConfig configures the tmux popup editor feature (hexai-tmux-edit). +type TmuxEditConfig struct { + TmuxEditPopupWidth string `json:"-"` + TmuxEditPopupHeight string `json:"-"` + TmuxEditDefaultAgent string `json:"-"` + TmuxEditAgents []TmuxEditAgentCfg `json:"-"` +} + +// TmuxActionConfig configures the main menu for hexai-tmux-action. +type TmuxActionConfig struct { + TmuxActionMenu []TmuxActionMenuEntry `json:"-"` +} + +// MCPConfig holds Model Context Protocol server settings. +type MCPConfig struct { + MCPPromptsDir string `json:"-"` // Directory for prompt storage + MCPSlashCommandSync bool `json:"-"` // Enable slash command sync + MCPSlashCommandDir string `json:"-"` // Directory for slash command files +} |
