From 7b5241304b50f03bc1e70efce1d725929747f68f Mon Sep 17 00:00:00 2001 From: xinyangli Date: Thu, 22 Aug 2024 11:48:45 +0800 Subject: [PATCH 1/6] lsp: use nvim-metals instead of lsp-config for scala --- config/lsp/default.nix | 1 + config/lsp/lsp.nix | 20 +++++++++++++++---- config/lsp/nvim-metals.nix | 41 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 58 insertions(+), 4 deletions(-) create mode 100644 config/lsp/nvim-metals.nix diff --git a/config/lsp/default.nix b/config/lsp/default.nix index f401b06..5ea86d0 100644 --- a/config/lsp/default.nix +++ b/config/lsp/default.nix @@ -3,5 +3,6 @@ ./lsp.nix ./lsp-format.nix ./lspkind.nix + ./nvim-metals.nix ]; } diff --git a/config/lsp/lsp.nix b/config/lsp/lsp.nix index 4af99ad..1b2061d 100644 --- a/config/lsp/lsp.nix +++ b/config/lsp/lsp.nix @@ -1,4 +1,4 @@ -{ ... }: +{ helpers, ... }: { plugins.lsp = { @@ -16,9 +16,6 @@ nixd = { enable = true; }; - metals = { - enable = true; - }; }; inlayHints = true; keymaps = { @@ -73,4 +70,19 @@ }; }; }; + + keymaps = [ + { + mode = [ "n" ]; + key = "th"; + action = helpers.mkRaw '' + function() + vim.lsp.inlay_hint.enable(not vim.lsp.inlay_hint.is_enabled()) + end + ''; + options = { + desc = "Toggle inlay hints"; + }; + } + ]; } diff --git a/config/lsp/nvim-metals.nix b/config/lsp/nvim-metals.nix new file mode 100644 index 0000000..83b4a70 --- /dev/null +++ b/config/lsp/nvim-metals.nix @@ -0,0 +1,41 @@ +{ pkgs, helpers, ... }: + +{ + extraPlugins = [ + pkgs.vimPlugins.nvim-metals + pkgs.vimPlugins.plenary-nvim + ]; + + extraPackages = [ + pkgs.metals + ]; + + autoGroups.nvim_metals_group = { + clear = true; + }; + + autoCmd = [ + { + event = "FileType"; + group = "nvim_metals_group"; + desc = "Initialize nvim-metals"; + callback = helpers.mkRaw '' + function() + metals_config = require("metals").bare_config() + metals_config.init_options.statusBarProvider = "off" + metals_config.settings = { + showInferredType = true, + showImplicitArguments = false, + showImplicitConversionsAndClasses = false, + metalsBinaryPath = "${pkgs.lib.getExe pkgs.metals}", + useGlobalExecutable = true + } + vim.lsp.inlay_hint.enable(true) + require("metals").initialize_or_attach(metals_config) + end + ''; + } + ]; + + plugins.fidget.enable = true; +} From 7284e679ab9c957d95c58fffcc43d2b908edc645 Mon Sep 17 00:00:00 2001 From: xinyangli Date: Thu, 22 Aug 2024 11:51:15 +0800 Subject: [PATCH 2/6] neo-tree,telescope: update keymap --- config/neo-tree.nix | 1 - config/telescope.nix | 9 +++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/config/neo-tree.nix b/config/neo-tree.nix index 8df05c3..cd3132c 100644 --- a/config/neo-tree.nix +++ b/config/neo-tree.nix @@ -25,7 +25,6 @@ end end ''; - window.mappings."s" = ""; window.mappings."" = ""; }; keymaps = [ diff --git a/config/telescope.nix b/config/telescope.nix index aa08b59..c394c3d 100644 --- a/config/telescope.nix +++ b/config/telescope.nix @@ -17,5 +17,14 @@ desc = "Find files with telescope"; }; } + { + mode = [ "n" "i" ]; + key = ""; + action = helpers.mkRaw '' + function() + require("telescope.builtin").help_tags() + end + ''; + } ]; } From 8add88a98928455635471cbb21f998c5e42d504c Mon Sep 17 00:00:00 2001 From: xinyangli Date: Thu, 22 Aug 2024 11:52:28 +0800 Subject: [PATCH 3/6] project: start up with project.nvim --- config/project.nix | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/config/project.nix b/config/project.nix index b411ec7..3930ecf 100644 --- a/config/project.nix +++ b/config/project.nix @@ -1,6 +1,27 @@ +{ helpers, ... }: + { plugins.project-nvim = { enable = true; enableTelescope = true; + silentChdir = false; + scopeChdir = "tab"; }; + + autoGroups.project_nvim_group = { + clear = true; + }; + + autoCmd = [ + { + event = "VimEnter"; + group = "project_nvim_group"; + desc = "Startup with project.nvim"; + callback = helpers.mkRaw '' + function() + require("telescope").extensions.projects.projects{} + end + ''; + } + ]; } From 97de7e002043d7a14c1eb602705980ecc3c0ad31 Mon Sep 17 00:00:00 2001 From: xinyangli Date: Thu, 22 Aug 2024 11:48:45 +0800 Subject: [PATCH 4/6] lsp: use nvim-metals instead of lsp-config for scala --- config/lsp/default.nix | 1 + config/lsp/lsp.nix | 20 +++++++++++++++---- config/lsp/nvim-metals.nix | 40 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 57 insertions(+), 4 deletions(-) create mode 100644 config/lsp/nvim-metals.nix diff --git a/config/lsp/default.nix b/config/lsp/default.nix index f401b06..5ea86d0 100644 --- a/config/lsp/default.nix +++ b/config/lsp/default.nix @@ -3,5 +3,6 @@ ./lsp.nix ./lsp-format.nix ./lspkind.nix + ./nvim-metals.nix ]; } diff --git a/config/lsp/lsp.nix b/config/lsp/lsp.nix index 4af99ad..1b2061d 100644 --- a/config/lsp/lsp.nix +++ b/config/lsp/lsp.nix @@ -1,4 +1,4 @@ -{ ... }: +{ helpers, ... }: { plugins.lsp = { @@ -16,9 +16,6 @@ nixd = { enable = true; }; - metals = { - enable = true; - }; }; inlayHints = true; keymaps = { @@ -73,4 +70,19 @@ }; }; }; + + keymaps = [ + { + mode = [ "n" ]; + key = "th"; + action = helpers.mkRaw '' + function() + vim.lsp.inlay_hint.enable(not vim.lsp.inlay_hint.is_enabled()) + end + ''; + options = { + desc = "Toggle inlay hints"; + }; + } + ]; } diff --git a/config/lsp/nvim-metals.nix b/config/lsp/nvim-metals.nix new file mode 100644 index 0000000..ddb8077 --- /dev/null +++ b/config/lsp/nvim-metals.nix @@ -0,0 +1,40 @@ +{ pkgs, helpers, ... }: + +{ + extraPlugins = [ + pkgs.vimPlugins.nvim-metals + pkgs.vimPlugins.plenary-nvim + ]; + + extraPackages = [ + pkgs.metals + ]; + + autoGroups.nvim_metals_group = { + clear = true; + }; + + autoCmd = [ + { + event = "FileType"; + group = "nvim_metals_group"; + desc = "Initialize nvim-metals"; + callback = helpers.mkRaw '' + function() + metals_config = require("metals").bare_config() + metals_config.init_options.statusBarProvider = "off" + metals_config.settings = { + showInferredType = true, + showImplicitArguments = false, + showImplicitConversionsAndClasses = false, + metalsBinaryPath = "${pkgs.lib.getExe pkgs.metals}", + useGlobalExecutable = true + } + require("metals").initialize_or_attach(metals_config) + end + ''; + } + ]; + + plugins.fidget.enable = true; +} From e92d3f84a243fd7680c191170e8202ea1200955b Mon Sep 17 00:00:00 2001 From: xinyangli Date: Thu, 22 Aug 2024 11:51:15 +0800 Subject: [PATCH 5/6] neo-tree,telescope: update keymap --- config/neo-tree.nix | 1 - config/telescope.nix | 9 +++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/config/neo-tree.nix b/config/neo-tree.nix index 8df05c3..cd3132c 100644 --- a/config/neo-tree.nix +++ b/config/neo-tree.nix @@ -25,7 +25,6 @@ end end ''; - window.mappings."s" = ""; window.mappings."" = ""; }; keymaps = [ diff --git a/config/telescope.nix b/config/telescope.nix index aa08b59..c394c3d 100644 --- a/config/telescope.nix +++ b/config/telescope.nix @@ -17,5 +17,14 @@ desc = "Find files with telescope"; }; } + { + mode = [ "n" "i" ]; + key = ""; + action = helpers.mkRaw '' + function() + require("telescope.builtin").help_tags() + end + ''; + } ]; } From 81990813485a580d69853d8429e3b8aece7f66a6 Mon Sep 17 00:00:00 2001 From: xinyangli Date: Thu, 22 Aug 2024 11:52:28 +0800 Subject: [PATCH 6/6] project: start up with project.nvim --- config/project.nix | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/config/project.nix b/config/project.nix index b411ec7..3930ecf 100644 --- a/config/project.nix +++ b/config/project.nix @@ -1,6 +1,27 @@ +{ helpers, ... }: + { plugins.project-nvim = { enable = true; enableTelescope = true; + silentChdir = false; + scopeChdir = "tab"; }; + + autoGroups.project_nvim_group = { + clear = true; + }; + + autoCmd = [ + { + event = "VimEnter"; + group = "project_nvim_group"; + desc = "Startup with project.nvim"; + callback = helpers.mkRaw '' + function() + require("telescope").extensions.projects.projects{} + end + ''; + } + ]; }