aboutsummaryrefslogtreecommitdiffstats
path: root/modules/development/nixvim/plugins/lsp/default.nix
blob: 1d56b66769f5a0d2956f3c64ca4861a68449573b (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
40
41
42
43
# Language Server Protocol configuration
{ config, lib, ... }:
{
  config.programs.nixvim = lib.mkIf config.development.nixvim.enable {
    plugins.lsp = {
      enable = true;
      inlayHints = true;
      autoLoad = true;

      keymaps = {
        lspBuf = {
          "<leader>lh" = "hover";
          "<leader>lr" = "references";
          "<leader>ld" = "definition";
          "<leader>li" = "implementation";
          "<leader>lt" = "type_definition";
          "<leader>lD" = "declaration";
          "<leader>lR" = "rename";
          "<leader>la" = "code_action";
          "<leader>lf" = "format";
          "<leader>ls" = "signature_help";
          "<leader>lwa" = "add_workspace_folder";
          "<leader>lwr" = "remove_workspace_folder";
          "<leader>lwl" = "list_workspace_folders";
        };
        diagnostic = {
          "<leader>le" = "open_float";
          "<leader>lq" = "setloclist";
          "[d" = "goto_prev";
          "]d" = "goto_next";
        };
      };
    };

    autoCmd = [
      {
        event = [ "CursorHold" ];
        pattern = "*";
        callback.__raw = builtins.readFile ./open-diagnostic-float.lua;
      }
    ];
  };
}