# System Patterns ## Architecture Patterns ### 1. Plugin System - Uses `lazy.nvim` for plugin management. - Plugins are defined in `init.lua`. - Supports lazy loading via events/commands. - Custom plugins can be added in `lua/custom/plugins/`. ### 2. Configuration Structure ``` . ├── init.lua # Main configuration file ├── lua/ │ ├── kickstart/ # Core functionality │ │ └── plugins/ # Built-in plugin configs │ └── custom/ # User customizations │ └── plugins/ # Custom plugin configs └── doc/ # Documentation ``` ### 3. Key Design Patterns #### Modular Configuration - Core settings in `init.lua`. - Plugin-specific configurations in separate files. - Custom configurations isolated in `lua/custom/`. #### Event-Driven Architecture - Uses Neovim's event system for plugin loading. - Autocommands for specific behaviors. - LSP events for IDE features. #### Layer-Based Organization 1. **Core Settings Layer** - Basic Vim options. - Key mappings. - Global variables. 2. **Plugin Layer** - Plugin management. - Plugin configurations. - Plugin-specific settings. 3. **LSP Layer** - Language server configurations. - Completion setup. - Diagnostic settings. 4. **UI Layer** - Colorscheme. - Statusline. - Visual enhancements. ## Technical Decisions ### 1. Configuration Language - Lua chosen over VimScript for: - Better performance. - Modern syntax. - Rich data structures. - Better integration with Neovim. ### 2. Plugin Selection - Minimal but powerful set of defaults. - Focus on maintained, actively developed plugins. - Preference for Lua-based plugins. - Built-in LSP over CoC or similar alternatives. ### 3. Code Organization - Single `init.lua` for easy understanding. - Modular structure available through `kickstart-modular.nvim`. - Clear separation between core and user customizations. ### 4. Performance Considerations - Lazy loading of plugins. - Efficient event handling. - Minimal startup impact. - Careful LSP configuration. ## Key Technical Standards 1. **Code Style** - Consistent Lua formatting. - Clear commenting. - Documented configuration options. 2. **Plugin Management** - Versioned dependencies. - Conditional loading. - Clear plugin specifications. 3. **Error Handling** - Protected calls for plugin loading. - Fallbacks for missing dependencies. - Clear error messages. 4. **Documentation** - Inline documentation. - Help files. - Clear user instructions.