Feature Request: Support Codebase Semantic Indexing for Neovim
GitHub Copilot in VS Code provides Codebase Semantic Indexing, including the Chat: Build Codebase semantic index command. This is very useful when working with large repositories because Copilot can identify and retrieve relevant files and code across the codebase.
It would be very valuable to have similar functionality available in Neovim through copilot.vim.
Motivation
For a small/local coding task, the current Copilot experience works well. However, for a large codebase, repository-level context becomes increasingly important.
Without semantic codebase indexing, Neovim users may need to manually navigate to relevant files and provide context through multiple interactions. This can make large-codebase tasks less efficient and potentially result in significantly more context/tokens being used.
For example, for a request such as:
"Add a new workflow similar to the existing payment workflow."
Copilot should ideally be able to discover the relevant controllers, services, interfaces, implementations, configuration, and tests across the repository rather than relying primarily on the currently open files.
Proposed feature
Provide a way to build and maintain a semantic index of the current repository, similar to VS Code's:
Chat: Build Codebase semantic index
For example:
:Copilot build-codebase-index
The implementation could ideally reuse existing Copilot/LSP infrastructure if the underlying Copilot service already supports repository indexing.
Useful capabilities would include:
- Build an index for the current repository
- Incrementally update the index as files change
- Search/retrieve relevant code and symbols for Copilot requests
- Support repository-level and cross-file questions
- Use retrieved context when generating or modifying code
- Avoid sending unnecessary repository content to the model
Expected benefit
This would make Copilot in Neovim much more effective for large repositories, especially for:
- Multi-file feature implementation
- Refactoring
- Cross-file code understanding
- Large-scale code generation
- Finding relevant implementations and call paths
- Reducing unnecessary context/token usage
VS Code already provides this capability, so bringing equivalent repository-level semantic indexing to Neovim would significantly improve the large-codebase experience.
Thank you!
Feature Request: Support Codebase Semantic Indexing for Neovim
GitHub Copilot in VS Code provides Codebase Semantic Indexing, including the
Chat: Build Codebase semantic indexcommand. This is very useful when working with large repositories because Copilot can identify and retrieve relevant files and code across the codebase.It would be very valuable to have similar functionality available in Neovim through
copilot.vim.Motivation
For a small/local coding task, the current Copilot experience works well. However, for a large codebase, repository-level context becomes increasingly important.
Without semantic codebase indexing, Neovim users may need to manually navigate to relevant files and provide context through multiple interactions. This can make large-codebase tasks less efficient and potentially result in significantly more context/tokens being used.
For example, for a request such as:
Copilot should ideally be able to discover the relevant controllers, services, interfaces, implementations, configuration, and tests across the repository rather than relying primarily on the currently open files.
Proposed feature
Provide a way to build and maintain a semantic index of the current repository, similar to VS Code's:
For example:
The implementation could ideally reuse existing Copilot/LSP infrastructure if the underlying Copilot service already supports repository indexing.
Useful capabilities would include:
Expected benefit
This would make Copilot in Neovim much more effective for large repositories, especially for:
VS Code already provides this capability, so bringing equivalent repository-level semantic indexing to Neovim would significantly improve the large-codebase experience.
Thank you!