modules/lsp: switch to explicit lib calls

This commit is contained in:
NotAShelf 2024-03-12 03:46:29 +03:00
parent dfc7c6737f
commit c488f0490f
No known key found for this signature in database
GPG key ID: 02D1DD3FA08B6B29
33 changed files with 285 additions and 273 deletions

View file

@ -15,10 +15,12 @@
mkBinding = binding: action: "vim.api.nvim_buf_set_keymap(bufnr, 'n', '${binding.value}', '<cmd>lua ${action}<CR>', {noremap=true, silent=true, desc='${binding.description}'})"; mkBinding = binding: action: "vim.api.nvim_buf_set_keymap(bufnr, 'n', '${binding.value}', '<cmd>lua ${action}<CR>', {noremap=true, silent=true, desc='${binding.description}'})";
in { in {
config = mkIf cfg.enable { config = mkIf cfg.enable {
vim.startPlugins = optional usingNvimCmp "cmp-nvim-lsp"; vim = {
startPlugins = optional usingNvimCmp "cmp-nvim-lsp";
vim.autocomplete.sources = {"nvim_lsp" = "[LSP]";}; autocomplete.sources = {"nvim_lsp" = "[LSP]";};
vim.luaConfigRC.lsp-setup = ''
luaConfigRC.lsp-setup = ''
vim.g.formatsave = ${boolToString cfg.formatOnSave}; vim.g.formatsave = ${boolToString cfg.formatOnSave};
local attach_keymaps = function(client, bufnr) local attach_keymaps = function(client, bufnr)
@ -110,4 +112,5 @@ in {
${optionalString usingNvimCmp "capabilities = require('cmp_nvim_lsp').default_capabilities()"} ${optionalString usingNvimCmp "capabilities = require('cmp_nvim_lsp').default_capabilities()"}
''; '';
}; };
};
} }

View file

@ -1,4 +1,4 @@
_: { {
imports = [ imports = [
# nvim lsp support # nvim lsp support
./config.nix ./config.nix

View file

@ -3,20 +3,21 @@
lib, lib,
... ...
}: let }: let
inherit (lib) mkIf nvim; inherit (lib.modules) mkIf;
inherit (lib.nvim.dag) entryAnywhere;
cfg = config.vim.lsp; cfg = config.vim.lsp;
in { in {
config = mkIf (cfg.enable && cfg.lightbulb.enable) { config = mkIf (cfg.enable && cfg.lightbulb.enable) {
vim.startPlugins = ["nvim-lightbulb"]; vim = {
startPlugins = ["nvim-lightbulb"];
vim.configRC.lightbulb = nvim.dag.entryAnywhere '' luaConfigRC.lightbulb = entryAnywhere ''
autocmd CursorHold,CursorHoldI * lua require'nvim-lightbulb'.update_lightbulb() vim.api.nvim_command('autocmd CursorHold,CursorHoldI * lua require\'nvim-lightbulb\'.update_lightbulb()')
'';
vim.luaConfigRC.lightbulb = nvim.dag.entryAnywhere ''
-- Enable trouble diagnostics viewer -- Enable trouble diagnostics viewer
require'nvim-lightbulb'.setup() require'nvim-lightbulb'.setup()
''; '';
}; };
};
} }

View file

@ -1,4 +1,4 @@
_: { {
imports = [ imports = [
./lightbulb.nix ./lightbulb.nix
./config.nix ./config.nix

View file

@ -1,9 +1,5 @@
{ {lib, ...}: let
config, inherit (lib.options) mkEnableOption;
lib,
...
}: let
inherit (lib) mkEnableOption;
in { in {
options.vim.lsp = { options.vim.lsp = {
lightbulb = { lightbulb = {

View file

@ -3,19 +3,22 @@
lib, lib,
... ...
}: let }: let
inherit (lib) mkIf nvim optionalString; inherit (lib.modules) mkIf;
inherit (lib.nvim.dag) entryAnywhere;
inherit (lib.strings) optionalString;
cfg = config.vim.lsp; cfg = config.vim.lsp;
in { in {
config = mkIf (cfg.enable && cfg.lspSignature.enable) { config = mkIf (cfg.enable && cfg.lspSignature.enable) {
vim.startPlugins = [ vim = {
startPlugins = [
"lsp-signature" "lsp-signature"
]; ];
vim.luaConfigRC.lsp-signature = nvim.dag.entryAnywhere '' luaConfigRC.lsp-signature = entryAnywhere ''
-- Enable lsp signature viewer -- Enable lsp signature viewer
require("lsp_signature").setup({ require("lsp_signature").setup({
${optionalString (config.vim.ui.borders.plugins.lsp-signature.enable) '' ${optionalString config.vim.ui.borders.plugins.lsp-signature.enable ''
bind = true, -- This is mandatory, otherwise border config won't get registered. bind = true, -- This is mandatory, otherwise border config won't get registered.
handler_opts = { handler_opts = {
border = "${config.vim.ui.borders.plugins.lsp-signature.style}" border = "${config.vim.ui.borders.plugins.lsp-signature.style}"
@ -24,4 +27,5 @@ in {
}) })
''; '';
}; };
};
} }

View file

@ -1,4 +1,4 @@
_: { {
imports = [ imports = [
./lsp-signature.nix ./lsp-signature.nix
./config.nix ./config.nix

View file

@ -1,13 +1,9 @@
{ {lib, ...}: let
config, inherit (lib.options) mkEnableOption;
lib,
...
}: let
inherit (lib) mkEnableOption;
in { in {
options.vim.lsp = { options.vim.lsp = {
lspSignature = { lspSignature = {
enable = mkEnableOption "lsp signature viewer"; enable = mkEnableOption "lsp signature viewer [lsp-signature]";
}; };
}; };
} }

View file

@ -1,32 +1,35 @@
{ {
pkgs,
config, config,
lib, lib,
... ...
}: let }: let
inherit (lib) mkIf mkMerge nvim optionalString mapAttrs; inherit (lib.modules) mkIf mkMerge;
inherit (lib.strings) optionalString;
inherit (lib.attrsets) mapAttrs;
inherit (lib.nvim.dag) entryAfter;
cfg = config.vim.lsp; cfg = config.vim.lsp;
in { in {
config = mkIf cfg.lspconfig.enable (mkMerge [ config = mkIf cfg.lspconfig.enable (mkMerge [
{ {
vim.lsp.enable = true; vim = {
lsp.enable = true;
vim.startPlugins = ["nvim-lspconfig"]; startPlugins = ["nvim-lspconfig"];
vim.luaConfigRC.lspconfig = nvim.dag.entryAfter ["lsp-setup"] '' luaConfigRC.lspconfig = entryAfter ["lsp-setup"] ''
local lspconfig = require('lspconfig') local lspconfig = require('lspconfig')
${ ${
# TODO: make border style configurable optionalString config.vim.ui.borders.enable ''
optionalString (config.vim.ui.borders.enable) ''
require('lspconfig.ui.windows').default_options.border = '${config.vim.ui.borders.globalStyle}' require('lspconfig.ui.windows').default_options.border = '${config.vim.ui.borders.globalStyle}'
'' ''
} }
''; '';
};
} }
{ {
vim.luaConfigRC = mapAttrs (_: v: (nvim.dag.entryAfter ["lspconfig"] v)) cfg.lspconfig.sources; vim.luaConfigRC = mapAttrs (_: v: (entryAfter ["lspconfig"] v)) cfg.lspconfig.sources;
} }
]); ]);
} }

View file

@ -1,4 +1,4 @@
_: { {
imports = [ imports = [
./config.nix ./config.nix
./lspconfig.nix ./lspconfig.nix

View file

@ -1,17 +1,13 @@
{ {lib, ...}: let
pkgs, inherit (lib.options) mkEnableOption mkOption;
config, inherit (lib.types) attrsOf str;
lib,
...
}: let
inherit (lib) mkEnableOption mkOption types;
in { in {
options.vim.lsp.lspconfig = { options.vim.lsp.lspconfig = {
enable = mkEnableOption "nvim-lspconfig, also enabled automatically"; enable = mkEnableOption "nvim-lspconfig, also enabled automatically";
sources = mkOption { sources = mkOption {
description = "nvim-lspconfig sources"; description = "nvim-lspconfig sources";
type = with types; attrsOf str; type = attrsOf str;
default = {}; default = {};
}; };
}; };

View file

@ -1,16 +1,16 @@
{ {
pkgs,
config, config,
lib, lib,
... ...
}: let }: let
inherit (lib) mkIf nvim; inherit (lib.modules) mkIf;
inherit (lib.nvim.dag) entryAnywhere;
cfg = config.vim.lsp; cfg = config.vim.lsp;
in { in {
config = mkIf (cfg.enable && cfg.lspkind.enable) { config = mkIf (cfg.enable && cfg.lspkind.enable) {
vim.startPlugins = ["lspkind"]; vim.startPlugins = ["lspkind"];
vim.luaConfigRC.lspkind = nvim.dag.entryAnywhere '' vim.luaConfigRC.lspkind = entryAnywhere ''
local lspkind = require'lspkind' local lspkind = require'lspkind'
local lspkind_opts = { local lspkind_opts = {
mode = '${cfg.lspkind.mode}' mode = '${cfg.lspkind.mode}'

View file

@ -1,4 +1,4 @@
_: { {
imports = [ imports = [
./config.nix ./config.nix
./lspkind.nix ./lspkind.nix

View file

@ -1,12 +1,6 @@
{ {lib, ...}: let
pkgs, inherit (lib.options) mkEnableOption mkOption;
config, inherit (lib.types) enum;
lib,
...
}: let
inherit (lib) mkEnableOption mkOption types;
cfg = config.vim.lsp;
in { in {
options.vim.lsp = { options.vim.lsp = {
lspkind = { lspkind = {
@ -14,7 +8,7 @@ in {
mode = mkOption { mode = mkOption {
description = "Defines how annotations are shown"; description = "Defines how annotations are shown";
type = with types; enum ["text" "text_symbol" "symbol_text" "symbol"]; type = enum ["text" "text_symbol" "symbol_text" "symbol"];
default = "symbol_text"; default = "symbol_text";
}; };
}; };

View file

@ -3,13 +3,14 @@
lib, lib,
... ...
}: let }: let
inherit (lib) mkIf nvim; inherit (lib.modules) mkIf;
inherit (lib.nvim.dag) entryAfter;
cfg = config.vim.lsp; cfg = config.vim.lsp;
in { in {
config = mkIf (cfg.enable && cfg.lsplines.enable) { config = mkIf (cfg.enable && cfg.lsplines.enable) {
vim.startPlugins = ["lsp-lines"]; vim.startPlugins = ["lsp-lines"];
vim.luaConfigRC.lsplines = nvim.dag.entryAfter ["lspconfig"] '' vim.luaConfigRC.lsplines = entryAfter ["lspconfig"] ''
require("lsp_lines").setup() require("lsp_lines").setup()
vim.diagnostic.config({ vim.diagnostic.config({

View file

@ -1,4 +1,4 @@
_: { {
imports = [ imports = [
./config.nix ./config.nix
./lsplines.nix ./lsplines.nix

View file

@ -1,9 +1,11 @@
{lib, ...}: let {lib, ...}: let
inherit (lib) mkEnableOption; inherit (lib.options) mkEnableOption;
in { in {
options.vim.lsp = { options.vim.lsp = {
lsplines = { lsplines = {
enable = mkEnableOption "diagnostics using virtual lines on top of the real line of code. [lsp_lines]"; enable = mkEnableOption ''
diagnostics using virtual lines on top of the real line of code. [lsp_lines]
'';
}; };
}; };
} }

View file

@ -3,7 +3,10 @@
lib, lib,
... ...
}: let }: let
inherit (lib) addDescriptionsToMappings mkIf mkSetLuaBinding mkMerge nvim optionalString; inherit (lib.modules) mkIf mkMerge;
inherit (lib.strings) optionalString;
inherit (lib.nvim.dag) entryAnywhere;
inherit (lib.nvim.binds) addDescriptionsToMappings mkSetLuaBinding;
cfg = config.vim.lsp; cfg = config.vim.lsp;
self = import ./lspsaga.nix {inherit lib;}; self = import ./lspsaga.nix {inherit lib;};
@ -12,11 +15,12 @@
mappings = addDescriptionsToMappings cfg.lspsaga.mappings mappingDefinitions; mappings = addDescriptionsToMappings cfg.lspsaga.mappings mappingDefinitions;
in { in {
config = mkIf (cfg.enable && cfg.lspsaga.enable) { config = mkIf (cfg.enable && cfg.lspsaga.enable) {
vim.startPlugins = ["lspsaga"]; vim = {
startPlugins = ["lspsaga"];
vim.maps.visual = mkSetLuaBinding mappings.codeAction "require('lspsaga.codeaction').range_code_action"; maps = {
visual = mkSetLuaBinding mappings.codeAction "require('lspsaga.codeaction').range_code_action";
vim.maps.normal = mkMerge [ normal = mkMerge [
(mkSetLuaBinding mappings.lspFinder "require('lspsaga.provider').lsp_finder") (mkSetLuaBinding mappings.lspFinder "require('lspsaga.provider').lsp_finder")
(mkSetLuaBinding mappings.renderHoveredDoc "require('lspsaga.hover').render_hover_doc") (mkSetLuaBinding mappings.renderHoveredDoc "require('lspsaga.hover').render_hover_doc")
@ -35,15 +39,15 @@ in {
(mkIf (!cfg.nvimCodeActionMenu.enable) (mkSetLuaBinding mappings.codeAction "require('lspsaga.codeaction').code_action")) (mkIf (!cfg.nvimCodeActionMenu.enable) (mkSetLuaBinding mappings.codeAction "require('lspsaga.codeaction').code_action"))
(mkIf (!cfg.lspSignature.enable) (mkSetLuaBinding mappings.signatureHelp "require('lspsaga.signaturehelp').signature_help")) (mkIf (!cfg.lspSignature.enable) (mkSetLuaBinding mappings.signatureHelp "require('lspsaga.signaturehelp').signature_help"))
]; ];
};
vim.luaConfigRC.lspsage = nvim.dag.entryAnywhere '' luaConfigRC.lspsaga = entryAnywhere ''
-- Enable lspsaga require('lspsaga').init_lsp_saga({
local saga = require 'lspsaga' ${optionalString config.vim.ui.borders.plugins.lspsaga.enable ''
saga.init_lsp_saga({
${optionalString (config.vim.ui.borders.plugins.lspsaga.enable) ''
border_style = '${config.vim.ui.borders.plugins.lspsaga.style}', border_style = '${config.vim.ui.borders.plugins.lspsaga.style}',
''} ''}
}) })
''; '';
}; };
};
} }

View file

@ -1,4 +1,4 @@
_: { {
imports = [ imports = [
./lspsaga.nix ./lspsaga.nix
./config.nix ./config.nix

View file

@ -1,5 +1,6 @@
{lib, ...}: let {lib, ...}: let
inherit (lib) mkEnableOption mkMappingOption; inherit (lib.options) mkEnableOption;
inherit (lib.nvim.binds) mkMappingOption;
in { in {
options.vim.lsp.lspsaga = { options.vim.lsp.lspsaga = {
enable = mkEnableOption "LSP Saga"; enable = mkEnableOption "LSP Saga";

View file

@ -1,5 +1,6 @@
{lib, ...}: let {lib, ...}: let
inherit (lib) mkEnableOption mkMappingOption; inherit (lib.options) mkEnableOption;
inherit (lib.nvim.binds) mkMappingOption;
in { in {
options.vim.lsp = { options.vim.lsp = {
enable = mkEnableOption "LSP, also enabled automatically through null-ls and lspconfig options"; enable = mkEnableOption "LSP, also enabled automatically through null-ls and lspconfig options";

View file

@ -1,5 +1,4 @@
{ {
pkgs,
config, config,
lib, lib,
... ...
@ -10,16 +9,18 @@
in { in {
config = mkIf cfg.null-ls.enable (mkMerge [ config = mkIf cfg.null-ls.enable (mkMerge [
{ {
vim.lsp.enable = true; vim = {
vim.startPlugins = ["none-ls"]; lsp.enable = true;
startPlugins = ["none-ls"];
vim.luaConfigRC.null_ls-setup = nvim.dag.entryAnywhere '' luaConfigRC.null_ls-setup = nvim.dag.entryAnywhere ''
local null_ls = require("null-ls") local null_ls = require("null-ls")
local null_helpers = require("null-ls.helpers") local null_helpers = require("null-ls.helpers")
local null_methods = require("null-ls.methods") local null_methods = require("null-ls.methods")
local ls_sources = {} local ls_sources = {}
''; '';
vim.luaConfigRC.null_ls = nvim.dag.entryAfter ["null_ls-setup" "lsp-setup"] ''
luaConfigRC.null_ls = nvim.dag.entryAfter ["null_ls-setup" "lsp-setup"] ''
require('null-ls').setup({ require('null-ls').setup({
debug = false, debug = false,
diagnostics_format = "[#{m}] #{s} (#{c})", diagnostics_format = "[#{m}] #{s} (#{c})",
@ -29,6 +30,7 @@ in {
on_attach = default_on_attach on_attach = default_on_attach
}) })
''; '';
};
} }
{ {
vim.luaConfigRC = mapAttrs (_: v: (nvim.dag.entryBetween ["null_ls"] ["null_ls-setup"] v)) cfg.null-ls.sources; vim.luaConfigRC = mapAttrs (_: v: (nvim.dag.entryBetween ["null_ls"] ["null_ls-setup"] v)) cfg.null-ls.sources;

View file

@ -1,4 +1,4 @@
_: { {
imports = [ imports = [
./config.nix ./config.nix
./null-ls.nix ./null-ls.nix

View file

@ -1,19 +1,13 @@
{ {lib, ...}: let
pkgs, inherit (lib.options) mkEnableOption mkOption;
config, inherit (lib.types) attrsOf str;
lib,
...
}: let
inherit (lib) mkEnableOption mkOption types;
cfg = config.vim.lsp;
in { in {
options.vim.lsp.null-ls = { options.vim.lsp.null-ls = {
enable = mkEnableOption "null-ls, also enabled automatically"; enable = mkEnableOption "null-ls, also enabled automatically";
sources = mkOption { sources = mkOption {
description = "null-ls sources"; description = "null-ls sources";
type = with types; attrsOf str; type = attrsOf str;
default = {}; default = {};
}; };
}; };

View file

@ -3,32 +3,35 @@
lib, lib,
... ...
}: let }: let
inherit (lib) addDescriptionsToMappings mkIf mkSetBinding nvim pushDownDefault; inherit (lib.modules) mkIf;
inherit (lib.nvim.dag) entryAnywhere;
inherit (lib.nvim.binds) mkSetBinding addDescriptionsToMappings pushDownDefault;
cfg = config.vim.lsp; cfg = config.vim.lsp;
self = import ./nvim-code-action-menu.nix {inherit lib;}; self = import ./nvim-code-action-menu.nix {inherit lib;};
mappingDefinitions = self.options.vim.lsp.nvimCodeActionMenu.mappings; mappingDefinitions = self.options.vim.lsp.nvimCodeActionMenu.mappings;
mappings = addDescriptionsToMappings cfg.nvimCodeActionMenu.mappings mappingDefinitions; mappings = addDescriptionsToMappings cfg.nvimCodeActionMenu.mappings mappingDefinitions;
in { in {
config = mkIf (cfg.enable && cfg.nvimCodeActionMenu.enable) { config = mkIf (cfg.enable && cfg.nvimCodeActionMenu.enable) {
vim.startPlugins = ["nvim-code-action-menu"]; vim = {
startPlugins = ["nvim-code-action-menu"];
vim.maps.normal = mkSetBinding mappings.open ":CodeActionMenu<CR>"; maps.normal = mkSetBinding mappings.open ":CodeActionMenu<CR>";
vim.binds.whichKey.register = pushDownDefault { binds.whichKey.register = pushDownDefault {
"<leader>c" = "+CodeAction"; "<leader>c" = "+CodeAction";
}; };
vim.luaConfigRC.code-action-menu = nvim.dag.entryAnywhere '' luaConfigRC.code-action-menu = entryAnywhere ''
-- border configuration -- border configuration
vim.g.code_action_menu_window_border = '${config.vim.ui.borders.plugins.code-action-menu.style}' vim.g.code_action_menu_window_border = '${config.vim.ui.borders.plugins.code-action-menu.style}'
-- show individual sections of the code action menu -- show individual sections of the code action menu
${lib.optionalString (cfg.nvimCodeActionMenu.show.details) "vim.g.code_action_menu_show_details = true"} ${lib.optionalString cfg.nvimCodeActionMenu.show.details "vim.g.code_action_menu_show_details = true"}
${lib.optionalString (cfg.nvimCodeActionMenu.show.diff) "vim.g.code_action_menu_show_diff = true"} ${lib.optionalString cfg.nvimCodeActionMenu.show.diff "vim.g.code_action_menu_show_diff = true"}
${lib.optionalString (cfg.nvimCodeActionMenu.show.actionKind) "vim.g.code_action_menu_show_action_kind = true"} ${lib.optionalString cfg.nvimCodeActionMenu.show.actionKind "vim.g.code_action_menu_show_action_kind = true"}
''; '';
}; };
};
} }

View file

@ -1,4 +1,4 @@
_: { {
imports = [ imports = [
./nvim-code-action-menu.nix ./nvim-code-action-menu.nix
./config.nix ./config.nix

View file

@ -1,5 +1,6 @@
{lib, ...}: let {lib, ...}: let
inherit (lib) mkEnableOption mkMappingOption; inherit (lib.options) mkEnableOption;
inherit (lib.nvim.binds) mkMappingOption;
in { in {
options.vim.lsp = { options.vim.lsp = {
nvimCodeActionMenu = { nvimCodeActionMenu = {

View file

@ -3,8 +3,10 @@
lib, lib,
... ...
}: let }: let
inherit (lib) mkIf nvim addDescriptionsToMappings mkSetBinding mkMerge;
inherit (builtins) toString; inherit (builtins) toString;
inherit (lib.modules) mkIf mkMerge;
inherit (lib.nvim.dag) entryAnywhere;
inherit (lib.nvim.binds) addDescriptionsToMappings mkSetBinding;
cfg = config.vim.lsp.nvim-docs-view; cfg = config.vim.lsp.nvim-docs-view;
self = import ./nvim-docs-view.nix {inherit lib;}; self = import ./nvim-docs-view.nix {inherit lib;};
@ -17,7 +19,7 @@ in {
lsp.enable = true; lsp.enable = true;
startPlugins = ["nvim-docs-view"]; startPlugins = ["nvim-docs-view"];
luaConfigRC.nvim-docs-view = nvim.dag.entryAnywhere '' luaConfigRC.nvim-docs-view = entryAnywhere ''
require("docs-view").setup { require("docs-view").setup {
position = "${cfg.position}", position = "${cfg.position}",
width = ${toString cfg.width}, width = ${toString cfg.width},

View file

@ -1,4 +1,4 @@
_: { {
imports = [ imports = [
./config.nix ./config.nix
./nvim-docs-view.nix ./nvim-docs-view.nix

View file

@ -1,11 +1,13 @@
{lib, ...}: let {lib, ...}: let
inherit (lib) mkEnableOption mkOption types mkMappingOption; inherit (lib.options) mkEnableOption mkOption;
inherit (lib.types) enum int;
inherit (lib.nvim.binds) mkMappingOption;
in { in {
options.vim.lsp.nvim-docs-view = { options.vim.lsp.nvim-docs-view = {
enable = mkEnableOption "nvim-docs-view, for displaying lsp hover documentation in a side panel."; enable = mkEnableOption "nvim-docs-view, for displaying lsp hover documentation in a side panel.";
position = mkOption { position = mkOption {
type = types.enum ["left" "right" "top" "bottom"]; type = enum ["left" "right" "top" "bottom"];
default = "right"; default = "right";
description = '' description = ''
Where to open the docs view panel Where to open the docs view panel
@ -13,7 +15,7 @@ in {
}; };
height = mkOption { height = mkOption {
type = types.int; type = int;
default = 10; default = 10;
description = '' description = ''
Height of the docs view panel if the position is set to either top or bottom Height of the docs view panel if the position is set to either top or bottom
@ -21,7 +23,7 @@ in {
}; };
width = mkOption { width = mkOption {
type = types.int; type = int;
default = 60; default = 60;
description = '' description = ''
Width of the docs view panel if the position is set to either left or right Width of the docs view panel if the position is set to either left or right
@ -29,12 +31,14 @@ in {
}; };
updateMode = mkOption { updateMode = mkOption {
type = types.enum ["auto" "manual"]; type = enum ["auto" "manual"];
default = "auto"; default = "auto";
description = '' description = ''
Determines the mechanism used to update the docs view panel content. Determines the mechanism used to update the docs view panel content
- If auto, the content will update upon cursor move.
- If manual, the content will only update once :DocsViewUpdate is called Possible values:
- auto: the content will update upon cursor move.
- manual: the content will only update once :DocsViewUpdate is called
''; '';
}; };

View file

@ -3,19 +3,21 @@
lib, lib,
... ...
}: let }: let
inherit (lib) addDescriptionsToMappings mkIf mkMerge mkSetBinding nvim pushDownDefault; inherit (lib.modules) mkIf mkMerge;
inherit (lib.nvim.dag) entryAnywhere;
inherit (lib.nvim.binds) addDescriptionsToMappings mkSetBinding pushDownDefault;
cfg = config.vim.lsp; cfg = config.vim.lsp;
self = import ./trouble.nix {inherit lib;}; self = import ./trouble.nix {inherit lib;};
mappingDefinitions = self.options.vim.lsp.trouble.mappings; mappingDefinitions = self.options.vim.lsp.trouble.mappings;
mappings = addDescriptionsToMappings cfg.trouble.mappings mappingDefinitions; mappings = addDescriptionsToMappings cfg.trouble.mappings mappingDefinitions;
in { in {
config = mkIf (cfg.enable && cfg.trouble.enable) { config = mkIf (cfg.enable && cfg.trouble.enable) {
vim.startPlugins = ["trouble"]; vim = {
startPlugins = ["trouble"];
vim.maps.normal = mkMerge [ maps.normal = mkMerge [
(mkSetBinding mappings.toggle "<cmd>TroubleToggle<CR>") (mkSetBinding mappings.toggle "<cmd>TroubleToggle<CR>")
(mkSetBinding mappings.workspaceDiagnostics "<cmd>TroubleToggle workspace_diagnostics<CR>") (mkSetBinding mappings.workspaceDiagnostics "<cmd>TroubleToggle workspace_diagnostics<CR>")
(mkSetBinding mappings.documentDiagnostics "<cmd>TroubleToggle document_diagnostics<CR>") (mkSetBinding mappings.documentDiagnostics "<cmd>TroubleToggle document_diagnostics<CR>")
@ -24,15 +26,16 @@ in {
(mkSetBinding mappings.locList "<cmd>TroubleToggle loclist<CR>") (mkSetBinding mappings.locList "<cmd>TroubleToggle loclist<CR>")
]; ];
vim.binds.whichKey.register = pushDownDefault { binds.whichKey.register = pushDownDefault {
"<leader>l" = "Trouble"; "<leader>l" = "Trouble";
"<leader>x" = "+Trouble"; "<leader>x" = "+Trouble";
"<leader>lw" = "Workspace"; "<leader>lw" = "Workspace";
}; };
vim.luaConfigRC.trouble = nvim.dag.entryAnywhere '' luaConfigRC.trouble = entryAnywhere ''
-- Enable trouble diagnostics viewer -- Enable trouble diagnostics viewer
require("trouble").setup {} require("trouble").setup {}
''; '';
}; };
};
} }

View file

@ -1,4 +1,4 @@
_: { {
imports = [ imports = [
./trouble.nix ./trouble.nix
./config.nix ./config.nix

View file

@ -1,5 +1,6 @@
{lib, ...}: let {lib, ...}: let
inherit (lib) mkEnableOption mkMappingOption; inherit (lib.options) mkEnableOption;
inherit (lib.nvim.binds) mkMappingOption;
in { in {
options.vim.lsp = { options.vim.lsp = {
trouble = { trouble = {