История изменений
Исправление kvpfs_2, (текущая версия) :
Благодарю за ответы. Заюзал встроенный LSP клиент nvim’a + ray-x/lsp_signature.nvim.
Ужас, сколько люди наворачивают какого-то дерьма ненужного, какие-то менеджеры зачем-то, свистелки. Если вдруг кто будет страдать, то примерный алгоритм моих действий:
- клонируем lsp_signature в ~/.config/nvim/pack/nvim/start, никаких менеджеров не надо, nvim найдет там плагин. Пути поиска :echo &runtimepath
- конфиг ~.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
})
- всякие сочетания по вкусу
- дока по встроенному 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.
Ужас, сколько люди наворачивают какого-то дерьма ненужного, какие-то менеджеры зачем-то, свистелки. Если вдруг кто будет страдать, то примерный алгоритм моих действий:
- клонируем lsp_signature в ~/.config/nvim/pack/nvim/start, никаких менеджеров не надо, nvim найдет там плагин. Пути поиска :echo &runtimepath
- конфиг ~.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
})
- всякие сочетания по вкусу
- дока по встроенному 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
может вообще не надо, хз