Skip to content

darallium/dotnvim

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

5 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Darallium's Neovim Configuration

Language / 言θͺž: English | ζ—₯本θͺž

A modern, performance-optimized Neovim configuration built on LazyVim with support for multiple programming languages and cross-platform compatibility. image image

✨ Features

  • πŸš€ Modern Architecture: Built on LazyVim with lazy loading for optimal performance
  • πŸ”§ Neovim 0.11+ Support: Hybrid LSP setup supporting both new vim.lsp.config() API and legacy nvim-lspconfig
  • 🌍 Multi-Language Support: TypeScript, Lua, Python, Rust, C++, LaTeX, and JSON with comprehensive LSP configurations
  • πŸ“¦ Smart Plugin Management: Organized plugin structure with core/ and plugins/ separation
  • 🎯 Type Safety: Extensive LuaCATS annotations for better development experience
  • ⚑ Performance Optimized: Lazy loading, caching, and efficient startup times
  • πŸ” Advanced Diagnostics: Rich diagnostic display with virtual text and inlay hints
  • πŸ› οΈ Development Tools: Integrated debugging, testing, and formatting capabilities

🎯 Language Support

Supported Languages & Tools

  • TypeScript/JavaScript: Full LSP support with inlay hints, auto-formatting with Prettier
  • Lua: Advanced configuration with lazy.nvim library support and LuaCATS annotations
  • Python: Pyright integration with Rye virtual environment detection
  • Rust: Comprehensive rust-analyzer setup with extensive configuration and debugging
  • C/C++: clangd with background indexing and clang-tidy integration
  • LaTeX: LTeX language server for academic writing
  • JSON: Schema validation and formatting

πŸ”§ System Requirements

  • Neovim: 0.11+ (recommended) or 0.10+ (legacy support)
  • Git: For plugin management and version control
  • Node.js: For TypeScript/JavaScript development
  • Python: For Python development (Rye supported)
  • Rust: For Rust development (cargo/rustc)
  • C/C++: clangd for C/C++ development

Platform Support

  • βœ… Linux: Full support with tmux clipboard integration
  • βœ… macOS: Native clipboard support with pbcopy/pbpaste
  • βœ… Windows (WSL): win32yank integration for seamless clipboard

πŸš€ Installation

  1. Backup your existing Neovim configuration:

    mv ~/.config/nvim ~/.config/nvim.backup
  2. Clone this repository:

    git clone https://github.com/darallium/neovim-config ~/.config/nvim
  3. Start Neovim:

    nvim
  4. Install plugins: Lazy.nvim will automatically install all plugins on first startup.

πŸ“ Configuration Structure

lua/
β”œβ”€β”€ core/                    # Core Neovim settings
β”‚   β”œβ”€β”€ init.lua            # Core module loader
β”‚   β”œβ”€β”€ options.lua         # Vim options and settings
β”‚   β”œβ”€β”€ keymap.lua          # Key mappings
β”‚   β”œβ”€β”€ lsp.lua             # New LSP API (Neovim 0.11+)
β”‚   └── global.lua          # Global variables and platform detection
β”œβ”€β”€ plugins/                 # Plugin configurations
β”‚   β”œβ”€β”€ lsp.lua             # LSP configuration (hybrid setup)
β”‚   β”œβ”€β”€ Telescope.lua       # Fuzzy finder
β”‚   β”œβ”€β”€ nvim-treesitter.lua # Syntax highlighting
β”‚   β”œβ”€β”€ cmp.lua             # Completion engine
β”‚   β”œβ”€β”€ rust.lua            # Rust-specific tools
β”‚   β”œβ”€β”€ copilot.lua         # GitHub Copilot integration
β”‚   β”œβ”€β”€ colorscheme.lua     # Color scheme settings
β”‚   β”œβ”€β”€ dashboard.lua       # Start screen
β”‚   └── ui.lua              # UI enhancements
└── util.lua                # Utility functions

πŸ”‘ Key Mappings

LSP Navigation

  • gd - Go to definition
  • gD - Go to declaration
  • gi - Go to implementation
  • gr - Go to references
  • K - Hover documentation

Telescope

  • ;; - Open Telescope picker

Rust-specific (when in Rust files)

  • <leader>ca - Code actions
  • <leader>dr - Debug runnables

🎨 Plugins

Core Plugins

Development Tools

Language Support

πŸ”§ Advanced Configuration

LSP Hybrid Setup

This configuration supports both Neovim 0.11+ native LSP API and legacy nvim-lspconfig:

-- Automatic version detection
if vim.fn.has('nvim-0.11') == 1 then
  require("core.lsp").setup(capabilities)  -- New API
else
  -- Legacy lspconfig setup
end

Language-specific Features

TypeScript

  • Project-aware LSP activation (only in directories with package.json)
  • Comprehensive inlay hints for parameters, types, and return values
  • Auto-formatting with Prettier on save

Rust

  • Extensive rust-analyzer configuration with 450+ lines of settings
  • Custom completion snippets (Ok, Some, Err, Arc::new, etc.)
  • Integrated debugging and testing tools
  • Crate management with semantic versioning

Python

  • Rye virtual environment auto-detection
  • Pyright with workspace-wide analysis
  • Auto-detection of Python interpreters

🀝 Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

πŸ“„ License

This project is licensed under the GPLv3 License - see the LICENSE file for details.

πŸ™ Acknowledgments

  • LazyVim for the excellent foundation
  • Neovim team for the amazing editor
  • All plugin authors who make the Neovim ecosystem incredible

πŸ”§ Troubleshooting

Common Issues

  1. LSP not starting: Check if the language server is installed and available in PATH
  2. Slow startup: Ensure plugins are properly configured for lazy loading
  3. Clipboard issues: Verify clipboard tools are installed (xclip, pbcopy, or win32yank)
  4. TypeScript errors: Ensure you're in a Node.js project with package.json

Debug Commands

# Check Neovim version
nvim --version

# Check LSP status
:LspInfo

# Check plugin status
:Lazy

# Check health
:checkhealth

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages