From fec53f5ca0a36d3014b2ccb243a93ce909d3647f Mon Sep 17 00:00:00 2001 From: Daniel Lundin <dln@arity.se> Date: Thu, 9 Jan 2025 14:52:31 +0100 Subject: [PATCH 1/3] nvim: re-enable neocodium. bink-cmp config --- flake.lock | 54 +++++++++++++++++----------------- flake.nix | 1 + home/common/nvim/blink-cmp.lua | 37 ++++++++++++++++++----- home/common/nvim/default.nix | 21 +++++++++++++ home/common/nvim/init.lua | 2 +- 5 files changed, 79 insertions(+), 36 deletions(-) diff --git a/flake.lock b/flake.lock index 4fa76dc..b4a05c0 100644 --- a/flake.lock +++ b/flake.lock @@ -134,11 +134,11 @@ "zig": "zig" }, "locked": { - "lastModified": 1736210320, - "narHash": "sha256-QnDkQ/s1OWmPj1f+7MFNxQiAPJdHbI1Aft7yM5I+8gQ=", + "lastModified": 1736566108, + "narHash": "sha256-r+FXWU/hfgO3lAHYs9Q03iCShnC42mZd1pnmIIp8Z9k=", "owner": "ghostty-org", "repo": "ghostty", - "rev": "a3837a1e4ee06a183f32d4a622c2cdcd51f73fb8", + "rev": "918ccdba5cc65ccd1fb48a54c71306d869299441", "type": "github" }, "original": { @@ -221,11 +221,11 @@ ] }, "locked": { - "lastModified": 1736204492, - "narHash": "sha256-CoBPRgkUex9Iz6qGSzi/BFVUQjndB0PmME2B6eEyeCs=", + "lastModified": 1736508663, + "narHash": "sha256-ZOaGwa+WnB7Zn3YXimqjmIugAnHePdXCmNu+AHkq808=", "owner": "nix-community", "repo": "home-manager", - "rev": "20665c6efa83d71020c8730f26706258ba5c6b2a", + "rev": "2532b500c3ed2b8940e831039dcec5a5ea093afc", "type": "github" }, "original": { @@ -266,11 +266,11 @@ "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1736233375, - "narHash": "sha256-I6fqKdaoKOVU33SyPv+MuxWRiOs+PXQTO94aCLA3rAc=", + "lastModified": 1736553940, + "narHash": "sha256-xicqHwvq2S/Y36DwcY+xGy6+4jdFT78bclBhwjs4KJY=", "owner": "nix-community", "repo": "neovim-nightly-overlay", - "rev": "721f5f602b876a3ee21be04f68ab3cedf162e7f6", + "rev": "b2237869f288c278b6fd429445d460cb44a0e788", "type": "github" }, "original": { @@ -282,11 +282,11 @@ "neovim-src": { "flake": false, "locked": { - "lastModified": 1736193797, - "narHash": "sha256-5S4RnwKfa5nn/r+8OsMtfgD6TEA5P6cWKti76A0zIMc=", + "lastModified": 1736553525, + "narHash": "sha256-Kfx1r0yVTTa83EdP7Ta5ValnXy4ak3F10hHCymDAU7o=", "owner": "neovim", "repo": "neovim", - "rev": "b6ab294838421afb6932c52dd6e6d35d571e621d", + "rev": "fbe546e25d21f3184814d696c329d23d146bd615", "type": "github" }, "original": { @@ -302,11 +302,11 @@ ] }, "locked": { - "lastModified": 1736047960, - "narHash": "sha256-hutd85FA1jUJhhqBRRJ+u7UHO9oFGD/RVm2x5w8WjVQ=", + "lastModified": 1736440205, + "narHash": "sha256-QJgTI//KEGuEJC6FDxuI9Dq8PewIpnxD2NVx2/OHbfc=", "owner": "nix-community", "repo": "nix-index-database", - "rev": "816a6ae88774ba7e74314830546c29e134e0dffb", + "rev": "a2200b499efa01ca8646173e94cdfcc93188f2b8", "type": "github" }, "original": { @@ -349,11 +349,11 @@ }, "nixpkgs-stable_2": { "locked": { - "lastModified": 1736061677, - "narHash": "sha256-DjkQPnkAfd7eB522PwnkGhOMuT9QVCZspDpJJYyOj60=", + "lastModified": 1736200483, + "narHash": "sha256-JO+lFN2HsCwSLMUWXHeOad6QUxOuwe9UOAF/iSl1J4I=", "owner": "nixos", "repo": "nixpkgs", - "rev": "cbd8ec4de4469333c82ff40d057350c30e9f7d36", + "rev": "3f0a8ac25fb674611b98089ca3a5dd6480175751", "type": "github" }, "original": { @@ -381,11 +381,11 @@ }, "nixpkgs-unstable_2": { "locked": { - "lastModified": 1736134818, - "narHash": "sha256-30sOEZ8CFK2nTTMdkhaNrfVlIi3rWTNV0Z5z+NmpFNI=", + "lastModified": 1736420959, + "narHash": "sha256-dMGNa5UwdtowEqQac+Dr0d2tFO/60ckVgdhZU9q2E2o=", "owner": "nixos", "repo": "nixpkgs", - "rev": "3df3c47c19dc90fec35359e89ffb52b34d2b0e94", + "rev": "32af3611f6f05655ca166a0b1f47b57c762b5192", "type": "github" }, "original": { @@ -397,11 +397,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1736042175, - "narHash": "sha256-jdd5UWtLVrNEW8K6u5sy5upNAFmF3S4Y+OIeToqJ1X8=", + "lastModified": 1736320768, + "narHash": "sha256-nIYdTAiKIGnFNugbomgBJR+Xv5F1ZQU+HfaBqJKroC0=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "bf689c40d035239a489de5997a4da5352434632e", + "rev": "4bc9c909d9ac828a039f288cf872d16d38185db8", "type": "github" }, "original": { @@ -413,11 +413,11 @@ }, "nixpkgs_3": { "locked": { - "lastModified": 1736012469, - "narHash": "sha256-/qlNWm/IEVVH7GfgAIyP6EsVZI6zjAx1cV5zNyrs+rI=", + "lastModified": 1736344531, + "narHash": "sha256-8YVQ9ZbSfuUk2bUf2KRj60NRraLPKPS0Q4QFTbc+c2c=", "owner": "nixos", "repo": "nixpkgs", - "rev": "8f3e1f807051e32d8c95cd12b9b421623850a34d", + "rev": "bffc22eb12172e6db3c5dde9e3e5628f8e3e7912", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index 1bc8a36..35ccf56 100644 --- a/flake.nix +++ b/flake.nix @@ -70,6 +70,7 @@ packages = with pkgs; [ just nh + nil nixd nixfmt-rfc-style ]; diff --git a/home/common/nvim/blink-cmp.lua b/home/common/nvim/blink-cmp.lua index b59fe58..26531e4 100644 --- a/home/common/nvim/blink-cmp.lua +++ b/home/common/nvim/blink-cmp.lua @@ -1,9 +1,10 @@ require 'blink-cmp'.setup({ keymap = { preset = 'enter', - -- preset = 'super-tab', - ["<PageDown>"] = { "scroll_documentation_down" }, - ["<PageUp>"] = { "scroll_documentation_up" }, + ['<Tab>'] = { 'select_next', 'fallback' }, + ['<S-Tab>'] = { 'select_prev', 'fallback' }, + ['<PageDown>'] = { 'scroll_documentation_down', 'fallback' }, + ['<PageUp>'] = { 'scroll_documentation_up', 'fallback' }, }, completion = { accept = { @@ -16,15 +17,35 @@ require 'blink-cmp'.setup({ window = { border = 'rounded', }, }, - ghost_text = { enabled = true }, + ghost_text = { enabled = false }, list = { - selection = { preselect = false, auto_insert = false }, + selection = { + preselect = false, + auto_insert = false + }, }, menu = { - auto_show = false, - }, + auto_show = true, + direction_priority = { 'n' }, + draw = { + components = { + kind_icon = { + ellipsis = false, + text = function(ctx) + local kind_icon, _, _ = require('mini.icons').get('lsp', ctx.kind) + return kind_icon + end, + -- Optionally, you may also use the highlights from mini.icons + highlight = function(ctx) + local _, hl, _ = require('mini.icons').get('lsp', ctx.kind) + return hl + end, + } + } + } + } }, fuzzy = { @@ -39,7 +60,7 @@ require 'blink-cmp'.setup({ }, sources = { - default = { 'lsp', 'codeium', 'buffer' }, + default = { 'lsp', 'codeium' }, cmdline = {}, providers = { codeium = { diff --git a/home/common/nvim/default.nix b/home/common/nvim/default.nix index 4312729..7056678 100644 --- a/home/common/nvim/default.nix +++ b/home/common/nvim/default.nix @@ -124,6 +124,27 @@ in ''; } + { + plugin = pkgs.vimUtils.buildVimPlugin { + name = "neocodeium"; + src = pkgs.fetchFromGitHub { + owner = "monkoose"; + repo = "neocodeium"; + rev = "4da81528468b33585c411f31eb390dce573ccb14"; # v1.8.0 + hash = "sha256-1n9nNqBNwNDSzbAkm8eB4HZLNy5HmMg25jPwQAnW5OU="; + }; + doCheck = false; + }; + type = "lua"; + config = '' + local neocodeium =require('neocodeium') + neocodeium.setup() + vim.keymap.set("i", "<C-j>", neocodeium.accept, { remap = true }) + vim.keymap.set("i", "<A-f>", neocodeium.accept, { remap = true }) + vim.keymap.set("i", "<C-h>", neocodeium.cycle_or_complete, { remap = true }) + ''; + } + { plugin = pkgs.vimUtils.buildVimPlugin { name = "diagflow"; diff --git a/home/common/nvim/init.lua b/home/common/nvim/init.lua index 8682273..4487604 100644 --- a/home/common/nvim/init.lua +++ b/home/common/nvim/init.lua @@ -65,7 +65,7 @@ vim.o.showcmd = false vim.o.showmode = false vim.o.smoothscroll = true vim.o.splitkeep = "screen" -vim.o.timeoutlen = 10 +vim.o.timeoutlen = 1 vim.o.timeout = true vim.o.updatetime = 50 From cea9b407c86945c2112f55621433f91dadcc47a1 Mon Sep 17 00:00:00 2001 From: Daniel Lundin <dln@arity.se> Date: Sat, 11 Jan 2025 23:08:35 +0100 Subject: [PATCH 2/3] nvim: ruler format tweaks --- home/common/nvim/init.lua | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/home/common/nvim/init.lua b/home/common/nvim/init.lua index 4487604..03ae7d7 100644 --- a/home/common/nvim/init.lua +++ b/home/common/nvim/init.lua @@ -19,12 +19,31 @@ function GetIndicators() local counts = vim.diagnostic.count(bufnr) local errors = counts[vim.diagnostic.severity.ERROR] or 0 local warnings = counts[vim.diagnostic.severity.WARN] or 0 - local warn_string = warnings > 0 and "%#DiagnosticWarn# " .. warnings .. " " or " " - local error_string = errors > 0 and "%#DiagnosticError# " .. errors .. " " or " " + local warn_string = warnings > 0 and "%#DiagnosticWarn# " .. warnings .. " " or "" + local error_string = errors > 0 and "%#DiagnosticError# " .. errors .. " " or "" return warn_string .. error_string end -vim.opt.rulerformat = "%40(%=%{%v:lua.GetIndicators()%}%#Label#│ %t %)" +function CondensedPath() + local path = vim.fn.expand("%:p") + -- path = vim.fn.fnamemodify(path, ':p') + local home = os.getenv("HOME") + if home then + path = vim.fn.substitute(path, '^' .. home, '~', '') + end + + local segments = vim.fn.split(path, '/') + if #segments <= 3 then + return path + end + + local early_path = table.concat(vim.list_slice(segments, 1, #segments - 2), '/') + local late_path = table.concat(vim.list_slice(segments, #segments - 1), '/') + + return vim.fn.pathshorten(early_path) .. '/' .. late_path +end + +vim.opt.rulerformat = "%50(%=%{%v:lua.GetIndicators()%}%#Label#%#MsgArea#| %{%v:lua.CondensedPath()%}%)" -- Search vim.opt.ignorecase = true From 2cd4b5c52a5538f8a966e8d2b5d6e3770cefeb73 Mon Sep 17 00:00:00 2001 From: Daniel Lundin <dln@arity.se> Date: Sat, 11 Jan 2025 23:08:35 +0100 Subject: [PATCH 3/3] nvim: picker + cmp tweaks --- home/common/nvim/blink-cmp.lua | 1 + home/common/nvim/dieter/lua/dieter/init.lua | 10 ++++++---- home/common/nvim/init.lua | 5 ++--- home/common/nvim/mini.lua | 5 +++-- 4 files changed, 12 insertions(+), 9 deletions(-) diff --git a/home/common/nvim/blink-cmp.lua b/home/common/nvim/blink-cmp.lua index 26531e4..f635cba 100644 --- a/home/common/nvim/blink-cmp.lua +++ b/home/common/nvim/blink-cmp.lua @@ -28,6 +28,7 @@ require 'blink-cmp'.setup({ menu = { auto_show = true, + border = 'rounded', direction_priority = { 'n' }, draw = { components = { diff --git a/home/common/nvim/dieter/lua/dieter/init.lua b/home/common/nvim/dieter/lua/dieter/init.lua index 7a7d3a2..24a3677 100644 --- a/home/common/nvim/dieter/lua/dieter/init.lua +++ b/home/common/nvim/dieter/lua/dieter/init.lua @@ -34,7 +34,6 @@ local colors = { selection = hsl(270, 75, 92), highlight_subtle = hsl(0, 0, 94), highlight_intense = hsl(42, 100, 30), - }, dark = { @@ -46,7 +45,7 @@ local colors = { dimmed = hsl(212, 19, 25), -- dimmed_subtle = hsl(212, 19, 70), - dimmed_subtle = hsl(212, 5, 65), + dimmed_subtle = hsl(212, 19, 50), highlight_subtle = hsl(212, 27, 11), highlight_intense = hsl(58, 100, 60), @@ -112,6 +111,8 @@ local setupGroups = function(c) Special = { link = "NormalNC" }, Type = { link = "NormalNC" }, + MsgArea = { fg = c.dimmed_subtle }, + String = { fg = c.string }, Visual = { bg = c.selection }, @@ -176,8 +177,8 @@ local setupGroups = function(c) InclineNormalNC = { bg = c.background }, WinSeparator = { bg = c.dialog_bg, fg = c.dialog_fg }, - NormalFloat = { bg = c.doc_bg, fg = c.doc_fg }, - FloatBorder = { fg = c.doc_fg }, + NormalFloat = { bg = c.background, fg = c.foreground }, + FloatBorder = { fg = c.foreground }, FloatTitle = { fg = c.doc_fg, bold = true }, Title = { fg = c.foreground, bold = true }, @@ -193,6 +194,7 @@ local setupGroups = function(c) MiniClueDescGroup = { bg = c.background, fg = c.foreground, italic = true }, MiniClueDescSingle = { bg = c.background, fg = c.foreground }, MiniClueSeparator = { link = "MiniClueBorder" }, + MiniClueSeparator = { link = "MiniClueBorder" }, MiniCursorWord = { underdotted = true, bold = true, sp = c.diagnostic_hint }, diff --git a/home/common/nvim/init.lua b/home/common/nvim/init.lua index 03ae7d7..9534e5a 100644 --- a/home/common/nvim/init.lua +++ b/home/common/nvim/init.lua @@ -84,9 +84,8 @@ vim.o.showcmd = false vim.o.showmode = false vim.o.smoothscroll = true vim.o.splitkeep = "screen" -vim.o.timeoutlen = 1 -vim.o.timeout = true -vim.o.updatetime = 50 +vim.o.timeout = false +vim.o.updatetime = 250 -- Use rg vim.o.grepprg = [[rg --glob "!.jj" --glob "!.git" --no-heading --vimgrep --follow $*]] diff --git a/home/common/nvim/mini.lua b/home/common/nvim/mini.lua index 297c1c6..f769f93 100644 --- a/home/common/nvim/mini.lua +++ b/home/common/nvim/mini.lua @@ -49,15 +49,16 @@ local picker_win_config = function() height = height, width = width, row = 2, - col = math.floor((vim.o.columns - width) / 2), + col = 5, } end require('mini.pick').setup({ mappings = { move_down = '<tab>', + move_up = '<S-tab>', toggle_info = '<C-k>', - toggle_preview = '<C-p>', + toggle_preview = 'p', }, options = { use_cache = true }, window = {