summaryrefslogtreecommitdiffstats
path: root/modules/plugins/lsp/lsp-signature/config.nix
blob: da8828d453b0892736184056bdf4c666743e0377 (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.modules) mkIf;
  inherit (lib.nvim.dag) entryAnywhere;
  inherit (lib.nvim.lua) toLuaObject;

  cfg = config.vim.lsp;
in {
  config = mkIf (cfg.enable && cfg.lspSignature.enable) {
    assertions = [
      {
        assertion = !config.vim.autocomplete.blink-cmp.enable;
        message = ''
          lsp-signature does not work with blink.cmp. Please use blink.cmp's builtin signature feature:

          vim.autocomplete.blink-cmp.setupOpts.signature.enabled = true;
        '';
      }
    ];
    vim = {
      startPlugins = [
        "lsp-signature-nvim"
      ];

      lsp.lspSignature.setupOpts = {
        bind = config.vim.ui.borders.plugins.lsp-signature.enable;
        handler_opts.border = config.vim.ui.borders.plugins.lsp-signature.style;
      };

      pluginRC.lsp-signature = entryAnywhere ''
        -- Enable lsp signature viewer
        require("lsp_signature").setup(${toLuaObject cfg.lspSignature.setupOpts})
      '';
    };
  };
}