aboutsummaryrefslogtreecommitdiff
path: root/env/.config/nvim
diff options
context:
space:
mode:
Diffstat (limited to 'env/.config/nvim')
-rwxr-xr-xenv/.config/nvim/.luarc.json5
-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
-rwxr-xr-xenv/.config/nvim/lua/yourmom/packer.lua74
5 files changed, 218 insertions, 79 deletions
diff --git a/env/.config/nvim/.luarc.json b/env/.config/nvim/.luarc.json
index 05deadc..0a9771d 100755
--- a/env/.config/nvim/.luarc.json
+++ b/env/.config/nvim/.luarc.json
@@ -10,5 +10,8 @@
"workspace.library": [
"$VIMRUNTIME",
"./lua"
- ]
+ ],
+ "diagnostics.disable": [
+ "deprecated"
+ ]
}
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
diff --git a/env/.config/nvim/lua/yourmom/packer.lua b/env/.config/nvim/lua/yourmom/packer.lua
index 4378a22..78a8324 100755
--- a/env/.config/nvim/lua/yourmom/packer.lua
+++ b/env/.config/nvim/lua/yourmom/packer.lua
@@ -4,15 +4,17 @@
vim.cmd [[packadd packer.nvim]]
return require('packer').startup(function(use)
- -- Packer can manage itself
-
use 'wbthomason/packer.nvim'
- use 'ThePrimeagen/vim-be-good'
- use 'ThePrimeagen/harpoon'
+ -- # learning
+ use 'ThePrimeagen/vim-be-good'
+ -- use 'vuciv/golf' --vim daily task
use 'm4xshen/hardtime.nvim'
+
+ -- # niceties
+
use 'rcarriga/nvim-notify'
use { "rose-pine/neovim", as = "rose-pine" }
@@ -22,26 +24,19 @@ return require('packer').startup(function(use)
use '3rd/image.nvim'
- use {
- 'nvim-telescope/telescope.nvim', tag = '0.1.8', -- 0.1.5
- -- or , branch = '0.1.x',
- requires = { {'nvim-lua/plenary.nvim'} }
- }
-
- use("mbbill/undotree")
use "lukas-reineke/indent-blankline.nvim"
use({ "NStefan002/screenkey.nvim", tag = "*" })
- use("catgoose/nvim-colorizer.lua")
+ use("catgoose/nvim-colorizer.lua")
use {
'nvim-lualine/lualine.nvim',
--requires = { 'nvim-tree/nvim-web-devicons', opt = true }
}
---[[
+ --[[
use('nvim-treesitter/nvim-treesitter', {run = ':TSUpdate',
config = function()
require("nvim-treesitter.configs").setup {
@@ -52,30 +47,53 @@ return require('packer').startup(function(use)
})
]]--
+ use 'tpope/vim-fugitive'
+
+
+ -- # main dev requirements
+
+ use 'ThePrimeagen/harpoon'
+ use("mbbill/undotree")
+
use {
- 'VonHeikemen/lsp-zero.nvim',
- branch = 'v3.x',
- requires = {
- --- Uncomment the two plugins below if you want to manage the language servers from neovim
- {'williamboman/mason.nvim'},
- {'williamboman/mason-lspconfig.nvim'},
+ 'nvim-telescope/telescope.nvim', tag = '0.1.8', -- 0.1.5
+ -- or , branch = '0.1.x',
+ requires = { {'nvim-lua/plenary.nvim'} }
+ }
- -- LSP Support
- {'neovim/nvim-lspconfig'},
+ use {
+ 'neovim/nvim-lspconfig',
+ requires = {
+ 'williamboman/mason.nvim',
+ 'williamboman/mason-lspconfig.nvim',
-- Autocompletion
- {'hrsh7th/nvim-cmp'},
- {'hrsh7th/cmp-buffer'},
- {'hrsh7th/cmp-path'},
- {'hrsh7th/cmp-nvim-lsp'},
- {'hrsh7th/cmp-nvim-lua'},
- {'L3MON4D3/LuaSnip'},
+ 'hrsh7th/cmp-nvim-lsp',
+ 'hrsh7th/cmp-buffer',
+ 'hrsh7th/cmp-path',
+ 'hrsh7th/cmp-cmdline',
+ 'hrsh7th/nvim-cmp',
+ --snippets
+ 'L3MON4D3/LuaSnip',
+ 'saadparwaiz1/cmp_luasnip',
+ 'rafamadriz/friendly-snippets',
}
}
+ use 'folke/trouble.nvim'
use 'mfussenegger/nvim-lint'
-
use 'nvimtools/none-ls.nvim'
+ -- to dap, or not to dap? tis the question
+ --use 'mfussenegger/nvim-dap'
+ --use { "rcarriga/nvim-dap-ui", requires = {"mfussenegger/nvim-dap", "nvim-neotest/nvim-nio"} }
+ --[[
+ use {
+ "williamboman/mason.nvim",
+ "mfussenegger/nvim-dap",
+ "jay-babu/mason-nvim-dap.nvim",
+ }
+ --]]
+
use({ "iamcco/markdown-preview.nvim", run = "cd app && npm install", setup = function() vim.g.mkdp_filetypes = { "markdown" } end, ft = { "markdown" }, })
-- use({