Проблема с cmake-language-server LSP при работе с файлами CMake

Недавно я закончил настройку своей среды neovim, в основном для работы с проектами python/c/cpp, мне даже удалось настроить настройку dap, которая, как мне кажется, «вроде» работает. Моя проблема заключается в том, что когда дело доходит до подсветки синтаксиса/общего использования клиента LSP для CMake, кажется, что ничего не работает, хотя я настроил его точно так же, как и другие LSP, которые я использую в настоящее время.

Моя версия neovim: NVIM v0.8.1 Я установил сервер с помощью плагина Mason. Сервер правильно установлен и отображается в :LspInfo, но никогда не подключается ни к одному созданному мной буферу.

Я создал проект с несколькими папками, включая папки .git и build, которые должны запускаться как корневой каталог, поэтому LSP должен быть прикреплен к файлу CMakelists.txt или файлу Makefile, или, по крайней мере, это то, что я понял в https://github.com/regen100/cmake-language-server описание.

Моя конфигурация LSP такая же, как эта: https://github.com/LunarVim/nvim-basic-ide/blob/master/lua/user/lsp/mason.lua добавление на серверы CMake. Я могу предоставить еще несколько снимков экрана, показывающих, что другие клиенты LSP отлично работают со своими буферами, но CMake активен и не подключается ни к одному файлу CMake, который я создаю.

Проблема с cmake-language-server LSP при работе с файлами CMake

Сервер правильно установлен и находится в пути с плагином Mason:
Проблема с cmake-language-server LSP при работе с файлами CMake

Ребята, у вас есть идеи, почему у меня возникла эта проблема? Излишне говорить, что я полный новичок, когда дело доходит до вещей vim/neovim, и недавно мне удалось собрать довольно приличную конфигурацию, скопировав множество опций, которыми Крис и другие разработчики из lunarvim поделились в своих репозиториях.

Я попытался создать несколько файлов стилей CMake и Make. Плюс добавление дополнительной папки, чтобы корневой каталог был обнаружен, и клиент LSP мог успешно подключиться к буферу.

Спасибо за ваш вклад! Не могли бы вы предоставить снимок экрана меньшего размера с меньшим количеством свободного места для снимка экрана «клиент lsp не подключен»?

user 18.01.2023 20:58

Да, версия вашего первого снимка экрана с меньшим количеством пустого пространства, достигнутая путем создания скриншота уменьшенного размера окна, была бы отличной. Это займет меньше места в сообщении и, вероятно, увеличит размер текста при заполнении пространства, чтобы текст на скриншоте было легче читать.

user 20.01.2023 08:23
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
2
131
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Проблема заключалась в том, что клиент lsp подключается только к файлам, оканчивающимся на .cmake, а не на .txt.

Изменение типа файла решило проблему вложения

Привет, @starball, извини за задержку с ответом. Я создал отчет об ошибке в официальном репозитории lspconfig github.com/neovim/nvim-lspconfig/issues/2406. Единственный ответ, который я получил, заключался в том, чтобы изменить окончание файла на «.cmake». Я полностью согласен с вами в том смысле, что они должны рассматривать синтаксический анализ CMakelists.txt как триггер для клиента. Я постараюсь открыть новый тикет с предложением, что касается скриншота из предыдущего, он вам еще нужен?

Jose 19.01.2023 22:14

Автор инструмента просто рекомендовал переименовать расширение файла с .txt на .cmake. Это даже не годится в качестве обходного пути в некоторых важных случаях. Я прокомментировал там. Надеюсь, автор инструмента понимает, что его инструмент должен измениться для поддержки файлов с именем CMakeLists.txt.

user 19.01.2023 22:24
Ответ принят как подходящий

Благодаря @starball я решил посмотреть, могу ли я каким-то образом изменить требования к типам файлов для cmake client. Похоже, что есть несколько способов добиться этого, для записи первый из них больше подходит для более общего поиска конфигурации neovim по ссылке config.filetypes .

И для моей конкретной настройки я сделал следующее:

  1. Добавьте файл cmake.lua по пути /lua/user/lsp/settings/
  2. Настройте нужный CMake filetypes

Результат в ранее определенном буфере, а также некоторые другие .cmake файлы:

Другие вопросы по теме