mirror of
				https://github.com/NotAShelf/nvf.git
				synced 2025-10-31 02:52:37 +00:00 
			
		
		
		
	modules/lsp: switch to explicit lib calls
This commit is contained in:
		
					parent
					
						
							
								dfc7c6737f
							
						
					
				
			
			
				commit
				
					
						c488f0490f
					
				
			
		
					 33 changed files with 285 additions and 273 deletions
				
			
		|  | @ -15,99 +15,102 @@ | |||
|   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 { | ||||
|   config = mkIf cfg.enable { | ||||
|     vim.startPlugins = optional usingNvimCmp "cmp-nvim-lsp"; | ||||
|     vim = { | ||||
|       startPlugins = optional usingNvimCmp "cmp-nvim-lsp"; | ||||
| 
 | ||||
|     vim.autocomplete.sources = {"nvim_lsp" = "[LSP]";}; | ||||
|     vim.luaConfigRC.lsp-setup = '' | ||||
|       vim.g.formatsave = ${boolToString cfg.formatOnSave}; | ||||
|       autocomplete.sources = {"nvim_lsp" = "[LSP]";}; | ||||
| 
 | ||||
|       local attach_keymaps = function(client, bufnr) | ||||
|         ${mkBinding mappings.goToDeclaration "vim.lsp.buf.declaration()"} | ||||
|         ${mkBinding mappings.goToDefinition "vim.lsp.buf.definition()"} | ||||
|         ${mkBinding mappings.goToType "vim.lsp.buf.type_definition()"} | ||||
|         ${mkBinding mappings.listImplementations "vim.lsp.buf.implementation()"} | ||||
|         ${mkBinding mappings.listReferences "vim.lsp.buf.references()"} | ||||
|         ${mkBinding mappings.nextDiagnostic "vim.diagnostic.goto_next()"} | ||||
|         ${mkBinding mappings.previousDiagnostic "vim.diagnostic.goto_prev()"} | ||||
|         ${mkBinding mappings.openDiagnosticFloat "vim.diagnostic.open_float()"} | ||||
|         ${mkBinding mappings.documentHighlight "vim.lsp.buf.document_highlight()"} | ||||
|         ${mkBinding mappings.listDocumentSymbols "vim.lsp.buf.document_symbol()"} | ||||
|         ${mkBinding mappings.addWorkspaceFolder "vim.lsp.buf.add_workspace_folder()"} | ||||
|         ${mkBinding mappings.removeWorkspaceFolder "vim.lsp.buf.remove_workspace_folder()"} | ||||
|         ${mkBinding mappings.listWorkspaceFolders "print(vim.inspect(vim.lsp.buf.list_workspace_folders()))"} | ||||
|         ${mkBinding mappings.listWorkspaceSymbols "vim.lsp.buf.workspace_symbol()"} | ||||
|         ${mkBinding mappings.hover "vim.lsp.buf.hover()"} | ||||
|         ${mkBinding mappings.signatureHelp "vim.lsp.buf.signature_help()"} | ||||
|         ${mkBinding mappings.renameSymbol "vim.lsp.buf.rename()"} | ||||
|         ${mkBinding mappings.codeAction "vim.lsp.buf.code_action()"} | ||||
|         ${mkBinding mappings.format "vim.lsp.buf.format()"} | ||||
|         ${mkBinding mappings.toggleFormatOnSave "vim.b.disableFormatSave = not vim.b.disableFormatSave"} | ||||
|       end | ||||
|       luaConfigRC.lsp-setup = '' | ||||
|         vim.g.formatsave = ${boolToString cfg.formatOnSave}; | ||||
| 
 | ||||
|       -- Enable formatting | ||||
|       local augroup = vim.api.nvim_create_augroup("LspFormatting", {}) | ||||
|         local attach_keymaps = function(client, bufnr) | ||||
|           ${mkBinding mappings.goToDeclaration "vim.lsp.buf.declaration()"} | ||||
|           ${mkBinding mappings.goToDefinition "vim.lsp.buf.definition()"} | ||||
|           ${mkBinding mappings.goToType "vim.lsp.buf.type_definition()"} | ||||
|           ${mkBinding mappings.listImplementations "vim.lsp.buf.implementation()"} | ||||
|           ${mkBinding mappings.listReferences "vim.lsp.buf.references()"} | ||||
|           ${mkBinding mappings.nextDiagnostic "vim.diagnostic.goto_next()"} | ||||
|           ${mkBinding mappings.previousDiagnostic "vim.diagnostic.goto_prev()"} | ||||
|           ${mkBinding mappings.openDiagnosticFloat "vim.diagnostic.open_float()"} | ||||
|           ${mkBinding mappings.documentHighlight "vim.lsp.buf.document_highlight()"} | ||||
|           ${mkBinding mappings.listDocumentSymbols "vim.lsp.buf.document_symbol()"} | ||||
|           ${mkBinding mappings.addWorkspaceFolder "vim.lsp.buf.add_workspace_folder()"} | ||||
|           ${mkBinding mappings.removeWorkspaceFolder "vim.lsp.buf.remove_workspace_folder()"} | ||||
|           ${mkBinding mappings.listWorkspaceFolders "print(vim.inspect(vim.lsp.buf.list_workspace_folders()))"} | ||||
|           ${mkBinding mappings.listWorkspaceSymbols "vim.lsp.buf.workspace_symbol()"} | ||||
|           ${mkBinding mappings.hover "vim.lsp.buf.hover()"} | ||||
|           ${mkBinding mappings.signatureHelp "vim.lsp.buf.signature_help()"} | ||||
|           ${mkBinding mappings.renameSymbol "vim.lsp.buf.rename()"} | ||||
|           ${mkBinding mappings.codeAction "vim.lsp.buf.code_action()"} | ||||
|           ${mkBinding mappings.format "vim.lsp.buf.format()"} | ||||
|           ${mkBinding mappings.toggleFormatOnSave "vim.b.disableFormatSave = not vim.b.disableFormatSave"} | ||||
|         end | ||||
| 
 | ||||
|       format_callback = function(client, bufnr) | ||||
|         if vim.g.formatsave then | ||||
|           vim.api.nvim_clear_autocmds({ group = augroup, buffer = bufnr }) | ||||
|           vim.api.nvim_create_autocmd("BufWritePre", { | ||||
|             group = augroup, | ||||
|             buffer = bufnr, | ||||
|             callback = function() | ||||
|               ${ | ||||
|         if config.vim.lsp.null-ls.enable | ||||
|         then '' | ||||
|           if vim.b.disableFormatSave then | ||||
|             return | ||||
|           end | ||||
|         -- Enable formatting | ||||
|         local augroup = vim.api.nvim_create_augroup("LspFormatting", {}) | ||||
| 
 | ||||
|           local function is_null_ls_formatting_enabled(bufnr) | ||||
|               local file_type = vim.api.nvim_buf_get_option(bufnr, "filetype") | ||||
|               local generators = require("null-ls.generators").get_available( | ||||
|                   file_type, | ||||
|                   require("null-ls.methods").internal.FORMATTING | ||||
|               ) | ||||
|               return #generators > 0 | ||||
|           end | ||||
|         format_callback = function(client, bufnr) | ||||
|           if vim.g.formatsave then | ||||
|             vim.api.nvim_clear_autocmds({ group = augroup, buffer = bufnr }) | ||||
|             vim.api.nvim_create_autocmd("BufWritePre", { | ||||
|               group = augroup, | ||||
|               buffer = bufnr, | ||||
|               callback = function() | ||||
|                 ${ | ||||
|           if config.vim.lsp.null-ls.enable | ||||
|           then '' | ||||
|             if vim.b.disableFormatSave then | ||||
|               return | ||||
|             end | ||||
| 
 | ||||
|           if is_null_ls_formatting_enabled(bufnr) then | ||||
|              vim.lsp.buf.format({ | ||||
|                 bufnr = bufnr, | ||||
|                 filter = function(client) | ||||
|                   return client.name == "null-ls" | ||||
|                 end | ||||
|               }) | ||||
|           else | ||||
|               vim.lsp.buf.format({ | ||||
|                 bufnr = bufnr, | ||||
|               }) | ||||
|           end | ||||
|         '' | ||||
|         else " | ||||
|             local function is_null_ls_formatting_enabled(bufnr) | ||||
|                 local file_type = vim.api.nvim_buf_get_option(bufnr, "filetype") | ||||
|                 local generators = require("null-ls.generators").get_available( | ||||
|                     file_type, | ||||
|                     require("null-ls.methods").internal.FORMATTING | ||||
|                 ) | ||||
|                 return #generators > 0 | ||||
|             end | ||||
| 
 | ||||
|             if is_null_ls_formatting_enabled(bufnr) then | ||||
|                vim.lsp.buf.format({ | ||||
|                   bufnr = bufnr, | ||||
|                   filter = function(client) | ||||
|                     return client.name == "null-ls" | ||||
|                   end | ||||
|                 }) | ||||
|             else | ||||
|                 vim.lsp.buf.format({ | ||||
|                   bufnr = bufnr, | ||||
|                 }) | ||||
|             end | ||||
|           '' | ||||
|           else " | ||||
|               vim.lsp.buf.format({ | ||||
|                 bufnr = bufnr, | ||||
|               }) | ||||
|         " | ||||
|       } | ||||
|             end, | ||||
|           }) | ||||
|         } | ||||
|               end, | ||||
|             }) | ||||
|           end | ||||
|         end | ||||
|       end | ||||
| 
 | ||||
|       ${optionalString (config.vim.ui.breadcrumbs.enable) ''local navic = require("nvim-navic")''} | ||||
|       default_on_attach = function(client, bufnr) | ||||
|         attach_keymaps(client, bufnr) | ||||
|         format_callback(client, bufnr) | ||||
|         ${optionalString (config.vim.ui.breadcrumbs.enable) '' | ||||
|         -- let navic attach to buffers | ||||
|         if client.server_capabilities.documentSymbolProvider then | ||||
|           navic.attach(client, bufnr) | ||||
|         ${optionalString (config.vim.ui.breadcrumbs.enable) ''local navic = require("nvim-navic")''} | ||||
|         default_on_attach = function(client, bufnr) | ||||
|           attach_keymaps(client, bufnr) | ||||
|           format_callback(client, bufnr) | ||||
|           ${optionalString (config.vim.ui.breadcrumbs.enable) '' | ||||
|           -- let navic attach to buffers | ||||
|           if client.server_capabilities.documentSymbolProvider then | ||||
|             navic.attach(client, bufnr) | ||||
|           end | ||||
|         ''} | ||||
|         end | ||||
|       ''} | ||||
|       end | ||||
| 
 | ||||
|       local capabilities = vim.lsp.protocol.make_client_capabilities() | ||||
|       ${optionalString usingNvimCmp "capabilities = require('cmp_nvim_lsp').default_capabilities()"} | ||||
|     ''; | ||||
|         local capabilities = vim.lsp.protocol.make_client_capabilities() | ||||
|         ${optionalString usingNvimCmp "capabilities = require('cmp_nvim_lsp').default_capabilities()"} | ||||
|       ''; | ||||
|     }; | ||||
|   }; | ||||
| } | ||||
|  |  | |||
|  | @ -1,4 +1,4 @@ | |||
| _: { | ||||
| { | ||||
|   imports = [ | ||||
|     # nvim lsp support | ||||
|     ./config.nix | ||||
|  |  | |||
|  | @ -3,20 +3,21 @@ | |||
|   lib, | ||||
|   ... | ||||
| }: let | ||||
|   inherit (lib) mkIf nvim; | ||||
|   inherit (lib.modules) mkIf; | ||||
|   inherit (lib.nvim.dag) entryAnywhere; | ||||
| 
 | ||||
|   cfg = config.vim.lsp; | ||||
| in { | ||||
|   config = mkIf (cfg.enable && cfg.lightbulb.enable) { | ||||
|     vim.startPlugins = ["nvim-lightbulb"]; | ||||
|     vim = { | ||||
|       startPlugins = ["nvim-lightbulb"]; | ||||
| 
 | ||||
|     vim.configRC.lightbulb = nvim.dag.entryAnywhere '' | ||||
|       autocmd CursorHold,CursorHoldI * lua require'nvim-lightbulb'.update_lightbulb() | ||||
|     ''; | ||||
|       luaConfigRC.lightbulb = entryAnywhere '' | ||||
|         vim.api.nvim_command('autocmd CursorHold,CursorHoldI * lua require\'nvim-lightbulb\'.update_lightbulb()') | ||||
| 
 | ||||
|     vim.luaConfigRC.lightbulb = nvim.dag.entryAnywhere '' | ||||
|       -- Enable trouble diagnostics viewer | ||||
|       require'nvim-lightbulb'.setup() | ||||
|     ''; | ||||
|         -- Enable trouble diagnostics viewer | ||||
|         require'nvim-lightbulb'.setup() | ||||
|       ''; | ||||
|     }; | ||||
|   }; | ||||
| } | ||||
|  |  | |||
|  | @ -1,4 +1,4 @@ | |||
| _: { | ||||
| { | ||||
|   imports = [ | ||||
|     ./lightbulb.nix | ||||
|     ./config.nix | ||||
|  |  | |||
|  | @ -1,9 +1,5 @@ | |||
| { | ||||
|   config, | ||||
|   lib, | ||||
|   ... | ||||
| }: let | ||||
|   inherit (lib) mkEnableOption; | ||||
| {lib, ...}: let | ||||
|   inherit (lib.options) mkEnableOption; | ||||
| in { | ||||
|   options.vim.lsp = { | ||||
|     lightbulb = { | ||||
|  |  | |||
|  | @ -3,25 +3,29 @@ | |||
|   lib, | ||||
|   ... | ||||
| }: let | ||||
|   inherit (lib) mkIf nvim optionalString; | ||||
|   inherit (lib.modules) mkIf; | ||||
|   inherit (lib.nvim.dag) entryAnywhere; | ||||
|   inherit (lib.strings) optionalString; | ||||
| 
 | ||||
|   cfg = config.vim.lsp; | ||||
| in { | ||||
|   config = mkIf (cfg.enable && cfg.lspSignature.enable) { | ||||
|     vim.startPlugins = [ | ||||
|       "lsp-signature" | ||||
|     ]; | ||||
|     vim = { | ||||
|       startPlugins = [ | ||||
|         "lsp-signature" | ||||
|       ]; | ||||
| 
 | ||||
|     vim.luaConfigRC.lsp-signature = nvim.dag.entryAnywhere '' | ||||
|       -- Enable lsp signature viewer | ||||
|       require("lsp_signature").setup({ | ||||
|         ${optionalString (config.vim.ui.borders.plugins.lsp-signature.enable) '' | ||||
|         bind = true, -- This is mandatory, otherwise border config won't get registered. | ||||
|         handler_opts = { | ||||
|           border = "${config.vim.ui.borders.plugins.lsp-signature.style}" | ||||
|         } | ||||
|       ''} | ||||
|       }) | ||||
|     ''; | ||||
|       luaConfigRC.lsp-signature = entryAnywhere '' | ||||
|         -- Enable lsp signature viewer | ||||
|         require("lsp_signature").setup({ | ||||
|           ${optionalString config.vim.ui.borders.plugins.lsp-signature.enable '' | ||||
|           bind = true, -- This is mandatory, otherwise border config won't get registered. | ||||
|           handler_opts = { | ||||
|             border = "${config.vim.ui.borders.plugins.lsp-signature.style}" | ||||
|           } | ||||
|         ''} | ||||
|         }) | ||||
|       ''; | ||||
|     }; | ||||
|   }; | ||||
| } | ||||
|  |  | |||
|  | @ -1,4 +1,4 @@ | |||
| _: { | ||||
| { | ||||
|   imports = [ | ||||
|     ./lsp-signature.nix | ||||
|     ./config.nix | ||||
|  |  | |||
|  | @ -1,13 +1,9 @@ | |||
| { | ||||
|   config, | ||||
|   lib, | ||||
|   ... | ||||
| }: let | ||||
|   inherit (lib) mkEnableOption; | ||||
| {lib, ...}: let | ||||
|   inherit (lib.options) mkEnableOption; | ||||
| in { | ||||
|   options.vim.lsp = { | ||||
|     lspSignature = { | ||||
|       enable = mkEnableOption "lsp signature viewer"; | ||||
|       enable = mkEnableOption "lsp signature viewer [lsp-signature]"; | ||||
|     }; | ||||
|   }; | ||||
| } | ||||
|  |  | |||
|  | @ -1,32 +1,35 @@ | |||
| { | ||||
|   pkgs, | ||||
|   config, | ||||
|   lib, | ||||
|   ... | ||||
| }: 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; | ||||
| in { | ||||
|   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"] '' | ||||
|         local lspconfig = require('lspconfig') | ||||
|         luaConfigRC.lspconfig = entryAfter ["lsp-setup"] '' | ||||
|           local lspconfig = require('lspconfig') | ||||
| 
 | ||||
|         ${ | ||||
|           # TODO: make border style configurable | ||||
|           optionalString (config.vim.ui.borders.enable) '' | ||||
|             require('lspconfig.ui.windows').default_options.border = '${config.vim.ui.borders.globalStyle}' | ||||
|           '' | ||||
|         } | ||||
|       ''; | ||||
|           ${ | ||||
|             optionalString config.vim.ui.borders.enable '' | ||||
|               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; | ||||
|     } | ||||
|   ]); | ||||
| } | ||||
|  |  | |||
|  | @ -1,4 +1,4 @@ | |||
| _: { | ||||
| { | ||||
|   imports = [ | ||||
|     ./config.nix | ||||
|     ./lspconfig.nix | ||||
|  |  | |||
|  | @ -1,17 +1,13 @@ | |||
| { | ||||
|   pkgs, | ||||
|   config, | ||||
|   lib, | ||||
|   ... | ||||
| }: let | ||||
|   inherit (lib) mkEnableOption mkOption types; | ||||
| {lib, ...}: let | ||||
|   inherit (lib.options) mkEnableOption mkOption; | ||||
|   inherit (lib.types) attrsOf str; | ||||
| in { | ||||
|   options.vim.lsp.lspconfig = { | ||||
|     enable = mkEnableOption "nvim-lspconfig, also enabled automatically"; | ||||
| 
 | ||||
|     sources = mkOption { | ||||
|       description = "nvim-lspconfig sources"; | ||||
|       type = with types; attrsOf str; | ||||
|       type = attrsOf str; | ||||
|       default = {}; | ||||
|     }; | ||||
|   }; | ||||
|  |  | |||
|  | @ -1,16 +1,16 @@ | |||
| { | ||||
|   pkgs, | ||||
|   config, | ||||
|   lib, | ||||
|   ... | ||||
| }: let | ||||
|   inherit (lib) mkIf nvim; | ||||
|   inherit (lib.modules) mkIf; | ||||
|   inherit (lib.nvim.dag) entryAnywhere; | ||||
| 
 | ||||
|   cfg = config.vim.lsp; | ||||
| in { | ||||
|   config = mkIf (cfg.enable && cfg.lspkind.enable) { | ||||
|     vim.startPlugins = ["lspkind"]; | ||||
|     vim.luaConfigRC.lspkind = nvim.dag.entryAnywhere '' | ||||
|     vim.luaConfigRC.lspkind = entryAnywhere '' | ||||
|       local lspkind = require'lspkind' | ||||
|       local lspkind_opts = { | ||||
|         mode = '${cfg.lspkind.mode}' | ||||
|  |  | |||
|  | @ -1,4 +1,4 @@ | |||
| _: { | ||||
| { | ||||
|   imports = [ | ||||
|     ./config.nix | ||||
|     ./lspkind.nix | ||||
|  |  | |||
|  | @ -1,12 +1,6 @@ | |||
| { | ||||
|   pkgs, | ||||
|   config, | ||||
|   lib, | ||||
|   ... | ||||
| }: let | ||||
|   inherit (lib) mkEnableOption mkOption types; | ||||
| 
 | ||||
|   cfg = config.vim.lsp; | ||||
| {lib, ...}: let | ||||
|   inherit (lib.options) mkEnableOption mkOption; | ||||
|   inherit (lib.types) enum; | ||||
| in { | ||||
|   options.vim.lsp = { | ||||
|     lspkind = { | ||||
|  | @ -14,7 +8,7 @@ in { | |||
| 
 | ||||
|       mode = mkOption { | ||||
|         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"; | ||||
|       }; | ||||
|     }; | ||||
|  |  | |||
|  | @ -3,13 +3,14 @@ | |||
|   lib, | ||||
|   ... | ||||
| }: let | ||||
|   inherit (lib) mkIf nvim; | ||||
|   inherit (lib.modules) mkIf; | ||||
|   inherit (lib.nvim.dag) entryAfter; | ||||
| 
 | ||||
|   cfg = config.vim.lsp; | ||||
| in { | ||||
|   config = mkIf (cfg.enable && cfg.lsplines.enable) { | ||||
|     vim.startPlugins = ["lsp-lines"]; | ||||
|     vim.luaConfigRC.lsplines = nvim.dag.entryAfter ["lspconfig"] '' | ||||
|     vim.luaConfigRC.lsplines = entryAfter ["lspconfig"] '' | ||||
|       require("lsp_lines").setup() | ||||
| 
 | ||||
|       vim.diagnostic.config({ | ||||
|  |  | |||
|  | @ -1,4 +1,4 @@ | |||
| _: { | ||||
| { | ||||
|   imports = [ | ||||
|     ./config.nix | ||||
|     ./lsplines.nix | ||||
|  |  | |||
|  | @ -1,9 +1,11 @@ | |||
| {lib, ...}: let | ||||
|   inherit (lib) mkEnableOption; | ||||
|   inherit (lib.options) mkEnableOption; | ||||
| in { | ||||
|   options.vim.lsp = { | ||||
|     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] | ||||
|       ''; | ||||
|     }; | ||||
|   }; | ||||
| } | ||||
|  |  | |||
|  | @ -3,7 +3,10 @@ | |||
|   lib, | ||||
|   ... | ||||
| }: 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; | ||||
|   self = import ./lspsaga.nix {inherit lib;}; | ||||
|  | @ -12,38 +15,39 @@ | |||
|   mappings = addDescriptionsToMappings cfg.lspsaga.mappings mappingDefinitions; | ||||
| in { | ||||
|   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"; | ||||
|         normal = mkMerge [ | ||||
|           (mkSetLuaBinding mappings.lspFinder "require('lspsaga.provider').lsp_finder") | ||||
|           (mkSetLuaBinding mappings.renderHoveredDoc "require('lspsaga.hover').render_hover_doc") | ||||
| 
 | ||||
|     vim.maps.normal = mkMerge [ | ||||
|       (mkSetLuaBinding mappings.lspFinder "require('lspsaga.provider').lsp_finder") | ||||
|       (mkSetLuaBinding mappings.renderHoveredDoc "require('lspsaga.hover').render_hover_doc") | ||||
|           (mkSetLuaBinding mappings.smartScrollUp "function() require('lspsaga.action').smart_scroll_with_saga(-1) end") | ||||
|           (mkSetLuaBinding mappings.smartScrollDown "function() require('lspsaga.action').smart_scroll_with_saga(1) end") | ||||
| 
 | ||||
|       (mkSetLuaBinding mappings.smartScrollUp "function() require('lspsaga.action').smart_scroll_with_saga(-1) end") | ||||
|       (mkSetLuaBinding mappings.smartScrollDown "function() require('lspsaga.action').smart_scroll_with_saga(1) end") | ||||
|           (mkSetLuaBinding mappings.rename "require('lspsaga.rename').rename") | ||||
|           (mkSetLuaBinding mappings.previewDefinition "require('lspsaga.provider').preview_definition") | ||||
| 
 | ||||
|       (mkSetLuaBinding mappings.rename "require('lspsaga.rename').rename") | ||||
|       (mkSetLuaBinding mappings.previewDefinition "require('lspsaga.provider').preview_definition") | ||||
|           (mkSetLuaBinding mappings.showLineDiagnostics "require('lspsaga.diagnostic').show_line_diagnostics") | ||||
|           (mkSetLuaBinding mappings.showCursorDiagnostics "require('lspsaga.diagnostic').show_cursor_diagnostics") | ||||
| 
 | ||||
|       (mkSetLuaBinding mappings.showLineDiagnostics "require('lspsaga.diagnostic').show_line_diagnostics") | ||||
|       (mkSetLuaBinding mappings.showCursorDiagnostics "require('lspsaga.diagnostic').show_cursor_diagnostics") | ||||
|           (mkSetLuaBinding mappings.nextDiagnostic "require('lspsaga.diagnostic').navigate('next')") | ||||
|           (mkSetLuaBinding mappings.previousDiagnostic "require('lspsaga.diagnostic').navigate('prev')") | ||||
| 
 | ||||
|       (mkSetLuaBinding mappings.nextDiagnostic "require('lspsaga.diagnostic').navigate('next')") | ||||
|       (mkSetLuaBinding mappings.previousDiagnostic "require('lspsaga.diagnostic').navigate('prev')") | ||||
|           (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.nvimCodeActionMenu.enable) (mkSetLuaBinding mappings.codeAction "require('lspsaga.codeaction').code_action")) | ||||
|       (mkIf (!cfg.lspSignature.enable) (mkSetLuaBinding mappings.signatureHelp "require('lspsaga.signaturehelp').signature_help")) | ||||
|     ]; | ||||
| 
 | ||||
|     vim.luaConfigRC.lspsage = nvim.dag.entryAnywhere '' | ||||
|       -- Enable lspsaga | ||||
|       local saga = require 'lspsaga' | ||||
|       saga.init_lsp_saga({ | ||||
|         ${optionalString (config.vim.ui.borders.plugins.lspsaga.enable) '' | ||||
|         border_style = '${config.vim.ui.borders.plugins.lspsaga.style}', | ||||
|       ''} | ||||
|       }) | ||||
|     ''; | ||||
|       luaConfigRC.lspsaga = entryAnywhere '' | ||||
|         require('lspsaga').init_lsp_saga({ | ||||
|           ${optionalString config.vim.ui.borders.plugins.lspsaga.enable '' | ||||
|           border_style = '${config.vim.ui.borders.plugins.lspsaga.style}', | ||||
|         ''} | ||||
|         }) | ||||
|       ''; | ||||
|     }; | ||||
|   }; | ||||
| } | ||||
|  |  | |||
|  | @ -1,4 +1,4 @@ | |||
| _: { | ||||
| { | ||||
|   imports = [ | ||||
|     ./lspsaga.nix | ||||
|     ./config.nix | ||||
|  |  | |||
|  | @ -1,5 +1,6 @@ | |||
| {lib, ...}: let | ||||
|   inherit (lib) mkEnableOption mkMappingOption; | ||||
|   inherit (lib.options) mkEnableOption; | ||||
|   inherit (lib.nvim.binds) mkMappingOption; | ||||
| in { | ||||
|   options.vim.lsp.lspsaga = { | ||||
|     enable = mkEnableOption "LSP Saga"; | ||||
|  |  | |||
|  | @ -1,5 +1,6 @@ | |||
| {lib, ...}: let | ||||
|   inherit (lib) mkEnableOption mkMappingOption; | ||||
|   inherit (lib.options) mkEnableOption; | ||||
|   inherit (lib.nvim.binds) mkMappingOption; | ||||
| in { | ||||
|   options.vim.lsp = { | ||||
|     enable = mkEnableOption "LSP, also enabled automatically through null-ls and lspconfig options"; | ||||
|  |  | |||
|  | @ -1,5 +1,4 @@ | |||
| { | ||||
|   pkgs, | ||||
|   config, | ||||
|   lib, | ||||
|   ... | ||||
|  | @ -10,25 +9,28 @@ | |||
| in { | ||||
|   config = mkIf cfg.null-ls.enable (mkMerge [ | ||||
|     { | ||||
|       vim.lsp.enable = true; | ||||
|       vim.startPlugins = ["none-ls"]; | ||||
|       vim = { | ||||
|         lsp.enable = true; | ||||
|         startPlugins = ["none-ls"]; | ||||
| 
 | ||||
|       vim.luaConfigRC.null_ls-setup = nvim.dag.entryAnywhere '' | ||||
|         local null_ls = require("null-ls") | ||||
|         local null_helpers = require("null-ls.helpers") | ||||
|         local null_methods = require("null-ls.methods") | ||||
|         local ls_sources = {} | ||||
|       ''; | ||||
|       vim.luaConfigRC.null_ls = nvim.dag.entryAfter ["null_ls-setup" "lsp-setup"] '' | ||||
|         require('null-ls').setup({ | ||||
|           debug = false, | ||||
|           diagnostics_format = "[#{m}] #{s} (#{c})", | ||||
|           debounce = 250, | ||||
|           default_timeout = 5000, | ||||
|           sources = ls_sources, | ||||
|           on_attach=default_on_attach | ||||
|         }) | ||||
|       ''; | ||||
|         luaConfigRC.null_ls-setup = nvim.dag.entryAnywhere '' | ||||
|           local null_ls = require("null-ls") | ||||
|           local null_helpers = require("null-ls.helpers") | ||||
|           local null_methods = require("null-ls.methods") | ||||
|           local ls_sources = {} | ||||
|         ''; | ||||
| 
 | ||||
|         luaConfigRC.null_ls = nvim.dag.entryAfter ["null_ls-setup" "lsp-setup"] '' | ||||
|           require('null-ls').setup({ | ||||
|             debug = false, | ||||
|             diagnostics_format = "[#{m}] #{s} (#{c})", | ||||
|             debounce = 250, | ||||
|             default_timeout = 5000, | ||||
|             sources = ls_sources, | ||||
|             on_attach = default_on_attach | ||||
|           }) | ||||
|         ''; | ||||
|       }; | ||||
|     } | ||||
|     { | ||||
|       vim.luaConfigRC = mapAttrs (_: v: (nvim.dag.entryBetween ["null_ls"] ["null_ls-setup"] v)) cfg.null-ls.sources; | ||||
|  |  | |||
|  | @ -1,4 +1,4 @@ | |||
| _: { | ||||
| { | ||||
|   imports = [ | ||||
|     ./config.nix | ||||
|     ./null-ls.nix | ||||
|  |  | |||
|  | @ -1,19 +1,13 @@ | |||
| { | ||||
|   pkgs, | ||||
|   config, | ||||
|   lib, | ||||
|   ... | ||||
| }: let | ||||
|   inherit (lib) mkEnableOption mkOption types; | ||||
| 
 | ||||
|   cfg = config.vim.lsp; | ||||
| {lib, ...}: let | ||||
|   inherit (lib.options) mkEnableOption mkOption; | ||||
|   inherit (lib.types) attrsOf str; | ||||
| in { | ||||
|   options.vim.lsp.null-ls = { | ||||
|     enable = mkEnableOption "null-ls, also enabled automatically"; | ||||
| 
 | ||||
|     sources = mkOption { | ||||
|       description = "null-ls sources"; | ||||
|       type = with types; attrsOf str; | ||||
|       type = attrsOf str; | ||||
|       default = {}; | ||||
|     }; | ||||
|   }; | ||||
|  |  | |||
|  | @ -3,32 +3,35 @@ | |||
|   lib, | ||||
|   ... | ||||
| }: 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; | ||||
| 
 | ||||
|   self = import ./nvim-code-action-menu.nix {inherit lib;}; | ||||
| 
 | ||||
|   mappingDefinitions = self.options.vim.lsp.nvimCodeActionMenu.mappings; | ||||
|   mappings = addDescriptionsToMappings cfg.nvimCodeActionMenu.mappings mappingDefinitions; | ||||
| in { | ||||
|   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 { | ||||
|       "<leader>c" = "+CodeAction"; | ||||
|       binds.whichKey.register = pushDownDefault { | ||||
|         "<leader>c" = "+CodeAction"; | ||||
|       }; | ||||
| 
 | ||||
|       luaConfigRC.code-action-menu = entryAnywhere '' | ||||
|         -- border configuration | ||||
|         vim.g.code_action_menu_window_border = '${config.vim.ui.borders.plugins.code-action-menu.style}' | ||||
| 
 | ||||
|         -- 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.diff "vim.g.code_action_menu_show_diff = true"} | ||||
|         ${lib.optionalString cfg.nvimCodeActionMenu.show.actionKind "vim.g.code_action_menu_show_action_kind = true"} | ||||
|       ''; | ||||
|     }; | ||||
| 
 | ||||
|     vim.luaConfigRC.code-action-menu = nvim.dag.entryAnywhere '' | ||||
|       -- border configuration | ||||
|       vim.g.code_action_menu_window_border = '${config.vim.ui.borders.plugins.code-action-menu.style}' | ||||
| 
 | ||||
|       -- 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.diff) "vim.g.code_action_menu_show_diff = true"} | ||||
|       ${lib.optionalString (cfg.nvimCodeActionMenu.show.actionKind) "vim.g.code_action_menu_show_action_kind = true"} | ||||
|     ''; | ||||
|   }; | ||||
| } | ||||
|  |  | |||
|  | @ -1,4 +1,4 @@ | |||
| _: { | ||||
| { | ||||
|   imports = [ | ||||
|     ./nvim-code-action-menu.nix | ||||
|     ./config.nix | ||||
|  |  | |||
|  | @ -1,5 +1,6 @@ | |||
| {lib, ...}: let | ||||
|   inherit (lib) mkEnableOption mkMappingOption; | ||||
|   inherit (lib.options) mkEnableOption; | ||||
|   inherit (lib.nvim.binds) mkMappingOption; | ||||
| in { | ||||
|   options.vim.lsp = { | ||||
|     nvimCodeActionMenu = { | ||||
|  |  | |||
|  | @ -3,8 +3,10 @@ | |||
|   lib, | ||||
|   ... | ||||
| }: let | ||||
|   inherit (lib) mkIf nvim addDescriptionsToMappings mkSetBinding mkMerge; | ||||
|   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; | ||||
|   self = import ./nvim-docs-view.nix {inherit lib;}; | ||||
|  | @ -17,7 +19,7 @@ in { | |||
|       lsp.enable = true; | ||||
|       startPlugins = ["nvim-docs-view"]; | ||||
| 
 | ||||
|       luaConfigRC.nvim-docs-view = nvim.dag.entryAnywhere '' | ||||
|       luaConfigRC.nvim-docs-view = entryAnywhere '' | ||||
|         require("docs-view").setup { | ||||
|           position = "${cfg.position}", | ||||
|           width = ${toString cfg.width}, | ||||
|  |  | |||
|  | @ -1,4 +1,4 @@ | |||
| _: { | ||||
| { | ||||
|   imports = [ | ||||
|     ./config.nix | ||||
|     ./nvim-docs-view.nix | ||||
|  |  | |||
|  | @ -1,11 +1,13 @@ | |||
| {lib, ...}: let | ||||
|   inherit (lib) mkEnableOption mkOption types mkMappingOption; | ||||
|   inherit (lib.options) mkEnableOption mkOption; | ||||
|   inherit (lib.types) enum int; | ||||
|   inherit (lib.nvim.binds) mkMappingOption; | ||||
| in { | ||||
|   options.vim.lsp.nvim-docs-view = { | ||||
|     enable = mkEnableOption "nvim-docs-view, for displaying lsp hover documentation in a side panel."; | ||||
| 
 | ||||
|     position = mkOption { | ||||
|       type = types.enum ["left" "right" "top" "bottom"]; | ||||
|       type = enum ["left" "right" "top" "bottom"]; | ||||
|       default = "right"; | ||||
|       description = '' | ||||
|         Where to open the docs view panel | ||||
|  | @ -13,7 +15,7 @@ in { | |||
|     }; | ||||
| 
 | ||||
|     height = mkOption { | ||||
|       type = types.int; | ||||
|       type = int; | ||||
|       default = 10; | ||||
|       description = '' | ||||
|         Height of the docs view panel if the position is set to either top or bottom | ||||
|  | @ -21,7 +23,7 @@ in { | |||
|     }; | ||||
| 
 | ||||
|     width = mkOption { | ||||
|       type = types.int; | ||||
|       type = int; | ||||
|       default = 60; | ||||
|       description = '' | ||||
|         Width of the docs view panel if the position is set to either left or right | ||||
|  | @ -29,12 +31,14 @@ in { | |||
|     }; | ||||
| 
 | ||||
|     updateMode = mkOption { | ||||
|       type = types.enum ["auto" "manual"]; | ||||
|       type = enum ["auto" "manual"]; | ||||
|       default = "auto"; | ||||
|       description = '' | ||||
|         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 | ||||
|         Determines the mechanism used to update the docs view panel content | ||||
| 
 | ||||
|         Possible values: | ||||
|         - auto: the content will update upon cursor move. | ||||
|         - manual: the content will only update once :DocsViewUpdate is called | ||||
|       ''; | ||||
|     }; | ||||
| 
 | ||||
|  |  | |||
|  | @ -3,36 +3,39 @@ | |||
|   lib, | ||||
|   ... | ||||
| }: 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; | ||||
| 
 | ||||
|   self = import ./trouble.nix {inherit lib;}; | ||||
| 
 | ||||
|   mappingDefinitions = self.options.vim.lsp.trouble.mappings; | ||||
|   mappings = addDescriptionsToMappings cfg.trouble.mappings mappingDefinitions; | ||||
| in { | ||||
|   config = mkIf (cfg.enable && cfg.trouble.enable) { | ||||
|     vim.startPlugins = ["trouble"]; | ||||
|     vim = { | ||||
|       startPlugins = ["trouble"]; | ||||
| 
 | ||||
|     vim.maps.normal = mkMerge [ | ||||
|       (mkSetBinding mappings.toggle "<cmd>TroubleToggle<CR>") | ||||
|       (mkSetBinding mappings.workspaceDiagnostics "<cmd>TroubleToggle workspace_diagnostics<CR>") | ||||
|       (mkSetBinding mappings.documentDiagnostics "<cmd>TroubleToggle document_diagnostics<CR>") | ||||
|       (mkSetBinding mappings.lspReferences "<cmd>TroubleToggle lsp_references<CR>") | ||||
|       (mkSetBinding mappings.quickfix "<cmd>TroubleToggle quickfix<CR>") | ||||
|       (mkSetBinding mappings.locList "<cmd>TroubleToggle loclist<CR>") | ||||
|     ]; | ||||
|       maps.normal = mkMerge [ | ||||
|         (mkSetBinding mappings.toggle "<cmd>TroubleToggle<CR>") | ||||
|         (mkSetBinding mappings.workspaceDiagnostics "<cmd>TroubleToggle workspace_diagnostics<CR>") | ||||
|         (mkSetBinding mappings.documentDiagnostics "<cmd>TroubleToggle document_diagnostics<CR>") | ||||
|         (mkSetBinding mappings.lspReferences "<cmd>TroubleToggle lsp_references<CR>") | ||||
|         (mkSetBinding mappings.quickfix "<cmd>TroubleToggle quickfix<CR>") | ||||
|         (mkSetBinding mappings.locList "<cmd>TroubleToggle loclist<CR>") | ||||
|       ]; | ||||
| 
 | ||||
|     vim.binds.whichKey.register = pushDownDefault { | ||||
|       "<leader>l" = "Trouble"; | ||||
|       "<leader>x" = "+Trouble"; | ||||
|       "<leader>lw" = "Workspace"; | ||||
|       binds.whichKey.register = pushDownDefault { | ||||
|         "<leader>l" = "Trouble"; | ||||
|         "<leader>x" = "+Trouble"; | ||||
|         "<leader>lw" = "Workspace"; | ||||
|       }; | ||||
| 
 | ||||
|       luaConfigRC.trouble = entryAnywhere '' | ||||
|         -- Enable trouble diagnostics viewer | ||||
|         require("trouble").setup {} | ||||
|       ''; | ||||
|     }; | ||||
| 
 | ||||
|     vim.luaConfigRC.trouble = nvim.dag.entryAnywhere '' | ||||
|       -- Enable trouble diagnostics viewer | ||||
|       require("trouble").setup {} | ||||
|     ''; | ||||
|   }; | ||||
| } | ||||
|  |  | |||
|  | @ -1,4 +1,4 @@ | |||
| _: { | ||||
| { | ||||
|   imports = [ | ||||
|     ./trouble.nix | ||||
|     ./config.nix | ||||
|  |  | |||
|  | @ -1,5 +1,6 @@ | |||
| {lib, ...}: let | ||||
|   inherit (lib) mkEnableOption mkMappingOption; | ||||
|   inherit (lib.options) mkEnableOption; | ||||
|   inherit (lib.nvim.binds) mkMappingOption; | ||||
| in { | ||||
|   options.vim.lsp = { | ||||
|     trouble = { | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue