Skip to content

Patrickbpds/my-dotfiles

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

67 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸš€ Patrick's Neovim Configuration

GitHub stars

A modern, feature-rich Neovim configuration optimized for Java development and full-stack programming. Built with LazyVim, featuring LSP integration, debugging capabilities, and a curated plugin ecosystem for maximum productivity.

πŸ–ΌοΈ Preview

🎨 Neovim Configuration Interface

Neovim Configuration

β˜• Development Environment

Java Development

πŸ”§ Neovim Interface

Java Features

✨ Features

  • πŸš€ LazyVim Integration - Modern plugin management with lazy loading
  • β˜• Java Excellence - Full JDTLS support with Spring Boot, Maven/Gradle integration
  • πŸ”§ LSP & DAP - Language servers and debugging for multiple languages
  • 🎨 Beautiful UI - Carefully selected themes and UI enhancements
  • ⚑ Performance - Optimized startup times and memory usage
  • πŸ“š Learning Friendly - Comprehensive keymaps guide included

πŸ“‹ What's Included

🎯 Core Configuration

  • LazyVim Base - Modern Neovim distribution with batteries included
  • 50+ Plugins - Curated selection for productivity and development
  • Multi-Language Support - Java, TypeScript, Python, Lua, and more
  • Custom Keymaps - Intuitive shortcuts with comprehensive learning guide

β˜• Java Development Suite

  • JDTLS Integration - Full Java language server with Eclipse quality
  • Spring Boot Tools - Dedicated support for Spring Boot development
  • Build Systems - Maven and Gradle integration with one-click execution
  • Testing Framework - LazyVim's built-in testing integration for JUnit
  • Code Actions - LazyVim's LSP-powered refactoring and quick fixes
  • Database Tools - Flyway migration support and database integration

πŸ”§ Development Tools

  • LSP Integration - Intelligent code completion and diagnostics
  • DAP Debugging - Integrated debugging with breakpoints and variable inspection
  • Git Integration - Lazygit, inline blame, and diff viewing
  • Code Formatting - Prettier integration with automatic formatting on save
  • Snippet Support - Code snippets for faster development

πŸš€ Installation

πŸ“‹ System Requirements

Installation Commands

Ubuntu/Debian:

# Required
sudo apt update
sudo apt install neovim git stow

macOS (Homebrew):

# Required
brew install neovim git stow

Arch Linux:

# Required
sudo pacman -S neovim git stow

πŸ› οΈ Quick Install

# Clone repository (you can choose any directory)
git clone https://github.com/Patrickbpds/my-dotfiles.git ~/.dotfiles
cd ~/.dotfiles

# Alternative: clone to current directory
# git clone https://github.com/Patrickbpds/my-dotfiles.git .
# cd my-dotfiles

# Backup existing config (recommended)
mkdir -p ~/.config-backup
cp -r ~/.config/nvim ~/.config-backup/ 2>/dev/null || true

# Install configuration
stow -v -R -t ~/.config nvim

# Install plugins (first run will take longer)
nvim --headless -c 'Lazy sync' +qa

πŸ“¦ Manual Installation (Alternative)

If you prefer not to use GNU Stow:

# Clone and copy files
git clone https://github.com/Patrickbpds/my-dotfiles.git ~/.dotfiles
cp -r ~/.dotfiles/nvim ~/.config/

# Install plugins
nvim
# Run :Lazy sync inside Neovim

🎯 First Run

# Open Neovim
nvim

# Install LSP servers (inside Neovim)
:MasonInstall java-language-server jdtls typescript-language-server

# Verify installation
:checkhealth
:Lazy sync

⚑ Key Features

πŸš€ Performance & UX

  • ⚑ Fast Startup - Optimized lazy loading keeps startup under 100ms
  • 🎨 Beautiful UI - Carefully crafted themes and modern interface
  • πŸ“± Responsive - Works seamlessly on different screen sizes
  • πŸ”„ Auto Updates - Plugins update automatically in background

πŸ’» Development Experience

LSP Integration

  • βœ… Multi-language Support - Java, TypeScript, Python, Lua, Go, Rust
  • βœ… Intelligent Completion - Context-aware code suggestions
  • βœ… Real-time Diagnostics - Instant error checking and warnings
  • βœ… Code Actions - Quick fixes and refactoring tools

Java Excellence

  • β˜• JDTLS Server - Full Eclipse-quality Java support with LazyVim integration
  • πŸš€ Spring Boot - Dedicated Spring Boot development tools
  • πŸ”¨ Build Integration - Maven/Gradle with one-click execution
  • πŸ§ͺ Testing - LazyVim's built-in testing framework for seamless JUnit integration
  • βš™οΈ Code Actions - LazyVim's LSP-powered refactoring and code actions
  • πŸ—„οΈ Database Tools - Flyway migrations and database integration

Debugging & Testing

  • πŸ› DAP Integration - Debug directly in Neovim
  • πŸ”΄ Breakpoints - Visual breakpoint management
  • πŸ‘€ Variable Inspection - Watch expressions and variables
  • πŸ§ͺ Test Runner - Integrated testing framework

