# Neovim Configuration System Patterns ## Architecture Overview ``` . ├── init.lua # Main configuration entry point └── lua/ └── kickstart/ └── plugins/ # Plugin-specific configurations ├── debug.lua # DAP debugging setup ├── lint.lua # nvim-lint configuration └── autopairs.lua # Auto-pairing setup ``` ## Core Patterns ### Plugin Organization - Lazy.nvim for plugin management and lazy loading - Modular plugin configuration files - Clear separation of concerns per plugin - Event-based plugin loading for better startup time ### LSP Integration - Mason.nvim for LSP server management - Comprehensive language server configurations - Integrated completion with nvim-cmp - Automatic server installation and setup ### Development Tools Integration 1. Debugging System - nvim-dap for debug adapter protocol support - Language-specific debug configurations (Go, Python) - Integrated debug UI with nvim-dap-ui - Custom keymaps for debug operations 2. Linting Framework - File-type specific linters - Automatic lint on events (BufEnter, BufWritePost, InsertLeave) - Configurable linter selection per filetype - Integration with LSP diagnostics 3. Code Completion - nvim-cmp as completion engine - LSP-based completions - Snippet integration - Auto-pairs integration for brackets/quotes ## Component Relationships 1. Plugin Manager (lazy.nvim) → Plugin Configurations 2. LSP Layer → Language Servers → Code Intelligence 3. Debug Adapters → DAP UI → User Interface 4. Linters → Diagnostic Framework → Error Reporting ## Design Decisions 1. Event-driven plugin loading for performance 2. Modular configuration for maintainability 3. Extensive use of built-in LSP capabilities 4. Integration between complementary tools (LSP, DAP, Linters) 5. Custom keymaps for efficient workflow