Refactor neovim config file structure

All plugins are now in their own files with their lazy specifications
and configurations. Also moved lazy initialization to init.lua because
it is very compact now
This commit is contained in:
Marko Korhonen 2023-11-18 02:27:14 +02:00
parent 902c397e8b
commit 0ced314c90
Signed by: FunctionalHacker
GPG key ID: A7F78BCB859CD890
36 changed files with 554 additions and 584 deletions

View file

@ -1,4 +1,18 @@
-- Install lazy if it's not yet installed
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
if not vim.loop.fs_stat(lazypath) then
vim.fn.system({
"git",
"clone",
"--filter=blob:none",
"https://github.com/folke/lazy.nvim.git",
"--branch=stable", -- latest stable release
lazypath,
})
end
vim.opt.rtp:prepend(lazypath)
require("settings") require("settings")
require("neovide") require("neovide")
require("highlight_yank") require("highlight_yank")
require("plugins.lazy") require("lazy").setup("plugins")

View file

@ -11,7 +11,6 @@
"cmp-spell": { "branch": "master", "commit": "32a0867efa59b43edbb2db67b0871cfad90c9b66" }, "cmp-spell": { "branch": "master", "commit": "32a0867efa59b43edbb2db67b0871cfad90c9b66" },
"cmp_luasnip": { "branch": "master", "commit": "05a9ab28b53f71d1aece421ef32fee2cb857a843" }, "cmp_luasnip": { "branch": "master", "commit": "05a9ab28b53f71d1aece421ef32fee2cb857a843" },
"copilot-cmp": { "branch": "master", "commit": "72fbaa03695779f8349be3ac54fa8bd77eed3ee3" }, "copilot-cmp": { "branch": "master", "commit": "72fbaa03695779f8349be3ac54fa8bd77eed3ee3" },
"copilot.lua": { "branch": "master", "commit": "73047082d72fcfdde1f73b7f17ad495cffcbafaa" },
"dashboard-nvim": { "branch": "master", "commit": "63df28409d940f9cac0a925df09d3dc369db9841" }, "dashboard-nvim": { "branch": "master", "commit": "63df28409d940f9cac0a925df09d3dc369db9841" },
"emmylua-nvim": { "branch": "master", "commit": "50b2eead8af6499fbba708553148ee8156d6612e" }, "emmylua-nvim": { "branch": "master", "commit": "50b2eead8af6499fbba708553148ee8156d6612e" },
"firenvim": { "branch": "master", "commit": "138424db463e6c0e862a05166a4ccc781cd7c19d" }, "firenvim": { "branch": "master", "commit": "138424db463e6c0e862a05166a4ccc781cd7c19d" },
@ -22,7 +21,7 @@
"lazy.nvim": { "branch": "main", "commit": "96584866b9c5e998cbae300594d0ccfd0c464627" }, "lazy.nvim": { "branch": "main", "commit": "96584866b9c5e998cbae300594d0ccfd0c464627" },
"lualine.nvim": { "branch": "master", "commit": "2248ef254d0a1488a72041cfb45ca9caada6d994" }, "lualine.nvim": { "branch": "master", "commit": "2248ef254d0a1488a72041cfb45ca9caada6d994" },
"markdown-preview.nvim": { "branch": "master", "commit": "a923f5fc5ba36a3b17e289dc35dc17f66d0548ee" }, "markdown-preview.nvim": { "branch": "master", "commit": "a923f5fc5ba36a3b17e289dc35dc17f66d0548ee" },
"mason-lspconfig.nvim": { "branch": "main", "commit": "faeb361507aa1ef1b0e5645781e2aa0d36a4aa84" }, "mason-lspconfig.nvim": { "branch": "main", "commit": "ab640b38ca9fa50d25d2d249b6606b9456b628d5" },
"mason-tool-installer.nvim": { "branch": "main", "commit": "e4f34741daa9cf95de68a603d3e7a6844a69fdf0" }, "mason-tool-installer.nvim": { "branch": "main", "commit": "e4f34741daa9cf95de68a603d3e7a6844a69fdf0" },
"mason.nvim": { "branch": "main", "commit": "41e75af1f578e55ba050c863587cffde3556ffa6" }, "mason.nvim": { "branch": "main", "commit": "41e75af1f578e55ba050c863587cffde3556ffa6" },
"neoformat": { "branch": "master", "commit": "e5fe7e8f7c3dd071b90f19af0e8c7cfa56cdedc7" }, "neoformat": { "branch": "master", "commit": "e5fe7e8f7c3dd071b90f19af0e8c7cfa56cdedc7" },
@ -32,13 +31,13 @@
"nvim-autopairs": { "branch": "master", "commit": "0f04d78619cce9a5af4f355968040f7d675854a1" }, "nvim-autopairs": { "branch": "master", "commit": "0f04d78619cce9a5af4f355968040f7d675854a1" },
"nvim-cmp": { "branch": "main", "commit": "0b751f6beef40fd47375eaf53d3057e0bfa317e4" }, "nvim-cmp": { "branch": "main", "commit": "0b751f6beef40fd47375eaf53d3057e0bfa317e4" },
"nvim-colorizer.lua": { "branch": "master", "commit": "36c610a9717cc9ec426a07c8e6bf3b3abcb139d6" }, "nvim-colorizer.lua": { "branch": "master", "commit": "36c610a9717cc9ec426a07c8e6bf3b3abcb139d6" },
"nvim-dap": { "branch": "master", "commit": "9d81c11fd185a131f81841e64941859305f6c42d" }, "nvim-dap": { "branch": "master", "commit": "e154fdb6d70b3765d71f296e718b29d8b7026a63" },
"nvim-jdtls": { "branch": "master", "commit": "503a399e0d0b5d432068ab5ae24b9848891b0d53" }, "nvim-jdtls": { "branch": "master", "commit": "503a399e0d0b5d432068ab5ae24b9848891b0d53" },
"nvim-lspconfig": { "branch": "master", "commit": "29939f6f07bc0f3b9fc563fbfbee06ac88c8c439" }, "nvim-lspconfig": { "branch": "master", "commit": "48347089666d5b77d054088aa72e4e0b58026e6e" },
"nvim-navic": { "branch": "master", "commit": "0ffa7ffe6588f3417e680439872f5049e38a24db" }, "nvim-navic": { "branch": "master", "commit": "0ffa7ffe6588f3417e680439872f5049e38a24db" },
"nvim-notify": { "branch": "master", "commit": "e4a2022f4fec2d5ebc79afa612f96d8b11c627b3" }, "nvim-notify": { "branch": "master", "commit": "e4a2022f4fec2d5ebc79afa612f96d8b11c627b3" },
"nvim-tree.lua": { "branch": "master", "commit": "80cfeadf179d5cba76f0f502c71dbcff1b515cd8" }, "nvim-tree.lua": { "branch": "master", "commit": "80cfeadf179d5cba76f0f502c71dbcff1b515cd8" },
"nvim-treesitter": { "branch": "master", "commit": "73287b794d428843f20f9ae004bef2ce67ab3dbc" }, "nvim-treesitter": { "branch": "master", "commit": "557561fbc17269cdd4e9e88ef0ca1a9ff0bbf7e6" },
"nvim-ts-context-commentstring": { "branch": "main", "commit": "6c30f3c8915d7b31c3decdfe6c7672432da1809d" }, "nvim-ts-context-commentstring": { "branch": "main", "commit": "6c30f3c8915d7b31c3decdfe6c7672432da1809d" },
"nvim-web-devicons": { "branch": "master", "commit": "3523d6e6d40ab11fd66c1b2732b3d6b60affa951" }, "nvim-web-devicons": { "branch": "master", "commit": "3523d6e6d40ab11fd66c1b2732b3d6b60affa951" },
"password-store": { "branch": "master", "commit": "28cec11f1dbe6c4273d30370af45b69c9f408386" }, "password-store": { "branch": "master", "commit": "28cec11f1dbe6c4273d30370af45b69c9f408386" },

