{ programs.nvf.settings.vim.lsp = { # enable is automatically set by null-ls and lspconfig options # enable = true; formatOnSave = true; # lightbulb shows a lightbulb when code actions are available # TODO: Look into code actions and how to enable them with telescope lightbulb = { enable = true; setupOpts = {}; }; # ls-signature shows a small signature for functions etc # TODO: Look into configuring this # does not work with blink cmp lspSignature = { enable = false; setupOpts = {}; }; # lspconfig should be enabled and configured automatically lspconfig = { enable = true; sources = {}; # strings for snippet sources? }; # lspkind provides vs code like icons for signatures lspkind = { enable = true; setupOpts = { # call before lspkind modifications are applied before = null; # takes luainline # defines orders of symbols shown, e.g. text_symbol or symbol mode = "symbol_text"; }; }; # lsplines moves diagnostics to virtual lines after the actual line lsplines.enable = false; # TODO: add a keymap to toggle this # lspsaga provides many features: # - breadcrumbs: provides trace to current symbol at top # - callhierarchy: provides a list of the call hierarchy # - code actions: shows a list of available code actions # - definition: peek or go to definitions # - diagnostic: jump around the diagnostics in the file and see the diagnostic in a floating window # - finder: search for references etc # - float terminal: open a floating terminal # - hover: opens a floating docs window # - implement: see interfaces # - lightbulb: same as lightbulb # - outline: see entire file outline # - rename: change all occurrences # - ui beacon: highlight the cursor # default keybinds: # - codeAction "ca" # - lspFinder "lf" # - nextDiagnostic "ln" # - previewDefinition "ld" # - previousDiagnostic "lp" # - rename "lr" # - renderHoveredDoc "lh" # - showCursorDiagnostics "lc" # - showLineDiagnostics "ll" # - signatureHelp "ls" # - smartScrollDown "" # - smartScrollUp "" lspsaga.enable = false; # null-ls exposes nvim as a language server, also used automatically null-ls = { enable = true; sources = {}; }; # nvim-docs-view provides documentation in the side panel nvim-docs-view = { enable = true; # default mappings: # - viewToggle "lvt" # - viewUpdate "lvu" mappings = {}; setupOpts = {}; }; # otter-nvim allows embedding code in other documents otter-nvim = { enable = true; mappings.toggle = "lo"; # default setupOpts = {}; }; # trouble.nvim shows diagnostics and search results trouble = { enable = true; # default mappings: # - documentDiagnostics "ld" # - locList "xl" # - lspReferences "lr" # - quickfix "xq" # - symbols "xs" # - workspaceDiagnostics "lwd" mappings = {}; setupOpts = {}; }; # default mappings for lsp: # - addWorkspaceFolder "lwa" # - codeAction "la" # - documentHighlight "lH" # - format "lf" # - goToDeclaration "lgD" # - goToDefinition "lgd" # - goToType "lgt" # - hover "lh" # - listDocumentSymbols "lS" # - listImplementations "lgi" # - listReferences "lgr" # - listWorkspaceFolders "lwl" # - listWorkspaceSymbols "lws" # - nextDiagnostic "lgn" # - openDiagnosticFloat "le" # - previousDiagnostic "lgp" # - removeWorkspaceFolder "lwr" # - renameSymbol "ln" # - signatureHelp "ls" # - toggleFormatOnSave "ltf" }; }