From 44b84c849d5a68275b9d2cbc3b5e6a654611c5da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Moritz=20B=C3=B6hme?= Date: Mon, 27 Feb 2023 23:02:37 +0100 Subject: [PATCH 1/5] nvim: add unstable version of copilot lua --- flake.lock | 17 +++++++++++++++++ flake.nix | 5 +++++ modules/programs/nvim/default.nix | 20 -------------------- overlays/default.nix | 30 +++++++++++++++++++++++++++++- 4 files changed, 51 insertions(+), 21 deletions(-) diff --git a/flake.lock b/flake.lock index d2414ef..18b52d9 100644 --- a/flake.lock +++ b/flake.lock @@ -82,6 +82,22 @@ "type": "github" } }, + "copilot-lua": { + "flake": false, + "locked": { + "lastModified": 1677479736, + "narHash": "sha256-n/SCrzzzL5WUHJk0sCXbgGusk/dQuy8DI9Pqdh+lVeQ=", + "owner": "zbirenbaum", + "repo": "copilot.lua", + "rev": "b41d4c9c7d4f5e0272bcf94061b88e244904c56f", + "type": "github" + }, + "original": { + "owner": "zbirenbaum", + "repo": "copilot.lua", + "type": "github" + } + }, "crane": { "inputs": { "flake-compat": [ @@ -813,6 +829,7 @@ "arkenfox-userjs": "arkenfox-userjs", "asus-touchpad-numpad-driver": "asus-touchpad-numpad-driver", "attic": "attic", + "copilot-lua": "copilot-lua", "emacs": "emacs", "flake-utils": "flake-utils_3", "forgit-git": "forgit-git", diff --git a/flake.nix b/flake.nix index 28c83f1..6a8b7d5 100644 --- a/flake.nix +++ b/flake.nix @@ -83,6 +83,11 @@ inputs.nixpkgs-stable.follows = "stable"; inputs.flake-utils.follows = "flake-utils"; }; + + copilot-lua = { + url = "github:zbirenbaum/copilot.lua"; + flake = false; + }; }; outputs = diff --git a/modules/programs/nvim/default.nix b/modules/programs/nvim/default.nix index 1d29b71..e7888e4 100644 --- a/modules/programs/nvim/default.nix +++ b/modules/programs/nvim/default.nix @@ -8,26 +8,6 @@ with lib; let cfg = config.my.programs.vim; - - mkDate = longDate: (lib.concatStringsSep "-" [ - (builtins.substring 0 4 longDate) - (builtins.substring 4 2 longDate) - (builtins.substring 6 2 longDate) - ]); - - mkVersionInput = input: mkDate (input.lastModifiedDate or "19700101") + "_" + (input.shortRev or "dirty"); - - nvim-treesitter-textsubjects = pkgs.vimUtils.buildVimPluginFrom2Nix { - pname = "nvim-treesitter-textsubjects"; - version = mkVersionInput inputs.nvim-treesitter-textsubjects; - src = inputs.nvim-treesitter-textsubjects; - }; - - smartcolumn-nvim = pkgs.vimUtils.buildVimPluginFrom2Nix { - pname = "smartcolumn-nvim"; - version = mkVersionInput inputs.smartcolumn-nvim; - src = inputs.smartcolumn-nvim; - }; in { options.my.programs.vim = { diff --git a/overlays/default.nix b/overlays/default.nix index ae2256c..960d029 100644 --- a/overlays/default.nix +++ b/overlays/default.nix @@ -1,4 +1,13 @@ -{ inputs }: final: prev: { +{ inputs }: final: prev: +let + mkDate = longDate: (prev.lib.concatStringsSep "-" [ + (builtins.substring 0 4 longDate) + (builtins.substring 4 2 longDate) + (builtins.substring 6 2 longDate) + ]); + mkVersionInput = input: "unstable" + mkDate (input.lastModifiedDate or "19700101") + "_" + (input.shortRev or "dirty"); +in +{ agenix = inputs.agenix.packages.${prev.system}.default; attic = inputs.attic.packages.${prev.system}.default; hyprpaper = inputs.hyprpaper.packages.${prev.system}.default; @@ -23,6 +32,25 @@ mesonFlags = old.mesonFlags or [ ] ++ [ "-Dexperimental=true" ]; }); + vimPlugins = prev.vimPlugins // { + nvim-treesitter-textsubjects = prev.vimUtils.buildVimPluginFrom2Nix { + pname = "nvim-treesitter-textsubjects"; + version = mkVersionInput inputs.nvim-treesitter-textsubjects; + src = inputs.nvim-treesitter-textsubjects; + }; + + smartcolumn-nvim = prev.vimUtils.buildVimPluginFrom2Nix { + pname = "smartcolumn-nvim"; + version = mkVersionInput inputs.smartcolumn-nvim; + src = inputs.smartcolumn-nvim; + }; + + copilot-lua = prev.vimPlugins.copilot-lua.overrideAttrs (old: { + version = mkVersionInput inputs.copilot-lua; + src = inputs.copilot-lua; + }); + }; + master = import inputs.master { inherit (prev) system; config.allowUnfree = true; From 38f175b845321d915a872fa8ee1da712f6e14862 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Moritz=20B=C3=B6hme?= Date: Mon, 27 Feb 2023 23:03:17 +0100 Subject: [PATCH 2/5] nvim: disable copilot lua on startup --- modules/programs/nvim/init.lua | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/modules/programs/nvim/init.lua b/modules/programs/nvim/init.lua index 078cbd2..fb68663 100644 --- a/modules/programs/nvim/init.lua +++ b/modules/programs/nvim/init.lua @@ -434,6 +434,10 @@ require("copilot").setup({ suggestion = { enabled = false }, panel = { enabled = false }, }) +vim.api.nvim_create_autocmd("VimEnter", { + desc = "Disable Copilot by default on startup", + command = "Copilot disable", +}) require("copilot_cmp").setup() local orgmode = require("orgmode") From 55ccb1d06c3c95d64e418b309038a1203b032c33 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Moritz=20B=C3=B6hme?= Date: Mon, 27 Feb 2023 23:04:23 +0100 Subject: [PATCH 3/5] nvim: add ruff lsp --- modules/programs/nvim/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/programs/nvim/init.lua b/modules/programs/nvim/init.lua index fb68663..042b6aa 100644 --- a/modules/programs/nvim/init.lua +++ b/modules/programs/nvim/init.lua @@ -323,7 +323,7 @@ local function lspconfig_setup(lsp, options) lspconfig[lsp].setup(final_options) end -local servers = { "nil_ls", "pylsp", "rust_analyzer" } +local servers = { "nil_ls", "pylsp", "rust_analyzer", "ruff_lsp" } for _, lsp in ipairs(servers) do lspconfig_setup(lsp, {}) end From f9109b6646510fed0ede3a03681c6678efc0f585 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Moritz=20B=C3=B6hme?= Date: Mon, 27 Feb 2023 23:48:21 +0100 Subject: [PATCH 4/5] nvim: add lspsage --- modules/programs/nvim/default.nix | 1 + modules/programs/nvim/init.lua | 22 ++++++++++++++-------- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/modules/programs/nvim/default.nix b/modules/programs/nvim/default.nix index 1d29b71..3ec5a1c 100644 --- a/modules/programs/nvim/default.nix +++ b/modules/programs/nvim/default.nix @@ -72,6 +72,7 @@ in gitsigns-nvim lsp_lines-nvim lspkind-nvim + lspsaga-nvim-original lualine-lsp-progress lualine-nvim luasnip diff --git a/modules/programs/nvim/init.lua b/modules/programs/nvim/init.lua index 078cbd2..de5e1cf 100644 --- a/modules/programs/nvim/init.lua +++ b/modules/programs/nvim/init.lua @@ -259,18 +259,24 @@ vim.diagnostic.config({ -- The nvim-cmp almost supports LSP's capabilities so You should advertise it to LSP servers.. local capabilities = require("cmp_nvim_lsp").default_capabilities() +require("lspsaga").setup({ + symbol_in_winbar = { + enable = false, + }, +}) + local lspconfig = require("lspconfig") local on_attach_def = function(_, bufnr) wk.register({ - K = { vim.lsp.buf.hover, "show info" }, + K = { "Lspsaga hover_doc ++quiet", "show info" }, [""] = { l = { name = "lsp", - d = { vim.diagnostic.open_float, "open diagnostic window" }, - n = { vim.diagnostic.goto_next, "next error" }, - p = { vim.diagnostic.goto_prev, "prev error" }, - c = { vim.lsp.buf.code_action, "code action" }, - r = { vim.lsp.buf.rename, "rename" }, + d = { "Lspsaga show_cursor_diagnostics", "open diagnostic window" }, + n = { "Lspsaga diagnostic_jump_next", "next error" }, + p = { "Lspsaga diagnostic_jump_prev", "prev error" }, + c = { "Lspsaga code_action", "code action" }, + r = { "Lspsaga rename", "rename" }, f = { function() vim.lsp.buf.format({ async = true }) @@ -298,10 +304,10 @@ local on_attach_def = function(_, bufnr) g = { name = "goto", r = { vim.lsp.buf.references, "references" }, - d = { vim.lsp.buf.definition, "definition" }, + d = { "Lspsaga peek_definition", "definition" }, D = { vim.lsp.buf.declaration, "declaration" }, i = { vim.lsp.buf.implementation, "implementation" }, - t = { vim.lsp.buf.type_definition, "type defininition" }, + t = { "Lspsaga peek_type_definition", "type defininition" }, }, }, { buffer = bufnr, silent = true }) end From 17085b4a1b557ae12bdc9c1fb63cc0ff46c4d1ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Moritz=20B=C3=B6hme?= Date: Mon, 27 Feb 2023 23:53:35 +0100 Subject: [PATCH 5/5] nvim: use unstable lspsaga --- flake.lock | 17 +++++++++++++++++ flake.nix | 15 ++++++++++----- modules/programs/nvim/init.lua | 5 ++--- overlays/default.nix | 5 +++++ 4 files changed, 34 insertions(+), 8 deletions(-) diff --git a/flake.lock b/flake.lock index 18b52d9..ed44f3c 100644 --- a/flake.lock +++ b/flake.lock @@ -512,6 +512,22 @@ "type": "github" } }, + "lspsaga-nvim": { + "flake": false, + "locked": { + "lastModified": 1677497543, + "narHash": "sha256-xFba/hXqc0qyJH9Hd9XtXteXIqjJnIgYIy8Y5l9QPQQ=", + "owner": "glepnir", + "repo": "lspsaga.nvim", + "rev": "291629b704ba8fdd0134ef4204fb118050bca363", + "type": "github" + }, + "original": { + "owner": "glepnir", + "repo": "lspsaga.nvim", + "type": "github" + } + }, "master": { "locked": { "lastModified": 1677259386, @@ -838,6 +854,7 @@ "hypr-contrib": "hypr-contrib", "hyprland": "hyprland", "hyprpaper": "hyprpaper", + "lspsaga-nvim": "lspsaga-nvim", "master": "master", "neovim": "neovim", "nil": "nil", diff --git a/flake.nix b/flake.nix index 6a8b7d5..e6be918 100644 --- a/flake.nix +++ b/flake.nix @@ -77,17 +77,22 @@ flake = false; }; + copilot-lua = { + url = "github:zbirenbaum/copilot.lua"; + flake = false; + }; + + lspsaga-nvim = { + url = "github:glepnir/lspsaga.nvim"; + flake = false; + }; + attic = { url = "github:zhaofengli/attic"; inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs-stable.follows = "stable"; inputs.flake-utils.follows = "flake-utils"; }; - - copilot-lua = { - url = "github:zbirenbaum/copilot.lua"; - flake = false; - }; }; outputs = diff --git a/modules/programs/nvim/init.lua b/modules/programs/nvim/init.lua index 65153bf..0a47715 100644 --- a/modules/programs/nvim/init.lua +++ b/modules/programs/nvim/init.lua @@ -277,6 +277,7 @@ local on_attach_def = function(_, bufnr) p = { "Lspsaga diagnostic_jump_prev", "prev error" }, c = { "Lspsaga code_action", "code action" }, r = { "Lspsaga rename", "rename" }, + i = { "Lspsaga hover_doc ++keep", "show info (sticky)" }, f = { function() vim.lsp.buf.format({ async = true }) @@ -303,11 +304,9 @@ local on_attach_def = function(_, bufnr) }, g = { name = "goto", - r = { vim.lsp.buf.references, "references" }, d = { "Lspsaga peek_definition", "definition" }, - D = { vim.lsp.buf.declaration, "declaration" }, - i = { vim.lsp.buf.implementation, "implementation" }, t = { "Lspsaga peek_type_definition", "type defininition" }, + h = { "Lspsaga lsp_finder", "lsp finder" }, }, }, { buffer = bufnr, silent = true }) end diff --git a/overlays/default.nix b/overlays/default.nix index 960d029..8d802d2 100644 --- a/overlays/default.nix +++ b/overlays/default.nix @@ -49,6 +49,11 @@ in version = mkVersionInput inputs.copilot-lua; src = inputs.copilot-lua; }); + + lspsaga-nvim-original = prev.vimPlugins.lspsaga-nvim-original.overrideAttrs (old: { + version = mkVersionInput inputs.lspsaga-nvim; + src = inputs.lspsaga-nvim; + }); }; master = import inputs.master {