nvim: blink-cmp 0.5.1 + styling

This commit is contained in:
Daniel Lundin 2024-11-09 10:09:10 +01:00
parent 1eb8637840
commit b433ecef3c
Signed by: dln
SSH key fingerprint: SHA256:dQy1Xj3UiqJYpKR5ggQ2bxgz4jCH8IF+k3AB8o0kmdI
7 changed files with 108 additions and 79 deletions
home/common/nvim

View file

@ -46,23 +46,45 @@
];
plugins = with pkgs.vimPlugins; [
friendly-snippets
go-nvim
rustaceanvim
targets-vim
ts-comments-nvim
{
plugin = blink-cmp;
plugin = nvim-lspconfig;
type = "lua";
config = lib.fileContents ./lsp.lua;
}
{
plugin = pkgs.nixpkgs-unstable.vimPlugins.blink-cmp;
type = "lua";
config = ''
require'blink-cmp'.setup({
keymap = 'super-tab',
keymap = {
preset = 'enter',
["<PageDown>"] = { "scroll_documentation_down" },
["<PageUp>"] = { "scroll_documentation_up" },
},
trigger = {
completion = {
show_in_snippet = true,
},
signature_help = {
enabled = true,
},
},
windows = {
autocomplete = {
border = 'none',
selection = 'preselect',
},
documentation = {
border = 'rounded',
auto_show = false,
auto_show_delay_ms = 800,
},
signature_help = {
border = 'rounded',
@ -88,7 +110,7 @@
src = pkgs.fetchFromGitHub {
owner = "monkoose";
repo = "neocodeium";
rev = "4da81528468b33585c411f31eb390dce573ccb14"; # v1.8.0
rev = "4da81528468b33585c411f31eb390dce573ccb14"; # v1.8.0
hash = "sha256-1n9nNqBNwNDSzbAkm8eB4HZLNy5HmMg25jPwQAnW5OU=";
};
};
@ -141,12 +163,6 @@
type = "lua";
config = lib.fileContents ./mini.lua;
}
{
plugin = nvim-lspconfig;
type = "lua";
config = lib.fileContents ./lsp.lua;
}
];
};
}

View file

@ -156,17 +156,25 @@ local theme = {
InclineNormalNC = { bg = c.background },
WinSeparator = { bg = c.dialog_bg, fg = c.dialog_fg },
NormalFloat = { bg = c.dialog_bg, fg = c.dialog_fg },
NormalFloat = { bg = c.doc_bg, fg = c.doc_fg },
FloatBorder = { fg = c.doc_fg },
FloatTitle = { fg = c.doc_fg, bold = true },
Title = { fg = c.foreground, bold = true },
FloatBorder = { fg = c.dialog_fg },
FloatTitle = { fg = c.dialog_fg, bold = true },
MiniPickNormal = { link = "Normal" },
MiniPickBorder = { link = "MiniPickNormal" },
MiniPickBorderText = { link = "MiniPickBorder" },
MiniPickMatchCurrent = { bg = c.background, fg = c.foreground, reverse = true },
MiniStarterCurrent = { link = "MiniPickMatchCurrent" },
MiniClueNextKey = { bg = c.dialog_bg, fg = c.dialog_fg, bold = true },
MiniClueBorder = { link = "MiniPickNormal" },
MiniClueTitle = { bg = c.background, fg = c.foreground, bold = true },
MiniClueNextKey = { link = "MiniClueTitle" },
MiniClueDescGroup = { bg = c.background, fg = c.foreground, italic = true },
MiniClueSeparator = { link = "NormalFloat" },
MiniClueDescSingle = { bg = c.background, fg = c.foreground },
MiniClueSeparator = { link = "MiniClueBorder" },
MiniStarterCurrent = { link = "MiniPickMatchCurrent" },
BlinkCmpMenu = { bg = c.cmp_bg, fg = c.cmp_fg },
BlinkCmpMenuSelection = { bg = c.cmp_selected_bg, fg = c.cmp_selected_fg, reverse = false },

View file

@ -86,6 +86,7 @@ vim.fn.sign_define(
{ text = "", hl = "DiagnosticSignHint", texthl = "DiagnosticSignHint", culhl = "DiagnosticSignHintLine" }
)
-- Make <Tab> work for snippets
vim.keymap.set({ "i", "s" }, "<Tab>", function()
if vim.snippet.active({ direction = 1 }) then
@ -128,11 +129,20 @@ vim.keymap.set("n", "<Leader>wv", "<C-w>v", opts("Vertical split"))
vim.keymap.set('n', '<tab>', "<cmd>Pick buffers include_current=false<cr>", opts("Buffers"))
vim.keymap.set("n", "zz", "zt", { remap = true })
vim.keymap.set({ "n", "v" }, "<Leader>y", '"+y', opts("Yank to clipboard"))
vim.keymap.set("n", "K", vim.lsp.buf.hover, {})
vim.keymap.set("n", "gD", vim.lsp.buf.declaration, opts("Declaration"))
vim.keymap.set("n", "gd", vim.lsp.buf.definition, opts("Definition"))
vim.keymap.set("n", "gi", vim.lsp.buf.implementation, opts("Implementation"))
vim.keymap.set("n", "gr", vim.lsp.buf.references, opts("Buffer References"))
vim.keymap.set("n", "gt", vim.lsp.buf.type_definition, opts("Type Definition"))
vim.keymap.set({"n", "i"}, "<M-k>", vim.lsp.buf.signature_help, opts("Signature Help"))
vim.keymap.set({ "n", "i" }, "<M-k>", vim.lsp.buf.signature_help, opts("Signature Help"))
vim.keymap.set({ "n", "v" }, "<Leader>aa", vim.lsp.buf.code_action, opts("Code Action"))
vim.keymap.set("n", "K", function()
vim.lsp.buf.hover {
border = 'rounded',
max_height = 24,
max_width = 80,
offset_x = 2,
}
end, {})

View file

@ -1,26 +1,6 @@
vim.api.nvim_create_autocmd("LspAttach", {
group = vim.api.nvim_create_augroup("UserLspConfig", {}),
callback = function(ev)
-- Enable completion triggered by <c-x><c-o>
vim.bo[ev.buf].omnifunc = "v:lua.vim.lsp.omnifunc"
-- Buffer local mappings.
-- See `:help vim.lsp.*` for documentation on any of the below functions
local opts = function(str)
return { buffer = ev.buf, desc = str }
end
local client = vim.lsp.get_client_by_id(ev.data.client_id)
if client.server_capabilities.codeLensProvider then
vim.lsp.codelens.refresh({ bufnr = bufnr })
end
end,
})
local configs = require('lspconfig.configs')
local lspconfig = require("lspconfig")
local capabilities = vim.lsp.protocol.make_client_capabilities()
local servers = {
'gopls',
'nil_ls',
@ -30,39 +10,36 @@ local servers = {
for _, ls in ipairs(servers) do
lspconfig[ls].setup {
capabilities = capabilities,
on_attach = function(_, buf)
vim.api.nvim_set_option_value('omnifunc', 'v:lua.MiniCompletion.completefunc_lsp', {buf = buf})
end,
}
end
lspconfig.nixd.setup({
capabilities = capabilities,
cmd = { "nixd" },
settings = {
nixd = {
nixpkgs = { expr = "import <nixpkgs> { }" },
formatting = { command = { "nixfmt" } },
options = {},
},
},
cmd = { "nixd" },
settings = {
nixd = {
nixpkgs = { expr = "import <nixpkgs> { }" },
formatting = { command = { "nixfmt" } },
options = {},
},
},
})
lspconfig.lua_ls.setup({
capabilities = capabilities,
settings = {
Lua = {
runtime = {
version = "LuaJIT",
path = vim.split(package.path, ";"),
},
diagnostics = { globals = { "vim", "hs" } },
workspace = {
library = {
[vim.fn.expand("$VIMRUNTIME/lua")] = true,
[vim.fn.expand("$VIMRUNTIME/lua/vim/lsp")] = true,
},
},
},
},
settings = {
Lua = {
runtime = {
version = "LuaJIT",
path = vim.split(package.path, ";"),
},
diagnostics = { globals = { "vim", "hs" } },
workspace = {
library = {
[vim.fn.expand("$VIMRUNTIME/lua")] = true,
[vim.fn.expand("$VIMRUNTIME/lua/vim/lsp")] = true,
},
},
},
},
})