Installation
IMPORTANT
To avoid breaking changes, it is recommended to pin the plugin to a specific release when installing.
Requirements
- The
curllibrary - Neovim 0.11.0 or greater
- (Optional) An API key for your chosen LLM
- (Optional) The file command for detecting image mimetype
- (Optional) The ripgrep library for the
grep_searchtool
Installation
The plugin can be installed with the plugin manager of your choice. It is recommended to pin the plugin to a specific release to avoid breaking changes.
vim.pack.add("https://www.github.com/nvim-lua/plenary.nvim")
vim.pack.add({
src = "https://www.github.com/olimorris/codecompanion.nvim",
version = vim.version.range("^18.0.0")
})
-- Somewhere in your config
require("codecompanion").setup(){
"olimorris/codecompanion.nvim",
version = "^18.0.0"
opts = {},
dependencies = {
"nvim-lua/plenary.nvim",
},
},use({
"olimorris/codecompanion.nvim",
tag = "^18.0.0",
config = function()
require("codecompanion").setup()
end,
requires = {
"nvim-lua/plenary.nvim",
}
}),Plenary.nvim note:
As per #377, if you pin your plugins to the latest releases, ensure you set plenary.nvim to follow the master branch
Extensions
CodeCompanion supports extensions that add additional functionality to the plugin. Below is an example which installs and configures mcphub.nvim:
-- Lazy.nvim
{
"olimorris/codecompanion.nvim",
dependencies = {
"ravitemer/mcphub.nvim"
}
}require("codecompanion").setup({
extensions = {
mcphub = {
callback = "mcphub.extensions.codecompanion",
opts = {
make_vars = true,
make_slash_commands = true,
show_result_in_chat = true
}
}
}
})Visit the extensions documentation to learn more about available extensions and how to create your own.
Other Plugins
CodeCompanion integrates with a number of other plugins to make your AI coding experience more enjoyable. Below are some common lazy.nvim configurations for popular plugins:
{
"MeanderingProgrammer/render-markdown.nvim",
ft = { "markdown", "codecompanion" }
},{
"OXY2DEV/markview.nvim",
lazy = false,
opts = {
preview = {
filetypes = { "markdown", "codecompanion" },
ignore_buftypes = {},
},
},
},{
"HakonHarnes/img-clip.nvim",
opts = {
filetypes = {
codecompanion = {
prompt_for_file_name = false,
template = "[Image]($FILE_PATH)",
use_absolute_path = true,
},
},
},
},Use render-markdown.nvim or markview.nvim to render the markdown in the chat buffer. Use img-clip.nvim to copy images from your system clipboard into a chat buffer via :PasteImage:
Completion
When in the chat buffer, completion can be used to more easily add variables, slash commands and tools. Out of the box, the plugin supports completion with both nvim-cmp and blink.cmp. For the latter, on version <= 0.10.0, ensure that you've added codecompanion as a source:
sources = {
per_filetype = {
codecompanion = { "codecompanion" },
}
},The plugin also supports native completion and coc.nvim.
Help
If you're having trouble installing the plugin, as a first step, run :checkhealth codecompanion to check that plugin is installed correctly. After that, consider using the minimal.lua file to troubleshoot, running it with nvim --clean -u minimal.lua.