LINUX.ORG.RU

История изменений

Исправление kvpfs_2, (текущая версия) :

Благодарю за ответы. Заюзал встроенный LSP клиент nvim’a + ray-x/lsp_signature.nvim.

Ужас, сколько люди наворачивают какого-то дерьма ненужного, какие-то менеджеры зачем-то, свистелки. Если вдруг кто будет страдать, то примерный алгоритм моих действий:

  1. клонируем lsp_signature в ~/.config/nvim/pack/nvim/start, никаких менеджеров не надо, nvim найдет там плагин. Пути поиска :echo &runtimepath
  2. конфиг ~.config/nvim/init.lua (корнем проекта у меня здесь считается директория, которая содержит build, в ней ожидается compile_commands.json:
vim.api.nvim_create_autocmd("LspAttach", {
  callback = function(args)
    local bufnr = args.buf
    local client = vim.lsp.get_client_by_id(args.data.client_id)
    if vim.tbl_contains({ 'null-ls' }, client.name) then  -- blacklist lsp
      return
    end
  cfg = {...} -- see https://github.com/ray-x/lsp_signature.nvim
    require("lsp_signature").on_attach(cfg , bufnr)
  end,
})

function my_clangd()
   local search = vim.fs.find({ 'build' }, { upward = true })
   if search[1] == nil then
      return
   end
   config = {
      name = 'clangd',
      cmd = {'clangd'},
      root_dir = vim.fs.dirname(search[1]),
   }
   local client = vim.lsp.start(config)
   vim.lsp.buf_attach_client(0, client)
end

vim.api.nvim_create_autocmd('FileType', {
   pattern = {'c', 'cpp'},
   callback = function(event)
      vim.opt_local.cindent = true
      my_clangd()
   end
})
  1. всякие сочетания по вкусу
  2. дока по встроенному LSP клиенту https://neovim.io/doc/user/lsp.html#lsp

Столько дерьма перелопатил, никто не может четко сказать 1, 2, 3. Вместо этого часовые видики, где авторы обмазывает себя тонной плагинов и вообще не факт, что в итоге будет signature help. Не, это не эталон, конечно, но как начальная точка, которую можно дальше шлифовать, для меня вот, например, это магия if vim.tbl_contains({ 'null-ls' }, client.name) then -- blacklist lsp может вообще не надо, хз

Исходная версия kvpfs_2, :

Благодарю за ответы. Заюзал встроенный LSP клиент nvim’a + ray-x/lsp_signature.nvim.

Ужас, сколько люди наворачивают какого-то дерьма ненужного, какие-то менеджеры зачем-то, свистелки. Если вдруг кто будет страдать, то примерный алгоритм моих действий:

  1. клонируем lsp_signature в ~/.config/nvim/pack/nvim/start, никаких менеджеров не надо, nvim найдет там плагин. Пути поиска :echo &runtimepath
  2. конфиг ~.config/nvim/init.lua (корнем проекта у меня здесь считается директория, которая содержит build, в ней ожидается compile_commands.json:
vim.api.nvim_create_autocmd("LspAttach", {
  callback = function(args)
    local bufnr = args.buf
    local client = vim.lsp.get_client_by_id(args.data.client_id)
    if vim.tbl_contains({ 'null-ls' }, client.name) then  -- blacklist lsp
      return
    end
  cfg = {...} -- see https://github.com/ray-x/lsp_signature.nvim
    require("lsp_signature").on_attach(cfg , bufnr)
  end,
})

function my_clangd()
   local search = vim.fs.find({ 'build' }, { upward = true })
   if search[1] == nil then
      return
   end
   config = {
      name = 'clangd',
      cmd = {'clangd'},
      root_dir = vim.fs.dirname(search[1]),
   }
   local client = vim.lsp.start(config)
   vim.lsp.buf_attach_client(0, client)
end

vim.api.nvim_create_autocmd('FileType', {
   pattern = {'c', 'cpp'},
   callback = function(event)
      vim.opt_local.cindent = true
      my_clangd()
   end
})
  1. всякие сочетания по вкусу
  2. дока по встроенному LSP клиенту https://neovim.io/doc/user/lsp.html#lsp

Столько дерьма перелопатил, никто не может четко сказать 1, 2, 3. Вместо этого часовые видики, где авторы обмазывает себя тонной плагинов и вообще не факт, что в итоге будет signature help. Не это не эталон, конечно, но как начальная точка, которую можно дальше шлифовать, для меня вот, например, это магия if vim.tbl_contains({ 'null-ls' }, client.name) then -- blacklist lsp может вообще не надо, хз