summaryrefslogtreecommitdiff
path: root/lua/bee/LSPs/init.lua
diff options
context:
space:
mode:
Diffstat (limited to 'lua/bee/LSPs/init.lua')
-rw-r--r--lua/bee/LSPs/init.lua148
1 files changed, 148 insertions, 0 deletions
diff --git a/lua/bee/LSPs/init.lua b/lua/bee/LSPs/init.lua
new file mode 100644
index 0000000..3bc86a5
--- /dev/null
+++ b/lua/bee/LSPs/init.lua
@@ -0,0 +1,148 @@
+local MP = ...
+local get_nixd_opts = nixInfo(nil, "info", "nixdExtras", "get_configs")
+return {
+ {
+ "mason.nvim",
+ auto_enable = true,
+ priority = 55,
+ on_plugin = { "nvim-lspconfig" },
+ lsp = function(plugin)
+ vim.cmd.MasonInstall(plugin.name)
+ end,
+ },
+ {
+ "nvim-lspconfig",
+ auto_enable = true,
+ priority = 50,
+ 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(MP:relpath("on_attach")),
+ })
+ end,
+ },
+ {
+ "lua_ls",
+ for_cat = "lua",
+ lsp = {
+ filetypes = { "lua" },
+ settings = {
+ Lua = {
+ runtime = { version = "LuaJIT" },
+ formatters = {
+ ignoreComments = true,
+ },
+ signatureHelp = { enabled = true },
+ diagnostics = {
+ globals = { "vim", "make_test" },
+ disable = {},
+ },
+ workspace = {
+ checkThirdParty = false,
+ library = {
+ -- '${3rd}/luv/library',
+ -- unpack(vim.api.nvim_get_runtime_file('', true)),
+ },
+ },
+ completion = {
+ callSnippet = "Replace",
+ },
+ telemetry = { enabled = false },
+ },
+ },
+ },
+ },
+ {
+ "nixd",
+ for_cat = "nix",
+ after = function(_)
+ vim.api.nvim_create_user_command("StartNilLSP", function()
+ vim.lsp.start(vim.lsp.config.nil_ls)
+ end, { desc = "Run nil-ls (when you really need docs for the builtins and nixd refuse)" })
+ end,
+ lsp = {
+ filetypes = { "nix" },
+ settings = {
+ nixd = {
+ nixpkgs = {
+ expr = nixInfo("import <nixpkgs> {}", "info", "nixdExtras", "nixpkgs"),
+ },
+ formatting = {
+ command = { "nixfmt" },
+ },
+ options = {
+ -- (builtins.getFlake "path:${builtins.toString <path_to_system_flake>}").legacyPackages.<system>.nixosConfigurations."<user@host>".options
+ nixos = {
+ expr = get_nixd_opts
+ and get_nixd_opts("nixos", nixInfo(nil, "info", "nixdExtras", "flake-path")),
+ },
+ -- (builtins.getFlake "path:${builtins.toString <path_to_system_flake>}").legacyPackages.<system>.homeConfigurations."<user@host>".options
+ ["home-manager"] = {
+ expr = get_nixd_opts
+ and get_nixd_opts("home-manager", nixInfo(nil, "info", "nixdExtras", "flake-path")), -- <- if flake-path is nil it will be lsp root dir
+ },
+ },
+ diagnostic = {
+ suppress = {
+ "sema-escaping-with",
+ },
+ },
+ },
+ },
+ },
+ },
+ {
+ "clangd",
+ for_cat = "C",
+ lsp = {
+ filetypes = { "c", "cpp", "objc", "objcpp", "cuda", "proto" },
+ on_attach = function(client, bufnr)
+ require(MP:relpath("on_attach"))(client, bufnr)
+ -- the stuff they were adding that was overriding my on_attach
+ dofile(nixInfo.utils.get_nix_plugin_path("nvim-lspconfig") .. "/lsp/clangd.lua").on_attach(
+ client,
+ bufnr
+ )
+ end,
+ -- unneded thanks to clangd_extensions-nvim I think
+ -- settings = {
+ -- clangd_config = {
+ -- init_options = {
+ -- compilationDatabasePath="./build",
+ -- },
+ -- }
+ -- }
+ },
+ },
+ {
+ "gopls",
+ for_cat = "go",
+ lsp = {
+ filetypes = { "go", "gomod", "gowork", "gotmpl", "templ" },
+ },
+ },
+ {
+ "zls",
+ for_cat = "zig",
+ lsp = {
+ filetypes = { "zig", "zir" },
+ },
+ },
+ {
+ "rust_analyzer",
+ for_cat = "rust",
+ lsp = {
+ filetypes = { "rust" },
+ },
+ },
+ {
+ "bashls",
+ for_cat = "bash",
+ lsp = {
+ filetypes = { "bash", "sh" },
+ },
+ },
+}