From 2a3c9a1edeb3b864a9cc98e68af1e4c3fad43cca Mon Sep 17 00:00:00 2001 From: meml0rz Date: Wed, 13 Nov 2024 17:46:28 +0100 Subject: [PATCH] kekl --- modules/nix/nvim/cmp.nix | 72 ++++++++++++++++++++++++++----------- modules/nix/nvim/lsp.nix | 2 ++ modules/nix/nvim/nonels.nix | 1 + modules/nix/nvim/opts.nix | 52 +++++++++++++-------------- 4 files changed, 81 insertions(+), 46 deletions(-) diff --git a/modules/nix/nvim/cmp.nix b/modules/nix/nvim/cmp.nix index 99884a0..ac67885 100644 --- a/modules/nix/nvim/cmp.nix +++ b/modules/nix/nvim/cmp.nix @@ -2,32 +2,72 @@ _: let get_bufnrs.__raw = '' function() - local buf_size_limit = 1024 * 1024 -- 1MB size limit - local bufs = vim.api.nvim_list_bufs() - local valid_bufs = {} - for _, buf in ipairs(bufs) do - if vim.api.nvim_buf_is_loaded(buf) and vim.api.nvim_buf_get_offset(buf, vim.api.nvim_buf_line_count(buf)) < buf_size_limit then - table.insert(valid_bufs, buf) - end + local buf_size_limit = 1024 * 1024 -- 1MB size limit + local bufs = vim.api.nvim_list_bufs() + local valid_bufs = {} + for _, buf in ipairs(bufs) do + if vim.api.nvim_buf_is_loaded(buf) and vim.api.nvim_buf_get_offset(buf, vim.api.nvim_buf_line_count(buf)) < buf_size_limit then + table.insert(valid_bufs, buf) end - return valid_bufs + end + return valid_bufs end ''; in { programs.nixvim.plugins = { + blink-cmp = { + enable = true; + }; cmp = { enable = true; autoEnableSources = true; settings = { + completion = { + keyword_length = 1; + completeopt = [ + "menu" + "menuone" + "noinsert" + "noselect" + ]; + }; + sorting = { + comparators = [ + "require('cmp.config.compare').offset" + "require('cmp.config.compare').exact" + "require('cmp.config.compare').score" + "require('cmp.config.compare').recently_used" + "require('cmp.config.compare').locality" + "require('cmp.config.compare').kind" + "require('cmp.config.compare').length" + "require('cmp.config.compare').order" + ]; + }; mapping = { - "" = "cmp.mapping.scroll_docs(-4)"; - "" = "cmp.mapping.scroll_docs(4)"; + "" = "cmp.mapping.scroll_docs(-4)"; + "" = "cmp.mapping.scroll_docs(4)"; "" = "cmp.mapping.complete()"; "" = "cmp.mapping.abort()"; "" = "cmp.mapping.abort()"; - "" = "cmp.mapping.select_prev_item()"; - "" = "cmp.mapping.select_next_item()"; + "".__raw = '' + cmp.mapping(function(fallback) + if cmp.visible() then + cmp.select_next_item() + else + fallback() + end + end, { "i", "s" }) + ''; + "".__raw = '' + cmp.mapping(function(fallback) + if cmp.visible() then + cmp.select_prev_item() + else + fallback() + end + end, { "i", "s" }) + ''; "" = "cmp.mapping.confirm({ select = false })"; }; @@ -86,14 +126,6 @@ in name = "git"; priority = 250; } - { - name = "calc"; - priority = 150; - } - { - name = "emoji"; - priority = 100; - } ]; }; }; diff --git a/modules/nix/nvim/lsp.nix b/modules/nix/nvim/lsp.nix index 9609e27..53fae00 100644 --- a/modules/nix/nvim/lsp.nix +++ b/modules/nix/nvim/lsp.nix @@ -1,5 +1,7 @@ { programs.nixvim.plugins = { + clangd-extensions.enable = true; + crates-nvim.enable = true; lsp-format = { enable = true; }; diff --git a/modules/nix/nvim/nonels.nix b/modules/nix/nvim/nonels.nix index 2236a67..7fe382f 100644 --- a/modules/nix/nvim/nonels.nix +++ b/modules/nix/nvim/nonels.nix @@ -6,6 +6,7 @@ settings = { updateInInsert = false; }; + sources = { code_actions = { gitsigns.enable = true; diff --git a/modules/nix/nvim/opts.nix b/modules/nix/nvim/opts.nix index e974f2e..b48a6e5 100644 --- a/modules/nix/nvim/opts.nix +++ b/modules/nix/nvim/opts.nix @@ -26,38 +26,38 @@ vim.opt.softtabstop = 4 vim.opt.number = true; vim.cmd [[ - cnoreabbrev W! w! - cnoreabbrev Q! q! - cnoreabbrev Qall! qall! - cnoreabbrev Wq wq - cnoreabbrev Wa wa - cnoreabbrev wQ wq - cnoreabbrev WQ wq - cnoreabbrev W w - cnoreabbrev Q q - cnoreabbrev Qall qall - ]] + cnoreabbrev W! w! + cnoreabbrev Q! q! + cnoreabbrev Qall! qall! + cnoreabbrev Wq wq + cnoreabbrev Wa wa + cnoreabbrev wQ wq + cnoreabbrev WQ wq + cnoreabbrev W w + cnoreabbrev Q q + cnoreabbrev Qall qall + ]] local _border = "rounded" vim.lsp.handlers["textDocument/hover"] = vim.lsp.with( - vim.lsp.handlers.hover, { - border = _border - } - ) + vim.lsp.handlers.hover, { + border = _border + } + ) - vim.lsp.handlers["textDocument/signatureHelp"] = vim.lsp.with( - vim.lsp.handlers.signature_help, { - border = _border - } - ) + vim.lsp.handlers["textDocument/signatureHelp"] = vim.lsp.with( + vim.lsp.handlers.signature_help, { + border = _border + } + ) - vim.diagnostic.config{ - float={border=_border} - }; + vim.diagnostic.config{ + float={border=_border} + }; - require('lspconfig.ui.windows').default_options = { - border = _border - } + require('lspconfig.ui.windows').default_options = { + border = _border + } ''; }; }