Overview
Contributions to Neovim from Scratch are welcome! This project is maintained by the community, and your help makes it better for everyone.Due to the rapidly evolving Neovim plugin ecosystem, there are occasionally errors in branches (particularly
>= 08-treesitter) caused by plugin updates to names, patterns, and options. Fixing these is a great way to contribute!What to Contribute
Common Areas for Contribution
-
Fix plugin deprecation warnings
- Update deprecated API calls
- Fix outdated patterns and options
- Apply fixes from
masterto other branches
-
Update outdated configurations
- Mason LSP folder structure changes
- nvim-cmp window.documentation updates
- Nerd Fonts v3.0 icon updates
-
Improve documentation
- Clarify setup instructions
- Add troubleshooting tips
- Document common issues
-
Update plugin versions
- Re-pin plugins to stable versions
- Test compatibility with Neovim v0.9+
- Verify all functionality works
Finding Issues
When a plugin updates, instructions can usually be found:- In the plugin’s vimdoc (typically in
doc/) - In the plugin’s README
- By searching through Issues and Pull Requests on the plugin’s GitHub page
Common Issues to Fix
Here are some recurring issues that may need attention:1. Mason LSP Changes
When Mason was introduced, the LSP folder structure changed. Fix: Updatelua/user/lsp/ files to use the new Mason structure.
2. nvim-cmp Deprecation Warning
lua/user/cmp.lua:
3. cmp-nvim-lsp Deprecation Warning
lua/user/lsp/handlers.lua:
4. Nerd Fonts v3.0 Icons
Nerd Fonts v3.0 changed some icon codes. Fix: Update icon definitions in:lua/user/lualine.lualua/user/nvim-tree.lualua/user/gitsigns.lualua/user/alpha.lua
5. Plugin Version Updates
Plugins may need to be pinned to later versions for compatibility with Neovim v0.9+. Fix: Update commit hashes inlua/user/plugins.lua to match stable versions from nvim-basic-ide.
Contribution Workflow
1. Fork the Project
- Navigate to Neovim-from-scratch
- Click Fork
- Uncheck “Copy the master branch only” to get all branches
2. Clone to Your Machine
Clone your forked repository:3. Sync Your Fork
If you created the fork earlier, ensure it’s up-to-date: Option 1: GitHub UI Click the Sync Fork button on your repository page. Option 2: Command Line4. Create a New Branch
Create a branch for your changes:- What you’re fixing
- Which branch it’s for
fix-cmp-deprecation-08-treesitterupdate-mason-lsp-15-lspupdate-nerdfonts-icons-master
5. Make Your Changes
Switch to your new branch and start editing:- Make focused, atomic changes
- Fix one issue at a time
- Follow existing code style
- Test thoroughly
6. Test Your Changes
Testing is crucial:- No errors on startup
-
:checkhealthpasses - Affected plugins work correctly
- Keybindings still function
- LSP features work (if applicable)
- No deprecation warnings
7. Commit Your Changes
Commit with a clear message:fix: update cmp window.documentation to bordered()fix: replace deprecated update_capabilities with default_capabilitieschore: update plugin pins to match nvim-basic-idedocs: clarify Mason installation steps
fix:- Bug fixesfeat:- New featuresdocs:- Documentation changeschore:- Maintenance tasksrefactor:- Code refactoring
8. Push to Your Fork
Push your branch to GitHub:9. Open a Pull Request
- Go to your fork on GitHub
- Click Contribute → Open pull request
- Select your branch from the dropdown
- Fill out the PR description
Fixes #issue-number or Related to #issue-number.
Pull Request Guidelines
What Makes a Good PR
✅ Good:- Fixes a specific issue
- Well-tested changes
- Clear commit messages
- References related issues
- Focused on one problem
- Includes explanation of changes
- Multiple unrelated changes
- Untested changes
- Vague commit messages
- No issue references
- Breaking existing functionality
- Large refactors without discussion
Code Style
Follow the existing code style:- Indentation: 2 spaces (Lua)
- Line length: ~100 characters
- Comments: Use for complex logic
- Naming: snake_case for Lua, kebab-case for files
Testing Requirements
Before submitting:-
Test on a clean install:
-
Run health checks:
-
Test affected functionality:
- Open relevant files
- Use affected features
- Verify no errors
-
Check for warnings:
Getting Help
Where to Ask Questions
- General support: Matrix channels
- Bug reports: GitHub Issues
- Plugin-specific: Check the plugin’s repository
Resources
- Neovim documentation:
:help - Lua guide:
:help lua-guide - LSP documentation:
:help lsp - Plugin docs: Usually in
doc/folder or README
Recognition
Contributors are:- Listed in the repository’s contributor graph
- Acknowledged in release notes for significant contributions
- Helping thousands of Neovim users
After Your PR is Merged
Once your PR is merged:-
Update your fork:
-
Delete your feature branch:
- Celebrate! You’ve made a valuable contribution! 🎉🎊

