Skip to content

Installation

IMPORTANT

To avoid breaking changes, it is recommended to pin the plugin to a specific release when installing.

Requirements

  • The curl library
  • 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_search tool

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.

lua
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()
lua
{
  "olimorris/codecompanion.nvim",
  version = "^18.0.0"
  opts = {},
  dependencies = {
    "nvim-lua/plenary.nvim",
  },
},
lua
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:

lua
-- Lazy.nvim
{
  "olimorris/codecompanion.nvim",
  dependencies = {
    "ravitemer/mcphub.nvim"
  }
}
lua
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:

lua
{
  "MeanderingProgrammer/render-markdown.nvim",
  ft = { "markdown", "codecompanion" }
},
lua
{
  "OXY2DEV/markview.nvim",
  lazy = false,
  opts = {
    preview = {
      filetypes = { "markdown", "codecompanion" },
      ignore_buftypes = {},
    },
  },
},
lua
{
  "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:

lua
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.

Released under the MIT License.