🎨 UI & Navigation

  • 🌈 Themes - Multiple themes with automatic switching
  • πŸ“Š Status Line - Rich status bar with LSP and Git info
  • πŸ“ File Explorer - Tree-style navigation with Git integration
  • πŸ” Fuzzy Finding - Fast file and content search
  • πŸ“Œ Session Management - Automatic workspace saving

πŸ“š Learning Resources

πŸ“– Complete Keymaps Learning Guide - Interactive guide to master all shortcuts

🎯 Pro Tips:

  • Use <leader>? to see all available keymaps
  • Press <leader> and wait to see WhichKey hints
  • Check :help lazyvim for LazyVim documentation

πŸ”§ Customization

Modifying Configurations

Edit files directly in the stow directories:

# Edit Neovim config
vim nvim/lua/config/options.lua

# Restow to apply changes
stow -R -t ~/.config nvim

Adding New Configurations

# Create new package directory
mkdir -p mypackage/.config/myapp

# Add your config files
cp ~/.config/myapp/config mypackage/.config/myapp/

# Stow the new package
stow mypackage

πŸ“ Project Structure

my-dotfiles/
β”œβ”€β”€ πŸ“ nvim/                        # 🏠 Complete Neovim configuration
β”‚   β”œβ”€β”€ πŸ“„ init.lua                  # πŸš€ Main initialization file
β”‚   β”œβ”€β”€ πŸ“„ lazyvim.json              # βš™οΈ LazyVim configuration
β”‚   β”œβ”€β”€ πŸ“„ lazy-lock.json            # πŸ”’ Plugin lockfile
β”‚   β”œβ”€β”€ πŸ“„ stylua.toml               # πŸ’… Lua formatter config
β”‚   β”œβ”€β”€ πŸ“„ .neoconf.json             # πŸ”§ Neoconf settings
β”‚   β”œβ”€β”€ πŸ“„ .gitignore                # 🚫 Git ignore rules
β”‚   └── πŸ“ lua/
β”‚       β”œβ”€β”€ πŸ“ config/               # βš™οΈ Core configurations
β”‚       β”‚   β”œβ”€β”€ πŸ“„ autocmds.lua      # πŸ€– Auto commands
β”‚       β”‚   β”œβ”€β”€ πŸ“„ keymaps.lua       # ⌨️ Key mappings
β”‚       β”‚   β”œβ”€β”€ πŸ“„ lazy.lua          # πŸ“¦ Plugin manager
β”‚       β”‚   β”œβ”€β”€ πŸ“„ options.lua       # πŸ”§ Neovim options
β”‚       β”‚   └── πŸ“„ lazyvim.json      # βš™οΈ LazyVim config
β”‚       β”œβ”€β”€ πŸ“ lang_servers/         # πŸ—£οΈ Language server configs
β”‚       β”‚   └── πŸ“„ intellij-java-google-style.xml
β”‚       └── πŸ“ plugins/              # πŸ”Œ Plugin configurations
β”‚           β”œβ”€β”€ πŸ“ java/             # β˜• Java-specific plugins
β”‚           β”‚   β”œβ”€β”€ πŸ“„ build-run.lua
β”‚           β”‚   β”œβ”€β”€ πŸ“„ dependency-management.lua
β”‚           β”‚   β”œβ”€β”€ πŸ“„ java.lua
β”‚           β”‚   β”œβ”€β”€ πŸ“„ java-utils.lua
β”‚           β”‚   β”œβ”€β”€ πŸ“„ keymaps-java.lua
β”‚           β”‚   β”œβ”€β”€ πŸ“„ logs.lua
β”‚           β”‚   β”œβ”€β”€ πŸ“„ migrations.lua
β”‚           β”‚   β”œβ”€β”€ πŸ“„ profiles-management.lua
β”‚           β”‚   └── πŸ“ templates/
β”‚           β”‚       β”œβ”€β”€ πŸ“„ crud-files.lua
β”‚           β”‚       β”œβ”€β”€ πŸ“„ java-files.lua
β”‚           β”‚       └── πŸ“„ springboot-files.lua
β”‚           β”œβ”€β”€ πŸ“„ autopairs.lua      # πŸ”„ Auto pairs
β”‚           β”œβ”€β”€ πŸ“„ better-ts-errors.lua # 🚨 Better TS errors
β”‚           β”œβ”€β”€ πŸ“„ cmp.lua            # πŸ’‘ Completion
β”‚           β”œβ”€β”€ πŸ“„ comment.lua        # πŸ’¬ Commenting
β”‚           β”œβ”€β”€ πŸ“„ dap.lua            # πŸ› Debug adapter
β”‚           β”œβ”€β”€ πŸ“„ git.lua            # πŸ™ Git integration
β”‚           β”œβ”€β”€ πŸ“„ grapple.lua        # πŸͺ Fast navigation
β”‚           β”œβ”€β”€ πŸ“„ harpoon.lua        # βš“ File marking
β”‚           β”œβ”€β”€ πŸ“„ lint.lua           # πŸ” Linting
β”‚           β”œβ”€β”€ πŸ“„ lsp.lua            # πŸ—£οΈ Language server
β”‚           β”œβ”€β”€ πŸ“„ lualine.lua        # πŸ“Š Status line
β”‚           β”œβ”€β”€ πŸ“„ neo-tree.lua       # πŸ“ File explorer
β”‚           β”œβ”€β”€ πŸ“„ session.lua        # πŸ’Ύ Session management
β”‚           β”œβ”€β”€ πŸ“„ snippets.lua       # πŸ“ Code snippets
β”‚           β”œβ”€β”€ πŸ“„ theme.lua          # 🎨 Color scheme
β”‚           β”œβ”€β”€ πŸ“„ ui.lua             # πŸ–ΌοΈ UI enhancements
β”‚           β”œβ”€β”€ πŸ“„ wakatime.lua       # ⏱️ Time tracking
β”‚           └── πŸ“„ which-key.lua      # ❓ Key hinting
β”œβ”€β”€ πŸ“„ KEYMAPS_LEARNING.md           # πŸ“š Keymaps learning guide
└── πŸ“„ README.md                     # πŸ“– This documentation