View file

@ -1,51 +1,9 @@
-- This module contains lsp related
-- reusable functions
local m = {} local m = {}
function m.setup() -- Map LSP specific keybinds.
require("mason").setup() -- This makes them only available when LSP is running
local mason_lsp = require("mason-lspconfig")
mason_lsp.setup()
local capabilities = m.get_capabilities()
mason_lsp.setup_handlers({
-- Default handler
function(server_name)
require("lspconfig")[server_name].setup({
on_attach = m.on_attach,
capabilities = capabilities,
})
end,
-- Override lua_ls settings
["lua_ls"] = function()
require("lspconfig").lua_ls.setup({
on_attach = m.on_attach,
capabilities = capabilities,
settings = {
Lua = {
runtime = {
-- Tell the language server which version of Lua you're using (most likely LuaJIT in the case of Neovim)
version = "LuaJIT",
},
diagnostics = {
-- Get the language server to recognize the `vim` global
globals = { "vim" },
},
workspace = {
-- Make the server aware of Neovim runtime files
library = vim.api.nvim_get_runtime_file("", true),
},
-- Do not send telemetry data containing a randomized but unique identifier
telemetry = { enable = false },
},
},
})
end,
-- Don't set up jdtls, it is set up by nvim-jdtls
["jdtls"] = function() end,
})
end
function m.map_keys() function m.map_keys()
local telescope_builtin = require("telescope.builtin") local telescope_builtin = require("telescope.builtin")
require("which-key").register({ require("which-key").register({
@ -83,6 +41,7 @@ function m.map_keys()
}) })
end end
function m.on_attach(client, bufnr) function m.on_attach(client, bufnr)
-- Attach navic if document symbols are available -- Attach navic if document symbols are available
if client.server_capabilities.documentSymbolProvider then if client.server_capabilities.documentSymbolProvider then

