58 lines
1.6 KiB
Markdown
58 lines
1.6 KiB
Markdown
# System Patterns: Neovim Configuration
|
|
|
|
## System Architecture
|
|
1. **Core Configuration Structure**
|
|
- init.lua as main configuration file
|
|
- Lazy plugin management system
|
|
- LSP integration through nvim-lspconfig
|
|
- Custom keymaps and settings
|
|
|
|
2. **Key Components**
|
|
- Plugin Management (lazy.nvim)
|
|
- LSP Configuration
|
|
- Treesitter Integration
|
|
- Diagnostic System
|
|
- Custom Keybindings
|
|
|
|
## Key Technical Decisions
|
|
|
|
### Plugin Management
|
|
- Using lazy.nvim for plugin management
|
|
- Lazy loading enabled for better startup performance
|
|
- Plugin-specific configurations contained within setup blocks
|
|
|
|
### LSP Implementation
|
|
- Mason for LSP server management
|
|
- nvim-lspconfig for LSP configuration
|
|
- Custom LSP attach events and keymaps
|
|
- Diagnostic configuration through vim.diagnostic
|
|
|
|
### Editor Features
|
|
- Treesitter for syntax highlighting
|
|
- Telescope for fuzzy finding
|
|
- Which-key for keymap discovery
|
|
- Mini.nvim for various utilities
|
|
|
|
## Component Relationships
|
|
1. **Plugin Dependencies**
|
|
- LSP plugins depend on nvim-lspconfig
|
|
- UI elements depend on having Nerd Font
|
|
- Telescope depends on plenary.nvim
|
|
|
|
2. **Configuration Flow**
|
|
- Leader key set before plugins
|
|
- Basic options configured early
|
|
- Plugins loaded through lazy.nvim
|
|
- LSP servers configured after plugins
|
|
- Keymaps set after all configurations
|
|
|
|
## Design Patterns
|
|
1. **Modularity**
|
|
- Separate plugin configurations
|
|
- Isolated LSP server settings
|
|
- Independent keymap definitions
|
|
|
|
2. **Event-Driven**
|
|
- LSP attach events
|
|
- Autocommands for specific behaviors
|
|
- Lazy loading based on events |