🎯 Key Directories Explained

  • nvim/lua/config/ - Core Neovim settings and LazyVim configuration
  • nvim/lua/plugins/ - All plugin configurations and customizations
  • nvim/lua/plugins/java/ - Java-specific tools and integrations
  • KEYMAPS_LEARNING.md - Interactive guide to learn all keyboard shortcuts

πŸ”„ Management Commands

Useful Stow Commands

# Install/link configurations
stow -t ~/.config nvim

# Remove/unlink configurations
stow -D -t ~/.config nvim

# Reinstall (useful after editing)
stow -R -t ~/.config nvim

# Simulate actions (dry run)
stow -n -t ~/.config nvim

# Verbose output
stow -v -t ~/.config nvim

Maintenance

# Check for broken symlinks
find ~ -xtype l -print

# Update from git
git pull origin main

# Restow after updates
stow -R -t ~/.config nvim

# Clean broken symlinks
find ~ -maxdepth 1 -name ".*" -type l ! -exec test -e {} \; -delete 2>/dev/null || true

πŸ”§ Troubleshooting

🚨 Common Issues & Solutions

LSP Not Working

# Check LSP status
:LspInfo

# Install missing servers
:MasonInstall java-language-server jdtls typescript-language-server

# Restart LSP
:LspRestart

Java Development Issues

# Check JDTLS status
:JdtShowLogs

# Refresh project
:JdtRefresh

# Recompile
:JdtCompile

Plugin Problems

# Sync all plugins
:Lazy sync

# Clear plugin cache
:Lazy clean

# Reinstall all plugins
:Lazy restore

Performance Issues

# Check health
:checkhealth

# Profile startup time
:StartupTime

# Disable heavy plugins temporarily
:LazyExtras

UI/Theme Problems

# Reload theme
:colorscheme <theme-name>

# Check syntax highlighting
:syntax on

# Reload UI
:lua require('lazy').reload('ui')

πŸ” Advanced Debugging

Debug Mode

# Start Neovim in debug mode
NVIM_DEBUG=1 nvim

# Check LazyVim debug info
:Lazy profile

Log Files

# LSP logs
~/.local/state/nvim/lsp.log

# LazyVim logs
~/.local/state/nvim/lazy.log

# Neovim logs
~/.local/state/nvim/log

System Information

# Neovim version and build
nvim --version

# Check dependencies
:checkhealth provider

# Plugin status
:Lazy

πŸ›Ÿ Getting Help

  1. Check the logs - Most issues are logged with detailed error messages
  2. Update everything - Run :Lazy sync and restart Neovim
  3. Minimal config - Test with nvim --clean to isolate issues
  4. Community - Check Neovim Discourse or LazyVim issues

πŸ”„ Recovery Steps

If everything breaks:

# Remove configuration
rm -rf ~/.config/nvim

# Restore backup
cp -r ~/.config-backup/nvim ~/.config/

# Reinstall
stow -R .config

🀝 Contributing

Contributions are welcome! Please feel free to:

  • πŸ› Report Issues - Found a bug? Let me know!
  • πŸ’‘ Suggest Features - Have an idea? Share it!
  • πŸ”§ Submit PRs - Want to contribute code? Awesome!
  • πŸ“– Improve Docs - Help make the documentation better

πŸ™ Acknowledgments

Core Technologies

Community & Inspiration

  • LazyVim Community - For the incredible ecosystem
  • Neovim Community - For pushing the boundaries
  • Dotfile Enthusiasts - For sharing knowledge and inspiration

"The best tools are invisible. They get out of your way and let you focus on what matters - creating amazing software."


πŸ“ž Support


⭐ Star this repo if you find it useful!

About

Modern Neovim optimized for Java and full-stack, with LSP, debugging, and plugins for maximum productivity.

Resources

Stars

Watchers

Forks

Contributors

Languages