Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Latest commit

 

History

History
74 lines (52 loc) · 5.36 KB

File metadata and controls

74 lines (52 loc) · 5.36 KB
title Using LSP servers with {% data variables.copilot.copilot_cli %}
shortTitle LSP servers
allowTitleToDifferFromFilename true
intro LSP servers give {% data variables.copilot.copilot_cli_short %} precise code intelligence, enabling it to navigate definitions, find references, and rename symbols accurately across your project.
versions
feature
copilot
contentType concepts
docsTeamMetrics
copilot-cli
category
Learn about Copilot
Learn about Copilot CLI

Introduction

The Language Server Protocol (LSP) is an open standard used for communication between a code editor and a language server. A language server is a process that provides language-specific features like go-to-definition and renaming a code symbol across your codebase. An "LSP server" is any language server that supports the Language Server Protocol.

{% data variables.copilot.copilot_cli %} can use LSP servers to understand the structure of your code more precisely. By adding and configuring an LSP server for each programming language in your project, you'll give {% data variables.copilot.copilot_cli_short %} a better understanding of your code.

Benefits of LSP servers

  • Accuracy: Results come from the language's own compiler/analyzer, providing an understanding of the structure of your code. This improves {% data variables.product.prodname_copilot_short %}'s precision when it works with your code. For example, when {% data variables.product.prodname_copilot_short %} can use "go to definition" it will find the actual definition, not a text match that looks similar.
  • Token efficiency: Operations like "list all symbols" or "find references" return compact structured results instead of requiring the agent to read entire files into the conversation.
  • Safe refactoring: When you rename a symbol, the LSP server reliably updates every reference across the project.
  • Speed: Language servers index your project in the background, allowing near-instant responses.

What LSP servers allow {% data variables.copilot.copilot_cli_short %} to do

When LSP servers are available, {% data variables.copilot.copilot_cli_short %} uses them automatically. You don't need to explicitly request it. {% data variables.copilot.copilot_cli_short %} will use an LSP server rather than text-based search whenever it can access an LSP server for the programming language you're using.

The following language server operations are supported:

Operation What it does
Go to definition Jumps to where a symbol (function, class, variable) is defined.
Find references Finds every location where a symbol is used.
Hover Retrieves type information and documentation for a symbol.
Rename Renames a symbol across the entire project, updating all references.
Document symbols Lists all symbols defined in a file.
Workspace symbol search Searches for symbols by name across the project.
Go to implementation Finds implementations of an interface or abstract method.
Incoming calls Shows which functions call a given function.
Outgoing calls Shows which functions a given function calls.

{% data variables.product.prodname_copilot_short %} selects the most appropriate LSP operation based on your prompt. For example, if you ask "where is handlePayment defined?", {% data variables.product.prodname_copilot_short %} will use the go-to-definition operation.

How to add an LSP server

For {% data variables.copilot.copilot_cli_short %} to be able to use an LSP server, you must first install the server software on your local machine and then configure it in one of the configuration files that {% data variables.copilot.copilot_cli_short %} reads on startup. See AUTOTITLE.

An LSP server may also be added as part of a CLI plugin that you choose to install. A plugin might include an LSP server if, for example, it's designed to work with an uncommon programming language or a framework-specific file type. LSP servers included as part of a plugin are automatically available when you install the plugin—no additional configuration is needed. If you uninstall the plugin, the LSP server is removed. For more information, see AUTOTITLE.

How LSP servers are loaded

When {% data variables.copilot.copilot_cli %} starts, it loads LSP server configurations from multiple sources with the following priority (highest to lowest):

  1. Project config: .github/lsp.json in the current repository.
  2. Plugin configs: language servers provided by installed plugins.
  3. User config: ~/.copilot/lsp-config.json.

Higher-priority configurations override lower-priority ones with the same server name. This means a project can customize or disable language servers for all contributors.

Once the working directory is trusted, {% data variables.copilot.copilot_cli_short %} automatically starts any LSP servers that are relevant to your project, in the background, so they are ready to respond immediately when needed.

Next steps

Further reading