Skip to content

olimorris/codecompanion.nvim

Repository files navigation

CodeCompanion.nvim

Powerful AI coding, natively in Neovim

New features are always announced here

πŸ’œ Sponsors

Thank you to the following people:

Bassam DataIvo TobyKTS CodeLuxusUser avatar: Konstantin KellerUser avatar: Carlos FlorΓͺncioUser avatar: Jeff GordonUser avatar: Ryan NeviusUser avatar: Artyom PertsovskyUser avatar: Linfeng LiUser avatar: JAWUser avatar: Bryce NealUser avatar: Breno Cunha Queiroz

✨ Features

  • πŸ’¬ Copilot Chat meets Zed AI, in Neovim
  • πŸ”Œ Support for Anthropic, Copilot, GitHub Models, DeepSeek, Gemini, Ollama, OpenAI, Azure OpenAI, HuggingFace and xAI LLMs (or bring your own!)
  • 🫢 User contributed and supported adapters
  • πŸš€ Inline transformations, code creation and refactoring
  • πŸ€– Variables, Slash Commands, Agents/Tools and Workflows to improve LLM output
  • ✨ Built in prompt library for common tasks like advice on LSP errors and code explanations
  • πŸ—οΈ Create your own custom prompts, Variables and Slash Commands
  • πŸ“š Have multiple chats open at the same time
  • πŸ’ͺ Async execution for fast performance

πŸ“Έ In Action

The Chat Buffer

WelcomeToCodeCompanion.mp4

Using Agents and Tools

AgentsToolsInCodeCompanion.mp4

Agentic Workflows

AgenticWorkflows.mp4

Inline Assistant

InlineAssistant.mp4

πŸ“– Documentation

Please visit the documentation site for information around installation, configuration and usage.

🧰 Troubleshooting

Before raising an issue, there are a number of steps you can take to troubleshoot a problem:

Checkhealth

Run :checkhealth codecompanion and check all dependencies are installed correctly. Also take note of the log file path.

Turn on logging

Update your config and turn debug logging on:

require("codecompanion").setup({
  opts = {
    log_level = "DEBUG", -- or "TRACE"
  }
})

and inspect the log file as per the location from the checkhealth command.

Try with a minimal.lua file

A large proportion of issues which are raised in Neovim plugins are to do with a user's own config. That's why I always ask users to fill in a minimal.lua file when they raise an issue. We can rule out their config being an issue and it allows me to recreate the problem.

For this purpose, I have included a minimal.lua file in the repository for you to test out if you're facing issues. Simply copy the file, edit it and run neovim with nvim --clean -u minimal.lua.

🎁 Contributing

I am open to contributions but they will be implemented at my discretion. Feel free to open up a discussion before embarking on a PR and please read the CONTRIBUTING.md guide.

πŸ‘ Acknowledgements