inital commit,
initalized from nix flake init -t github:BirdeeHub/nixCats-nvim#example.
This commit is contained in:
		
						commit
						9a78fd2d53
					
				
					 21 changed files with 2208 additions and 0 deletions
				
			
		
							
								
								
									
										166
									
								
								lua/myLuaConf/LSPs/init.lua
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										166
									
								
								lua/myLuaConf/LSPs/init.lua
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,166 @@
 | 
			
		|||
local catUtils = require('nixCatsUtils')
 | 
			
		||||
if (catUtils.isNixCats and nixCats('lspDebugMode')) then
 | 
			
		||||
  vim.lsp.set_log_level("debug")
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
-- NOTE: This file uses lzextras.lsp handler https://github.com/BirdeeHub/lzextras?tab=readme-ov-file#lsp-handler
 | 
			
		||||
-- This is a slightly more performant fallback function
 | 
			
		||||
-- for when you don't provide a filetype to trigger on yourself.
 | 
			
		||||
-- nixCats gives us the paths, which is faster than searching the rtp!
 | 
			
		||||
local old_ft_fallback = require('lze').h.lsp.get_ft_fallback()
 | 
			
		||||
require('lze').h.lsp.set_ft_fallback(function(name)
 | 
			
		||||
  local lspcfg = nixCats.pawsible({ "allPlugins", "opt", "nvim-lspconfig" }) or nixCats.pawsible({ "allPlugins", "start", "nvim-lspconfig" })
 | 
			
		||||
  if lspcfg then
 | 
			
		||||
    local ok, cfg = pcall(dofile, lspcfg .. "/lsp/" .. name .. ".lua")
 | 
			
		||||
    if not ok then
 | 
			
		||||
      ok, cfg = pcall(dofile, lspcfg .. "/lua/lspconfig/configs/" .. name .. ".lua")
 | 
			
		||||
    end
 | 
			
		||||
    return (ok and cfg or {}).filetypes or {}
 | 
			
		||||
  else
 | 
			
		||||
    return old_ft_fallback(name)
 | 
			
		||||
  end
 | 
			
		||||
end)
 | 
			
		||||
require('lze').load {
 | 
			
		||||
  {
 | 
			
		||||
    "nvim-lspconfig",
 | 
			
		||||
    for_cat = "general.core",
 | 
			
		||||
    on_require = { "lspconfig" },
 | 
			
		||||
    -- NOTE: define a function for lsp,
 | 
			
		||||
    -- and it will run for all specs with type(plugin.lsp) == table
 | 
			
		||||
    -- when their filetype trigger loads them
 | 
			
		||||
    lsp = function(plugin)
 | 
			
		||||
      vim.lsp.config(plugin.name, plugin.lsp or {})
 | 
			
		||||
      vim.lsp.enable(plugin.name)
 | 
			
		||||
    end,
 | 
			
		||||
    before = function(_)
 | 
			
		||||
      vim.lsp.config('*', {
 | 
			
		||||
        on_attach = require('myLuaConf.LSPs.on_attach'),
 | 
			
		||||
      })
 | 
			
		||||
    end,
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "mason.nvim",
 | 
			
		||||
    -- only run it when not on nix
 | 
			
		||||
    enabled = not catUtils.isNixCats,
 | 
			
		||||
    on_plugin = { "nvim-lspconfig" },
 | 
			
		||||
    load = function(name)
 | 
			
		||||
      vim.cmd.packadd(name)
 | 
			
		||||
      vim.cmd.packadd("mason-lspconfig.nvim")
 | 
			
		||||
      require('mason').setup()
 | 
			
		||||
      -- auto install will make it install servers when lspconfig is called on them.
 | 
			
		||||
      require('mason-lspconfig').setup { automatic_installation = true, }
 | 
			
		||||
    end,
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    -- lazydev makes your lsp way better in your config without needing extra lsp configuration.
 | 
			
		||||
    "lazydev.nvim",
 | 
			
		||||
    for_cat = "neonixdev",
 | 
			
		||||
    cmd = { "LazyDev" },
 | 
			
		||||
    ft = "lua",
 | 
			
		||||
    after = function(_)
 | 
			
		||||
      require('lazydev').setup({
 | 
			
		||||
        library = {
 | 
			
		||||
          { words = { "nixCats" }, path = (nixCats.nixCatsPath or "") .. '/lua' },
 | 
			
		||||
        },
 | 
			
		||||
      })
 | 
			
		||||
    end,
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    -- name of the lsp
 | 
			
		||||
    "lua_ls",
 | 
			
		||||
    enabled = nixCats('lua') or nixCats('neonixdev') or false,
 | 
			
		||||
    -- provide a table containing filetypes,
 | 
			
		||||
    -- and then whatever your functions defined in the function type specs expect.
 | 
			
		||||
    -- in our case, it just expects the normal lspconfig setup options,
 | 
			
		||||
    -- but with a default on_attach and capabilities
 | 
			
		||||
    lsp = {
 | 
			
		||||
      -- if you provide the filetypes it doesn't ask lspconfig for the filetypes
 | 
			
		||||
      filetypes = { 'lua' },
 | 
			
		||||
      settings = {
 | 
			
		||||
        Lua = {
 | 
			
		||||
          runtime = { version = 'LuaJIT' },
 | 
			
		||||
          formatters = {
 | 
			
		||||
            ignoreComments = true,
 | 
			
		||||
          },
 | 
			
		||||
          signatureHelp = { enabled = true },
 | 
			
		||||
          diagnostics = {
 | 
			
		||||
            globals = { "nixCats", "vim", },
 | 
			
		||||
            disable = { 'missing-fields' },
 | 
			
		||||
          },
 | 
			
		||||
          telemetry = { enabled = false },
 | 
			
		||||
        },
 | 
			
		||||
      },
 | 
			
		||||
    },
 | 
			
		||||
    -- also these are regular specs and you can use before and after and all the other normal fields
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "gopls",
 | 
			
		||||
    for_cat = "go",
 | 
			
		||||
    -- if you don't provide the filetypes it asks lspconfig for them
 | 
			
		||||
    lsp = {
 | 
			
		||||
      filetypes = { "go", "gomod", "gowork", "gotmpl" },
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "rnix",
 | 
			
		||||
    -- mason doesn't have nixd
 | 
			
		||||
    enabled = not catUtils.isNixCats,
 | 
			
		||||
    lsp = {
 | 
			
		||||
      filetypes = { "nix" },
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "nil_ls",
 | 
			
		||||
    -- mason doesn't have nixd
 | 
			
		||||
    enabled = not catUtils.isNixCats,
 | 
			
		||||
    lsp = {
 | 
			
		||||
      filetypes = { "nix" },
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "nixd",
 | 
			
		||||
    enabled = catUtils.isNixCats and (nixCats('nix') or nixCats('neonixdev')) or false,
 | 
			
		||||
    lsp = {
 | 
			
		||||
      filetypes = { "nix" },
 | 
			
		||||
      settings = {
 | 
			
		||||
        nixd = {
 | 
			
		||||
          -- nixd requires some configuration.
 | 
			
		||||
          -- luckily, the nixCats plugin is here to pass whatever we need!
 | 
			
		||||
          -- we passed this in via the `extra` table in our packageDefinitions
 | 
			
		||||
          -- for additional configuration options, refer to:
 | 
			
		||||
          -- https://github.com/nix-community/nixd/blob/main/nixd/docs/configuration.md
 | 
			
		||||
          nixpkgs = {
 | 
			
		||||
            -- in the extras set of your package definition:
 | 
			
		||||
            -- nixdExtras.nixpkgs = ''import ${pkgs.path} {}''
 | 
			
		||||
            expr = nixCats.extra("nixdExtras.nixpkgs") or [[import <nixpkgs> {}]],
 | 
			
		||||
          },
 | 
			
		||||
          options = {
 | 
			
		||||
            -- If you integrated with your system flake,
 | 
			
		||||
            -- you should use inputs.self as the path to your system flake
 | 
			
		||||
            -- that way it will ALWAYS work, regardless
 | 
			
		||||
            -- of where your config actually was.
 | 
			
		||||
            nixos = {
 | 
			
		||||
              -- nixdExtras.nixos_options = ''(builtins.getFlake "path:${builtins.toString inputs.self.outPath}").nixosConfigurations.configname.options''
 | 
			
		||||
              expr = nixCats.extra("nixdExtras.nixos_options")
 | 
			
		||||
            },
 | 
			
		||||
            -- If you have your config as a separate flake, inputs.self would be referring to the wrong flake.
 | 
			
		||||
            -- You can override the correct one into your package definition on import in your main configuration,
 | 
			
		||||
            -- or just put an absolute path to where it usually is and accept the impurity.
 | 
			
		||||
            ["home-manager"] = {
 | 
			
		||||
              -- nixdExtras.home_manager_options = ''(builtins.getFlake "path:${builtins.toString inputs.self.outPath}").homeConfigurations.configname.options''
 | 
			
		||||
              expr = nixCats.extra("nixdExtras.home_manager_options")
 | 
			
		||||
            }
 | 
			
		||||
          },
 | 
			
		||||
          formatting = {
 | 
			
		||||
            command = { "nixfmt" }
 | 
			
		||||
          },
 | 
			
		||||
          diagnostic = {
 | 
			
		||||
            suppress = {
 | 
			
		||||
              "sema-escaping-with"
 | 
			
		||||
            }
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      },
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
}
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue