{ config, lib, ... }: let inherit (config.myvim.mkKey) mkKeymap; in { opts = { foldcolumn = "1"; foldlevel = 99; foldlevelstart = -1; foldenable = true; }; diagnostic.settings = { virtual_text = false; underline = true; signs = true; severity_sort = true; float = { border = config.myvim.border; source = "always"; focusable = false; }; }; plugins = { lsp = { enable = true; keymaps.extra = [ (mkKeymap "n" "lO" "lua require('otter').activate()" "Force Otter") ]; inlayHints = true; servers = { typos_lsp = { enable = true; extraOptions.init_options.diagnosticSeverity = "Hint"; }; }; keymaps = { silent = true; diagnostic = { "lj" = "goto_next"; "lk" = "goto_prev"; }; }; }; lspsaga = { enable = true; settings = { lightbulb = { enable = false; virtualText = false; }; outline.keys.jump = ""; ui.bortder = config.myvim.border; scrollPreview = { scrollDown = ""; scrollUp = ""; }; }; }; nvim-ufo = { enable = true; settings = { provider_selector = # lua '' function() return { "lsp", "indent" } end ''; preview.mappings = { close = "q"; switch = "K"; }; }; }; otter = { enable = true; settings.buffers = { set_filetype = true; }; }; tiny-inline-diagnostic.enable = true; trouble.enable = true; }; imports = with builtins; with lib; map (fn: ./${fn}) ( filter (fn: (fn != "default.nix" && !hasSuffix ".md" "${fn}")) (attrNames (readDir ./.)) ); }