# LSP

Запрашивает серверы Language Server Protocol (LSP) для получения интеллектуальной информации о коде — определений, ссылок, всплывающих подсказок, символов, реализаций и иерархии вызовов. Точнее текстового поиска, потому что понимает код семантически.

## Когда использовать

- Перейти к определению символа (`goToDefinition`) или найти все ссылки (`findReferences`)
- Прочитать сигнатуры типов / документацию символа (`hover`)
- Перечислить символы в одном файле (`documentSymbol`) или искать их по всему проекту (`workspaceSymbol`)
- Найти реализации интерфейса или абстрактного метода (`goToImplementation`)
- Пройти по иерархии вызовов функции (`prepareCallHierarchy`, `incomingCalls`, `outgoingCalls`)

## Параметры

- `operation` (string, обязательный): одна из перечисленных выше операций.
- `filePath` (string, обязательный): файл, с которым выполняется операция.
- `line` (number, обязательный): номер строки, начиная с 1, как показано в редакторе.
- `character` (number, обязательный): смещение символа, начиная с 1, как показано в редакторе.

## Примечания

- Требуется настроенный LSP-сервер для данного типа файла; иначе вызов возвращает ошибку.
- line и character отсчитываются от 1 (координаты редактора), а не от 0.
- Предпочитайте LSP вместо `Grep`, когда нужна семантическая навигация (настоящее определение/ссылка), а не текстовое совпадение.

## Связанные концепции

- Дополняет `Read` и `Edit` при навигации по коду и его изменении.
