2.5 KiB
2.5 KiB
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
-
Core Settings Layer
- Basic Vim options
- Key mappings
- Global variables
-
Plugin Layer
- Plugin management
- Plugin configurations
- Plugin-specific settings
-
LSP Layer
- Language server configurations
- Completion setup
- Diagnostic settings
-
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
-
Code Style
- Consistent Lua formatting
- Clear commenting
- Documented configuration options
-
Plugin Management
- Versioned dependencies
- Conditional loading
- Clear plugin specifications
-
Error Handling
- Protected calls for plugin loading
- Fallbacks for missing dependencies
- Clear error messages
-
Documentation
- Inline documentation
- Help files
- Clear user instructions