aboutsummaryrefslogtreecommitdiff
path: root/env/.config/nvim/after
diff options
context:
space:
mode:
authoriceyrazor <iceyrazor@mailfence.com>2025-06-08 00:09:28 -0500
committericeyrazor <iceyrazor@mailfence.com>2025-06-08 00:09:28 -0500
commit01b58f09b74cf22cbdbdc24dbdc8b62fed15f21e (patch)
tree78b3e2a4b0777afe5c0cf54949e7528f2ef82b79 /env/.config/nvim/after
parentb69040fda091cb2a55e00c05e924cd0c0a42cb57 (diff)
removed lsp-zero and reconfigured lsp. setup cmp more throughly. added snippets. made packer file a bit more organized.
Diffstat (limited to 'env/.config/nvim/after')
-rw-r--r--[-rwxr-xr-x]env/.config/nvim/after/plugin/lsp.lua192
-rw-r--r--env/.config/nvim/after/plugin/null-ls.lua8
-rw-r--r--env/.config/nvim/after/plugin/snippets.lua18
3 files changed, 168 insertions, 50 deletions
diff --git a/env/.config/nvim/after/plugin/lsp.lua b/env/.config/nvim/after/plugin/lsp.lua
index 1f20362..813261b 100755..100644
--- a/env/.config/nvim/after/plugin/lsp.lua
+++ b/env/.config/nvim/after/plugin/lsp.lua
@@ -1,50 +1,120 @@
-local ok, _ = pcall(require, 'lsp-zero')
-if ok then
- vim.api.nvim_create_autocmd("FileType", {
- pattern = "src",
- callback = function()
- print("LSP should now be active for src files")
- end,
- })
+local on_atk = function(ev)
+ local opts = {buffer = ev.buf, remap = false}
- local lsp = require("lsp-zero")
+ vim.keymap.set("n", "gd", function() vim.lsp.buf.definition() end, opts)
+ vim.keymap.set("n", "K", function() vim.lsp.buf.hover() end, opts)
+ vim.keymap.set("n", "<leader>vws", function() vim.lsp.buf.workspace_symbol() end, opts)
+ vim.keymap.set("n", "<leader>vd", function() vim.diagnostic.open_float() end, opts)
+ vim.keymap.set("n", "[d", function() vim.diagnostic.goto_next() end, opts)
+ vim.keymap.set("n", "]d", function() vim.diagnostic.goto_prev() end, opts)
+ vim.keymap.set("n", "<leader>vca", function() vim.lsp.buf.code_action() end, opts)
+ vim.keymap.set("n", "<leader>vrr", function() vim.lsp.buf.references() end, opts)
+ vim.keymap.set("n", "<leader>vrn", function() vim.lsp.buf.rename() end, opts)
+ vim.keymap.set("i", "<C-h>", function() vim.lsp.buf.signature_help() end, opts)
+end
+
+local ok, trouble = pcall(require, 'trouble')
+if ok then
+ trouble.setup({ icons = {} })
+ vim.keymap.set("n", "<leader>tt", "<cmd>Trouble diagnostics toggle<cr>")
- lsp.preset("recommended")
+ vim.keymap.set("n", "[t", function()
+ trouble.next({skip_groups = true, jump = true})
+ end)
+ vim.keymap.set("n", "]t", function()
+ trouble.prev({skip_groups = true, jump = true})
+ end)
+end
- local cmp = require('cmp')
+local ok, cmp = pcall(require, 'cmp')
+if ok then
local cmp_select = {behavior = cmp.SelectBehavior.Select}
- local cmp_mappings = cmp.mapping.preset.insert({
- ['<C-p>'] = cmp.mapping.select_prev_item(cmp_select),
- ['<C-n>'] = cmp.mapping.select_next_item(cmp_select),
- ['<C-y>'] = cmp.mapping.confirm({ select = true }),
- ["<C-Space>"] = cmp.mapping.complete(),
+ cmp.setup({
+ snippet = {
+ expand = function(args)
+ require('luasnip').lsp_expand(args.body)
+ end,
+ },
+ window = {
+ completion = cmp.config.window.bordered(),
+ documentation = cmp.config.window.bordered(),
+ },
+ mapping = cmp.mapping.preset.insert({
+ ['<C-b>'] = cmp.mapping.scroll_docs(-4),
+ ['<C-f>'] = cmp.mapping.scroll_docs(4),
+ ['<C-e>'] = cmp.mapping.abort(),
+ ['<C-p>'] = cmp.mapping.select_prev_item(cmp_select),
+ ['<C-n>'] = cmp.mapping.select_next_item(cmp_select),
+ ['<C-y>'] = cmp.mapping.confirm({ select = true }),
+ ["<C-Space>"] = cmp.mapping.complete(),
+ -- ['<CR>'] = cmp.mapping.confirm({ select = true }), -- Accept currently selected item. Set `select` to `false` to only confirm explicitly selected items.
+ }),
+ sources = cmp.config.sources({
+ { name = 'nvim_lsp' },
+ { name = 'luasnip' },
+ }, {
+ { name = 'buffer' },
+ })
})
- cmp.setup({
- mapping = cmp_mappings,
+ -- To use git you need to install the plugin petertriho/cmp-git and uncomment lines below
+ -- Set configuration for specific filetype.
+ --[[ cmp.setup.filetype('gitcommit', {
+ sources = cmp.config.sources({
+ { name = 'git' },
+ }, {
+ { name = 'buffer' },
+ })
})
+ require("cmp_git").setup() ]]--
- vim.diagnostic.config({
- virtual_text = true,
+ -- Use buffer source for `/` and `?` (if you enabled `native_menu`, this won't work anymore).
+ cmp.setup.cmdline({ '/', '?' }, {
+ mapping = cmp.mapping.preset.cmdline(),
+ sources = {
+ { name = 'buffer' }
+ }
+ })
+
+ -- Use cmdline & path source for ':' (if you enabled `native_menu`, this won't work anymore).
+ cmp.setup.cmdline(':', {
+ mapping = cmp.mapping.preset.cmdline(),
+ sources = cmp.config.sources({
+ { name = 'path' }
+ }, {
+ { name = 'cmdline' }
+ }),
+ matching = { disallow_symbol_nonprefix_matching = false }
})
+end
- lsp.on_attach(function(client, bufnr)
- local opts = {buffer = bufnr, remap = false}
- vim.keymap.set("n", "gd", function() vim.lsp.buf.definition() end, opts)
- vim.keymap.set("n", "K", function() vim.lsp.buf.hover() end, opts)
- vim.keymap.set("n", "<leader>vws", function() vim.lsp.buf.workspace_symbol() end, opts)
- vim.keymap.set("n", "<leader>vd", function() vim.diagnostic.open_float() end, opts)
- vim.keymap.set("n", "[d", function() vim.diagnostic.goto_next() end, opts)
- vim.keymap.set("n", "]d", function() vim.diagnostic.goto_prev() end, opts)
- vim.keymap.set("n", "<leader>vca", function() vim.lsp.buf.code_action() end, opts)
- vim.keymap.set("n", "<leader>vrr", function() vim.lsp.buf.references() end, opts)
- vim.keymap.set("n", "<leader>vrn", function() vim.lsp.buf.rename() end, opts)
- vim.keymap.set("i", "<C-h>", function() vim.lsp.buf.signature_help() end, opts)
- end)
+local ok, lsp = pcall(require, 'lspconfig')
+if ok then
+ vim.api.nvim_create_autocmd("FileType", {
+ pattern = "src",
+ callback = function()
+ print("LSP should now be active for src files")
+ end,
+ })
+
+
+ vim.diagnostic.config({
+ update_in_insert = true,
+ float = {
+ focusable = false,
+ style = "minimal",
+ border = "rounded",
+ source = "always",
+ header = "",
+ prefix = "",
+ }
+ })
+
+ vim.diagnostic.config({ virtual_text = true })
local lsp_configurations = require('lspconfig.configs')
@@ -59,31 +129,53 @@ if ok then
}
end
- -- to learn how to use mason.nvim with lsp-zero
- -- read this: https://github.com/VonHeikemen/lsp-zero.nvim/blob/v3.x/doc/md/guides/integrate-with-mason-nvim.md
+
+ local capabilities = vim.tbl_deep_extend(
+ "force",
+ {},
+ vim.lsp.protocol.make_client_capabilities(),
+ require('cmp_nvim_lsp').default_capabilities()
+ )
+
require('mason').setup({
registries = {
"github:mason-org/mason-registry",
},
})
require('mason-lspconfig').setup({
- ensure_installed = { },
- handlers = {
- lsp.default_setup,
+ ensure_installed = {
+ --"markdownlint-cli2",
+ --"markdown-toc",
+ "bashls",
+ "clangd",
+ "html",
+ "cssls",
+ "lua_ls",
+ "rust_analyzer",
+ "ts_ls",
},
+ handlers = {
+ function(server_name)
+ lsp[server_name].setup{capabilities = capabilities}
+ end,
+ ["lua_ls"] = function ()
+ lsp.lua_ls.setup {
+ capabilities = capabilities,
+ settings = {
+ Lua ={
+ diagnostics = {
+ globasl = { "vim" }
+ }
+ }
+ }
+ }
+ end
+ }
})
- require('lspconfig').greybel.setup({})
-
- lsp.setup()
-end
-
-
+ lsp.greybel.setup({})
-local ok, null_ls = pcall(require, 'null-ls')
-if ok then
- null_ls.setup({
- sources = {
- null_ls.builtins.diagnostics.markdownlint_cli2,
- },
+ vim.api.nvim_create_autocmd('LspAttach', {
+ group = vim.api.nvim_create_augroup('my.lsp', {}),
+ callback = on_atk
})
end
diff --git a/env/.config/nvim/after/plugin/null-ls.lua b/env/.config/nvim/after/plugin/null-ls.lua
new file mode 100644
index 0000000..6eaaf1c
--- /dev/null
+++ b/env/.config/nvim/after/plugin/null-ls.lua
@@ -0,0 +1,8 @@
+local ok, null_ls = pcall(require, 'null-ls')
+if ok then
+ null_ls.setup({
+ sources = {
+ null_ls.builtins.diagnostics.markdownlint_cli2,
+ },
+ })
+end
diff --git a/env/.config/nvim/after/plugin/snippets.lua b/env/.config/nvim/after/plugin/snippets.lua
new file mode 100644
index 0000000..6bf38ab
--- /dev/null
+++ b/env/.config/nvim/after/plugin/snippets.lua
@@ -0,0 +1,18 @@
+local ok, luasnip= pcall(require, 'luasnip')
+if ok then
+ luasnip.filetype_extend("javascript", { "jsdoc" })
+ luasnip.filetype_extend("lua", { "luadoc" })
+ luasnip.filetype_extend("rust", { "rustdoc" })
+ luasnip.filetype_extend("c", { "cdoc" })
+
+ vim.keymap.set({"i"}, "<C-s>e", function() luasnip.expand() end, {silent = true})
+
+ vim.keymap.set({"i", "s"}, "<C-s>;", function() luasnip.jump(1) end, {silent = true})
+ vim.keymap.set({"i", "s"}, "<C-s>,", function() luasnip.jump(-1) end, {silent = true})
+
+ vim.keymap.set({"i", "s"}, "<C-E>", function()
+ if luasnip.choice_active() then
+ luasnip.change_choice(1)
+ end
+ end, {silent = true})
+end