View file

@ -0,0 +1,13 @@
-- AsciiDoc plugins are grouped together here
return {
-- Vim ♥️ Asciidoctor
{
"habamax/vim-asciidoctor",
ft = { "asciidoctor", "asciidoc" },
},
-- AsciiDoc preview
{
"tigion/nvim-asciidoc-preview",
ft = { "asciidoctor", "asciidoc" },
},
}

View file

@ -0,0 +1,2 @@
-- Automatic brackets
return { "windwp/nvim-autopairs" }

View file

@ -0,0 +1,7 @@
return {
"akinsho/bufferline.nvim",
version = "*",
dependencies = { "kyazdani42/nvim-web-devicons" },
config = true,
--opts = { options = { themeable = true } },
}

View file

@ -0,0 +1,2 @@
-- Caddyfile syntax support
return { "isobit/vim-caddyfile", ft = "caddyfile" }

View file

@ -1,4 +1,18 @@
return function() -- Autoompletion
return {
"hrsh7th/nvim-cmp",
dependencies = {
"hrsh7th/cmp-buffer", -- Buffer source
{ "petertriho/cmp-git", dependencies = { "nvim-lua/plenary.nvim" } }, -- Git source
"hrsh7th/cmp-nvim-lsp", -- LSP source
"hrsh7th/cmp-nvim-lua", -- Neovim Lua API documentation source
"hrsh7th/cmp-path", -- Path source
"hrsh7th/cmp-cmdline", -- cmdline source
"saadparwaiz1/cmp_luasnip", -- Snippets source
"f3fora/cmp-spell", -- Spell check source
"zbirenbaum/copilot-cmp", -- Copilot source
},
config = function()
local cmp = require("cmp") local cmp = require("cmp")
local luasnip = require("luasnip") local luasnip = require("luasnip")
@ -61,15 +75,6 @@ return function()
{ name = "spell" }, { name = "spell" },
{ name = "path" }, { name = "path" },
}, },
-- window = {
-- completion = {
-- winhighlight = "Normal:Normal,FloatBorder:FloatBorder,CursorLine:Visual,Search:None",
-- },
-- documentation = {
-- winhighlight = "Normal:Normal,FloatBorder:FloatBorder,CursorLine:Visual,Search:None",
-- },
-- },
}) })
-- Enable autopairs when enter is processed -- Enable autopairs when enter is processed
@ -98,4 +103,5 @@ return function()
}, },
}), }),
}) })
end end,
}

View file

