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 nowmain
parent
902c397e8b
commit
0ced314c90
@ -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("neovide")
|
||||
require("highlight_yank")
|
||||
require("plugins.lazy")
|
||||
require("lazy").setup("plugins")
|
||||
|
@ -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" },
|
||||
},
|
||||
}
|
@ -0,0 +1,2 @@
|
||||
-- Automatic brackets
|
||||
return { "windwp/nvim-autopairs" }
|
@ -0,0 +1,7 @@
|
||||
return {
|
||||
"akinsho/bufferline.nvim",
|
||||
version = "*",
|
||||
dependencies = { "kyazdani42/nvim-web-devicons" },
|
||||
config = true,
|
||||
--opts = { options = { themeable = true } },
|
||||
}
|
@ -0,0 +1,2 @@
|
||||
-- Caddyfile syntax support
|
||||
return { "isobit/vim-caddyfile", ft = "caddyfile" }
|
@ -0,0 +1,5 @@
|
||||
-- treesitter plugin for commentstring
|
||||
return {
|
||||
"JoosepAlviste/nvim-ts-context-commentstring",
|
||||
dependencies = { "tpope/vim-commentary" },
|
||||
}
|
@ -0,0 +1,9 @@
|
||||
-- GitHub Copilot
|
||||
return {
|
||||
"zbirenbaum/copilot.lua",
|
||||
config = true,
|
||||
opts = {
|
||||
suggestion = { enabled = false },
|
||||
panel = { enabled = false },
|
||||
},
|
||||
}
|
@ -0,0 +1,2 @@
|
||||
-- vim api documentation for lua lsp
|
||||
return { "ii14/emmylua-nvim", ft = { "lua" } }
|
@ -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,
|
||||
}
|
@ -0,0 +1,2 @@
|
||||
-- Git commands
|
||||
return { "tpope/vim-fugitive" }
|
@ -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,
|
||||
}
|
@ -0,0 +1,2 @@
|
||||
-- Edit GPG encrypted files transparently
|
||||
return { "jamessan/vim-gnupg", ft = { "gpg" } }
|
@ -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" })
|
@ -1,7 +1,10 @@
|
||||
return function()
|
||||
require("lualine").setup({
|
||||
-- Statusline
|
||||
return {
|
||||
"nvim-lualine/lualine.nvim",
|
||||
dependencies = { "kyazdani42/nvim-web-devicons" },
|
||||
opts = {
|
||||
sections = {
|
||||
lualine_c = { "navic" },
|
||||
},
|
||||
})
|
||||
end
|
||||
},
|
||||
}
|
||||
|
@ -1,4 +1,9 @@
|
||||
return function()
|
||||
-- Snippets plugin
|
||||
return {
|
||||
"L3MON4D3/LuaSnip",
|
||||
dependencies = { "rafamadriz/friendly-snippets" }, -- Snippets collection
|
||||
config = function()
|
||||
-- load friendly-snippets to luasnip
|
||||
require("luasnip/loaders/from_vscode").lazy_load()
|
||||
end
|
||||
end,
|
||||
}
|
||||
|
@ -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" },
|
||||
}
|
@ -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,
|
||||
}
|
@ -0,0 +1,2 @@
|
||||
-- Show code LSP context in winbar
|
||||
return { "SmiteshP/nvim-navic" }
|
@ -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,
|
||||
}
|
@ -0,0 +1,4 @@
|
||||
-- High performance color highlighter
|
||||
return {
|
||||
"norcalli/nvim-colorizer.lua",
|
||||
}
|
@ -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,
|
||||
}
|
@ -0,0 +1,2 @@
|
||||
-- Do stuff as sudo
|
||||
return { "lambdalisue/suda.vim" }
|
@ -1,20 +1,28 @@
|
||||
return function()
|
||||
local keymap = vim.keymap
|
||||
local o = vim.o
|
||||
local ufo = require("ufo")
|
||||
ufo.setup({
|
||||
-- Better folds
|
||||
-- Disabled for now because it causes weird artifacts
|
||||
return {
|
||||
enabled = false,
|
||||
"kevinhwang91/nvim-ufo",
|
||||
dependencies = { "kevinhwang91/promise-async" },
|
||||
opts = {
|
||||
close_fold_kinds = {
|
||||
"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
|
||||
local keymap = vim.keymap
|
||||
keymap.set("n", "zR", ufo.openAllFolds)
|
||||
keymap.set("n", "zM", ufo.closeAllFolds)
|
||||
|
||||
-- Fold settings
|
||||
local o = vim.o
|
||||
o.foldcolumn = "1"
|
||||
o.foldlevel = 99
|
||||
o.foldlevelstart = 99
|
||||
o.foldenable = true
|
||||
end
|
||||
end,
|
||||
}
|
||||
|
@ -0,0 +1,2 @@
|
||||
-- we all know this one
|
||||
return { "tpope/vim-surround" }
|
Loading…
Reference in New Issue