2.6 KiB
2.6 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.