@ -0,0 +1,5 @@
-- treesitter plugin for commentstring
return {
"JoosepAlviste/nvim-ts-context-commentstring",
dependencies = { "tpope/vim-commentary" },
}

View file

@ -0,0 +1,9 @@
-- GitHub Copilot
return {
"zbirenbaum/copilot.lua",
config = true,
opts = {
suggestion = { enabled = false },
panel = { enabled = false },
},
}

View file

@ -1,4 +1,6 @@
return function() return {
"mfussenegger/nvim-dap",
config = function()
local dap = require("dap") local dap = require("dap")
dap.adapters.bashdb = { dap.adapters.bashdb = {
@ -28,4 +30,5 @@ return function()
terminalKind = "integrated", terminalKind = "integrated",
}, },
} }
end end,
}

View file

@ -1,5 +1,9 @@
return function() -- Startup dashboard
require("dashboard").setup({ return {
"glepnir/dashboard-nvim",
event = "VimEnter",
dependencies = { { "kyazdani42/nvim-web-devicons" } },
opts = {
theme = "hyper", theme = "hyper",
config = { config = {
week_header = { week_header = {
@ -18,5 +22,5 @@ return function()
{ icon = "", desc = "Quit", action = "q", key = "q" }, { icon = "", desc = "Quit", action = "q", key = "q" },
}, },
}, },
}) },
end }

View file

@ -0,0 +1,2 @@
-- vim api documentation for lua lsp
return { "ii14/emmylua-nvim", ft = { "lua" } }

View file

@ -0,0 +1,16 @@
-- Neovim inside Firefox
return {
"glacambre/firenvim",
build = function()
vim.fn["firenvim#install"](0)
end,
config = function()
vim.g.firenvim_config = {
localSettings = {
[".*"] = {
takeOver = "never",
},
},
}
end,
}

View file

@ -0,0 +1,2 @@
-- Git commands
return { "tpope/vim-fugitive" }

View file

@ -0,0 +1,15 @@
-- Git status in signcolumn
return {
"lewis6991/gitsigns.nvim",
config = function()
local gitsigns = require("gitsigns")
gitsigns.setup()
local wk = require("which-key")
wk.register({
["["] = { h = { gitsigns.prev_hunk, "Previous hunk" } },
["]"] = { h = { gitsigns.next_hunk, "Next hunk" } },
}, { prefix = "<leader>" })
end,
}

View file

@ -0,0 +1,2 @@
-- Edit GPG encrypted files transparently
return { "jamessan/vim-gnupg", ft = { "gpg" } }

View file

@ -1,4 +1,7 @@
return function() -- Indent characters
return {
"lukas-reineke/indent-blankline.nvim",
config = function()
require("ibl").setup({ require("ibl").setup({
exclude = { exclude = {
filetypes = { filetypes = {
@ -16,4 +19,5 @@ return function()
}, },
}, },
}) })
end end,
}

View file

@ -1,5 +1,7 @@
return function() -- Colorscheme
require("kanagawa").setup({ return {
"rebelot/kanagawa.nvim",
opts = {
compile = true, compile = true,
dimInactive = true, dimInactive = true,
colors = { colors = {
@ -42,7 +44,8 @@ return function()
PmenuThumb = { bg = theme.ui.bg_p2 }, PmenuThumb = { bg = theme.ui.bg_p2 },
} }
end, end,
}) },
config = function()
vim.cmd("colorscheme kanagawa") vim.cmd("colorscheme kanagawa")
end end,
}

View file

@ -1,246 +0,0 @@
-- Install lazy if it's not yet installed
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
if not vim.loop.fs_stat(lazypath) then
vim.fn.system({
"git",
"clone",
"--filter=blob:none",
"https://github.com/folke/lazy.nvim.git",
"--branch=stable", -- latest stable release
lazypath,
})
end
vim.opt.rtp:prepend(lazypath)
-- Configure lazy
local plugins = {
-- Colorscheme
{
"rebelot/kanagawa.nvim",
config = require("plugins.colorscheme"),
},
-- Replace much of neovim's default UI
-- with a modern replacement
{
"folke/noice.nvim",
event = "VeryLazy",
dependencies = { "MunifTanjim/nui.nvim", "rcarriga/nvim-notify" },
opts = require("plugins.noice"),
},
-- Statusline
{
"nvim-lualine/lualine.nvim",
dependencies = { "kyazdani42/nvim-web-devicons" },
config = require("plugins.lualine"),
},
-- bufferline
{
"akinsho/bufferline.nvim",
version = "v3.*",
dependencies = { "kyazdani42/nvim-web-devicons" },
config = true,
opts = { options = { themeable = true } },
},
-- Git status in signcolumn
{ "lewis6991/gitsigns.nvim", config = true },
-- Git commands
"tpope/vim-fugitive",
-- Indent characters
{ "lukas-reineke/indent-blankline.nvim", config = require("plugins.indent-blankline") },
-- Tree explorer
{
"kyazdani42/nvim-tree.lua",
dependencies = { "kyazdani42/nvim-web-devicons" },
config = require("plugins.nvim-tree"),
},
-- Telescope
{
"nvim-telescope/telescope.nvim",
config = require("plugins.telescope"),
dependencies = {
-- Internal dependency for telescope
"nvim-lua/plenary.nvim",
-- Use fzf for fuzzy finder
{
"nvim-telescope/telescope-fzf-native.nvim",
build = "make",
},
-- Replace vim built in select with telescope
"nvim-telescope/telescope-ui-select.nvim",
-- cd plugin for telescope
"zane-/cder.nvim",
},
},
-- Do stuff as sudo
"lambdalisue/suda.vim",
-- Display possible keybinds
{ "folke/which-key.nvim", config = require("plugins.which-key") },
-- Package manager for LSP servers, DAP adapters etc.
{
"williamboman/mason.nvim",
config = require("plugins.lsp").setup,
dependencies = {
"neovim/nvim-lspconfig",
"williamboman/mason-lspconfig.nvim",
"WhoIsSethDaniel/mason-tool-installer.nvim",
},
},
-- Additional LSP features for Java
"mfussenegger/nvim-jdtls",
-- Show code LSP context in winbar
{ "SmiteshP/nvim-navic", config = true, opts = { mouse = true } },
-- DAP plugin
{ "mfussenegger/nvim-dap", config = require("plugins.dap") },
-- Snippets plugin
{
"L3MON4D3/LuaSnip",
dependencies = { "rafamadriz/friendly-snippets" }, -- Snippets collection
config = require("plugins.luasnip"),
},
-- vim api documentation for lua lsp
{ "ii14/emmylua-nvim", ft = { "lua" } },
-- Completion
{
"hrsh7th/nvim-cmp",
dependencies = {
"hrsh7th/cmp-buffer", -- Buffer source
{ "petertriho/cmp-git", dependencies = { "nvim-lua/plenary.nvim" } }, -- Git source
"hrsh7th/cmp-nvim-lsp", -- LSP source
"hrsh7th/cmp-nvim-lua", -- Neovim Lua API documentation source
"hrsh7th/cmp-path", -- Path source
"hrsh7th/cmp-cmdline", -- cmdline source
"saadparwaiz1/cmp_luasnip", -- Snippets source
"f3fora/cmp-spell", -- Spell check source
"zbirenbaum/copilot-cmp", -- Copilot source
},
config = require("plugins.cmp"),
},
-- Automatic brackets
{
"windwp/nvim-autopairs",
config = true,
},
-- treesitter
{
"nvim-treesitter/nvim-treesitter",
build = function()
require("nvim-treesitter.install").update({ with_sync = true })
end,
config = require("plugins.treesitter"),
},
-- treesitter plugin for commentstring
"JoosepAlviste/nvim-ts-context-commentstring",
-- mappings for commenting in code
"tpope/vim-commentary",
-- we all know this one
"tpope/vim-surround",
-- Formatter plugin
"sbdchd/neoformat",
-- Make editing passwords safer
{
"https://git.zx2c4.com/password-store",
config = function(plugin)
vim.opt.rtp:append(plugin.dir .. "contrib/vim/redact_pass.vim")
end,
},
-- Neovim inside Firefox
{
"glacambre/firenvim",
build = function()
vim.fn["firenvim#install"](0)
end,
config = function()
vim.g.firenvim_config = {
localSettings = {
[".*"] = {
takeOver = "never",
},
},
}
end,
},
-- Vim ♥️ Asciidoctor
{ "habamax/vim-asciidoctor", ft = { "asciidoctor", "asciidoc" } },
-- Asciidoc preview
{ "tigion/nvim-asciidoc-preview", ft = { "asciidoctor", "asciidoc" } },
-- Markdown preview
{
"iamcco/markdown-preview.nvim",
build = "cd app && yarn install",
config = function()
vim.g.mkdp_filetypes = { "markdown" }
end,
ft = { "markdown" },
},
-- Edit GPG encrypted files transparently
{ "jamessan/vim-gnupg", ft = { "gpg" } },
-- High performance color highlighter
{
"norcalli/nvim-colorizer.lua",
config = true,
},
-- Caddyfile syntax support
{ "isobit/vim-caddyfile", ft = "caddyfile" },
-- Startup dashboard
{
"glepnir/dashboard-nvim",
event = "VimEnter",
config = require("plugins.dashboard"),
dependencies = { { "kyazdani42/nvim-web-devicons" } },
},
-- Better folds
{
enabled = false,
"kevinhwang91/nvim-ufo",
dependencies = { "kevinhwang91/promise-async" },
config = require("plugins.ufo"),
},
-- GitHub Copilot
{
"zbirenbaum/copilot.lua",
config = function()
require("copilot").setup({
suggestion = { enabled = false },
panel = { enabled = false },
})
end,
},
}
require("lazy").setup(plugins, { lockfile = "~/git/dotfiles/home/.config/nvim/lazy-lock.json" })

