mirror of
https://github.com/mitchell/dotfiles.git
synced 2025-12-18 04:47:22 +00:00
Breakup Neovim config into Lua modules
This commit is contained in:
parent
3179a5b48d
commit
1517f56c86
11 changed files with 662 additions and 584 deletions
70
.config/nvim/lua/plugins/lsp_completion.lua
Normal file
70
.config/nvim/lua/plugins/lsp_completion.lua
Normal file
|
|
@ -0,0 +1,70 @@
|
|||
-- lua/plugins/lsp_completion.lua
|
||||
|
||||
return {
|
||||
{
|
||||
"saghen/blink.cmp",
|
||||
dependencies = { "rafamadriz/friendly-snippets" },
|
||||
version = "1.*",
|
||||
opts = {},
|
||||
opts_extend = { "sources.default" },
|
||||
},
|
||||
{
|
||||
"neovim/nvim-lspconfig",
|
||||
dependencies = { "saghen/blink.cmp" },
|
||||
config = function()
|
||||
local on_attach = function(client, bufnr)
|
||||
vim.api.nvim_buf_set_option(bufnr, "omnifunc", "v:lua.vim.lsp.omnifunc")
|
||||
local bufopts = { silent = true, buffer = bufnr }
|
||||
vim.keymap.set("n", "<leader>h", vim.lsp.buf.hover, bufopts)
|
||||
vim.keymap.set("n", "<C-k>", vim.lsp.buf.signature_help, bufopts)
|
||||
vim.keymap.set("n", "<leader>wa", vim.lsp.buf.add_workspace_folder, bufopts)
|
||||
vim.keymap.set("n", "<leader>wr", vim.lsp.buf.remove_workspace_folder, bufopts)
|
||||
vim.keymap.set("n", "<leader>wl", function()
|
||||
print(vim.inspect(vim.lsp.buf.list_workspace_folders()))
|
||||
end, bufopts)
|
||||
vim.keymap.set("n", "<leader>m", vim.lsp.buf.code_action, bufopts)
|
||||
vim.keymap.set("n", "<leader>r", vim.lsp.buf.rename, bufopts)
|
||||
vim.keymap.set("n", "<leader>F", function()
|
||||
vim.lsp.buf.format({ async = true })
|
||||
end, bufopts)
|
||||
end
|
||||
|
||||
local capabilities = require("blink.cmp").get_lsp_capabilities()
|
||||
local lsp_flags = { debounce_text_changes = 150 }
|
||||
local vue_plugin_location = vim.fn.expand("$HOME/.bun/install/global/node_modules/@vue/typescript-plugin")
|
||||
|
||||
vim.lsp.config("ts_ls", {
|
||||
on_attach = on_attach,
|
||||
capabilities = capabilities,
|
||||
flags = lsp_flags,
|
||||
filetypes = { "javascript", "typescript", "javascriptreact", "typescriptreact", "vue" },
|
||||
init_options = {
|
||||
plugins = {
|
||||
{
|
||||
name = "@vue/typescript-plugin",
|
||||
location = vue_plugin_location,
|
||||
languages = { "javascript", "typescript", "vue" },
|
||||
},
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
vim.lsp.enable("ts_ls")
|
||||
|
||||
require("lspconfig").volar.setup({
|
||||
on_attach = on_attach,
|
||||
capabilities = capabilities,
|
||||
})
|
||||
|
||||
local servers = { "elixirls", "gopls", "pylsp", "svelte" }
|
||||
for _, server_name in ipairs(servers) do
|
||||
vim.lsp.config(server_name, {
|
||||
on_attach = on_attach,
|
||||
capabilities = capabilities,
|
||||
flags = lsp_flags,
|
||||
})
|
||||
vim.lsp.enable(server_name)
|
||||
end
|
||||
end,
|
||||
},
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue