summaryrefslogtreecommitdiffstats
path: root/modules/plugins/lsp/module.nix
blob: 6b8f864001571b4e42dc23646000a4c7c5eb8f5d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
{
  config,
  lib,
  ...
}: let
  inherit (lib.options) mkEnableOption;
  inherit (config.vim.lib) mkMappingOption;
in {
  options.vim.lsp = {
    formatOnSave = mkEnableOption "format on save";

    inlayHints = {
      enable = mkEnableOption "inlay hints";
    };

    mappings = {
      goToDefinition = mkMappingOption "Go to definition" "<leader>lgd";
      goToDeclaration = mkMappingOption "Go to declaration" "<leader>lgD";
      goToType = mkMappingOption "Go to type" "<leader>lgt";
      listImplementations = mkMappingOption "List implementations" "<leader>lgi";
      listReferences = mkMappingOption "List references" "<leader>lgr";
      nextDiagnostic = mkMappingOption "Go to next diagnostic" "<leader>lgn";
      previousDiagnostic = mkMappingOption "Go to previous diagnostic" "<leader>lgp";
      openDiagnosticFloat = mkMappingOption "Open diagnostic float" "<leader>le";
      documentHighlight = mkMappingOption "Document highlight" "<leader>lH";
      listDocumentSymbols = mkMappingOption "List document symbols" "<leader>lS";
      addWorkspaceFolder = mkMappingOption "Add workspace folder" "<leader>lwa";
      removeWorkspaceFolder = mkMappingOption "Remove workspace folder" "<leader>lwr";
      listWorkspaceFolders = mkMappingOption "List workspace folders" "<leader>lwl";
      listWorkspaceSymbols = mkMappingOption "List workspace symbols" "<leader>lws";
      hover = mkMappingOption "Trigger hover" "<leader>lh";
      signatureHelp = mkMappingOption "Signature help" "<leader>ls";
      renameSymbol = mkMappingOption "Rename symbol" "<leader>ln";
      codeAction = mkMappingOption "Code action" "<leader>la";
      format = mkMappingOption "Format" "<leader>lf";
      toggleFormatOnSave = mkMappingOption "Toggle format on save" "<leader>ltf";
    };
  };
}