View file

@ -1,7 +1,10 @@
return function() -- Statusline
require("lualine").setup({ return {
"nvim-lualine/lualine.nvim",
dependencies = { "kyazdani42/nvim-web-devicons" },
opts = {
sections = { sections = {
lualine_c = { "navic" }, lualine_c = { "navic" },
}, },
}) },
end }

View file

@ -1,4 +1,9 @@
return function() -- Snippets plugin
return {
"L3MON4D3/LuaSnip",
dependencies = { "rafamadriz/friendly-snippets" }, -- Snippets collection
config = function()
-- load friendly-snippets to luasnip -- load friendly-snippets to luasnip
require("luasnip/loaders/from_vscode").lazy_load() require("luasnip/loaders/from_vscode").lazy_load()
end end,
}

View file

@ -0,0 +1,9 @@
-- Markdown preview
return {
"iamcco/markdown-preview.nvim",
build = "cd app && yarn install",
config = function()
vim.g.mkdp_filetypes = { "markdown" }
end,
ft = { "markdown" },
}

View file

@ -0,0 +1,57 @@
-- Package manager for LSP servers, DAP adapters etc.
return {
"williamboman/mason.nvim",
dependencies = {
"neovim/nvim-lspconfig",
"williamboman/mason-lspconfig.nvim",
"WhoIsSethDaniel/mason-tool-installer.nvim",
"mfussenegger/nvim-jdtls",
},
config = function()
require("mason").setup()
local mason_lsp = require("mason-lspconfig")
local lsp_utils = require('lsp_utils')
local capabilities = lsp_utils.get_capabilities()
mason_lsp.setup()
mason_lsp.setup_handlers({
-- Default handler
function(server_name)
require("lspconfig")[server_name].setup({
on_attach = lsp_utils.on_attach,
capabilities = capabilities,
})
end,
-- Override lua_ls settings
["lua_ls"] = function()
require("lspconfig").lua_ls.setup({
on_attach = lsp_utils.on_attach,
capabilities = capabilities,
settings = {
Lua = {
runtime = {
-- Tell the language server which version of Lua you're using (most likely LuaJIT in the case of Neovim)
version = "LuaJIT",
},
diagnostics = {
-- Get the language server to recognize the `vim` global
globals = { "vim" },
},
workspace = {
-- Make the server aware of Neovim runtime files
library = vim.api.nvim_get_runtime_file("", true),
},
-- Do not send telemetry data containing a randomized but unique identifier
telemetry = { enable = false },
},
},
})
end,
-- Don't set up jdtls, it is set up by nvim-jdtls
["jdtls"] = function() end,
})
end,
}

View file

@ -0,0 +1,2 @@
-- Show code LSP context in winbar
return { "SmiteshP/nvim-navic" }

View file

@ -0,0 +1,10 @@
-- Formatter plugin
return {
"sbdchd/neoformat",
config = function()
local wk = require("which-key")
wk.register({
f = { "<cmd>Neoformat<CR>", "Format with Neoformat" },
}, { prefix = "<leader>" })
end,
}

View file

@ -1,4 +1,10 @@
-- Replace much of neovim's default UI
-- with a modern replacement
return { return {
"folke/noice.nvim",
event = "VeryLazy",
dependencies = { "MunifTanjim/nui.nvim", "rcarriga/nvim-notify" },
opts = {
lsp = { lsp = {
-- override markdown rendering so that **cmp** and other plugins use **Treesitter** -- override markdown rendering so that **cmp** and other plugins use **Treesitter**
override = { override = {
@ -15,4 +21,5 @@ return {
inc_rename = false, -- enables an input dialog for inc-rename.nvim inc_rename = false, -- enables an input dialog for inc-rename.nvim
lsp_doc_border = false, -- add a border to hover docs and signature help lsp_doc_border = false, -- add a border to hover docs and signature help
}, },
},
} }

View file

@ -0,0 +1,4 @@
-- High performance color highlighter
return {
"norcalli/nvim-colorizer.lua",
}

View file

@ -1,5 +1,8 @@
return function() -- Tree explorer
require("nvim-tree").setup({ -- BEGIN_DEFAULT_OPTS return {
"kyazdani42/nvim-tree.lua",
dependencies = { "kyazdani42/nvim-web-devicons" },
opts = {
diagnostics = { diagnostics = {
enable = true, enable = true,
show_on_dirs = true, show_on_dirs = true,
@ -7,7 +10,11 @@ return function()
renderer = { renderer = {
highlight_git = true, highlight_git = true,
}, },
}) },
config = function(spec)
require("nvim-tree").setup(spec.opts)
-- Open/close with alt-o -- Open/close with alt-o
vim.keymap.set("n", "<M-o>", vim.cmd.NvimTreeToggle) vim.keymap.set("n", "<M-o>", vim.cmd.NvimTreeToggle)
end end,
}

View file

@ -0,0 +1,7 @@
-- Make editing passwords safer
return {
"https://git.zx2c4.com/password-store",
config = function(plugin)
vim.opt.rtp:append(plugin.dir .. "contrib/vim/redact_pass.vim")
end,
}

View file

@ -0,0 +1,2 @@
-- Do stuff as sudo
return { "lambdalisue/suda.vim" }

View file

@ -1,8 +1,22 @@
return function() return {
local telescope = require("telescope") "nvim-telescope/telescope.nvim",
local builtin = require("telescope.builtin") dependencies = {
-- Internal dependency for telescope
"nvim-lua/plenary.nvim",
telescope.setup({ -- Use fzf for fuzzy finder
{
"nvim-telescope/telescope-fzf-native.nvim",
build = "make",
},
-- Replace vim built in select with telescope
"nvim-telescope/telescope-ui-select.nvim",
-- cd plugin for telescope
"zane-/cder.nvim",
},
opts = {
pickers = { pickers = {
find_files = { find_command = { "fd", "-Ht", "f" } }, find_files = { find_command = { "fd", "-Ht", "f" } },
lsp_references = { show_line = false }, lsp_references = { show_line = false },
@ -30,7 +44,12 @@ return function()
dir_command = { "fd", "-Ht", "d", ".", os.getenv("HOME") }, dir_command = { "fd", "-Ht", "d", ".", os.getenv("HOME") },
}, },
}, },
}) },
config = function(spec)
local telescope = require("telescope")
local builtin = require("telescope.builtin")
telescope.setup(spec.opts)
telescope.load_extension("fzf") telescope.load_extension("fzf")
telescope.load_extension("ui-select") telescope.load_extension("ui-select")
@ -40,4 +59,5 @@ return function()
vim.keymap.set("n", "<C-s>", vim.cmd.Telescope) vim.keymap.set("n", "<C-s>", vim.cmd.Telescope)
vim.keymap.set("n", "<C-f>", builtin.find_files) vim.keymap.set("n", "<C-f>", builtin.find_files)
vim.keymap.set("n", "<C-g>", builtin.live_grep) vim.keymap.set("n", "<C-g>", builtin.live_grep)
end end,
}

View file

@ -1,4 +1,9 @@
return function() return {
"nvim-treesitter/nvim-treesitter",
build = function()
require("nvim-treesitter.install").update({ with_sync = true })
end,
config = function()
require("nvim-treesitter.configs").setup({ require("nvim-treesitter.configs").setup({
ensure_installed = { ensure_installed = {
"bash", "bash",
@ -43,4 +48,5 @@ return function()
-- vim.wo.foldmethod = 'expr' -- vim.wo.foldmethod = 'expr'
-- im.wo.foldexpr = 'nvim_treesitter#foldexpr()' -- im.wo.foldexpr = 'nvim_treesitter#foldexpr()'
end end,
}

View file

@ -1,20 +1,28 @@
return function() -- Better folds
local keymap = vim.keymap -- Disabled for now because it causes weird artifacts
local o = vim.o return {
local ufo = require("ufo") enabled = false,
ufo.setup({ "kevinhwang91/nvim-ufo",
dependencies = { "kevinhwang91/promise-async" },
opts = {
close_fold_kinds = { close_fold_kinds = {
"imports", "imports",
}, },
}) },
config = function(spec)
local ufo = require("ufo")
ufo.setup(spec.opts)
-- Using ufo, need to remap `zR` and `zM`. If Neovim is 0.6.1, remap yourself -- Using ufo, need to remap `zR` and `zM`. If Neovim is 0.6.1, remap yourself
local keymap = vim.keymap
keymap.set("n", "zR", ufo.openAllFolds) keymap.set("n", "zR", ufo.openAllFolds)
keymap.set("n", "zM", ufo.closeAllFolds) keymap.set("n", "zM", ufo.closeAllFolds)
-- Fold settings -- Fold settings
local o = vim.o
o.foldcolumn = "1" o.foldcolumn = "1"
o.foldlevel = 99 o.foldlevel = 99
o.foldlevelstart = 99 o.foldlevelstart = 99
o.foldenable = true o.foldenable = true
end end,
}

View file

@ -0,0 +1,2 @@
-- we all know this one
return { "tpope/vim-surround" }

View file

@ -1,18 +1,18 @@
return function() -- Display possible keybinds
-- Plugin specific keybinds are set up in plugin configuration file
return {
"folke/which-key.nvim",
config = function()
local wk = require("which-key") local wk = require("which-key")
local gitsigns = require("gitsigns")
wk.setup({}) wk.setup({})
wk.register({ wk.register({
f = { "<cmd>Neoformat<CR>", "Format with Neoformat" },
h = { "<cmd>nohlsearch<CR>", "Turn off search highlight" }, h = { "<cmd>nohlsearch<CR>", "Turn off search highlight" },
}, { prefix = "<leader>" }) }, { prefix = "<leader>" })
wk.register({ wk.register({
["<C-n>"] = { "<cmd>bnext<CR>", "Next buffer" }, ["<C-n>"] = { "<cmd>bnext<CR>", "Next buffer" },
["<C-b>"] = { "<cmd>bprevious<CR>", "Previous buffer" }, ["<C-b>"] = { "<cmd>bprevious<CR>", "Previous buffer" },
["["] = { h = { gitsigns.prev_hunk, "Previous hunk" } },
["]"] = { h = { gitsigns.next_hunk, "Next hunk" } },
}) })
-- Open cder -- Open cder
@ -25,5 +25,5 @@ return function()
-- Exit terminal insert mode with esc -- Exit terminal insert mode with esc
vim.keymap.set("t", "<Esc>", "<C-\\><C-n>", {}) vim.keymap.set("t", "<Esc>", "<C-\\><C-n>", {})
end,
end }