WIP: Switch to NixOS #5

Draft
FunctionalHacker wants to merge 1349 commits from nix into main
36 changed files with 554 additions and 584 deletions
Showing only changes of commit 0ced314c90 - Show all commits

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("neovide")
require("highlight_yank")
require("plugins.lazy")
require("lazy").setup("plugins")

View file

@ -11,7 +11,6 @@
"cmp-spell": { "branch": "master", "commit": "32a0867efa59b43edbb2db67b0871cfad90c9b66" },
"cmp_luasnip": { "branch": "master", "commit": "05a9ab28b53f71d1aece421ef32fee2cb857a843" },
"copilot-cmp": { "branch": "master", "commit": "72fbaa03695779f8349be3ac54fa8bd77eed3ee3" },
"copilot.lua": { "branch": "master", "commit": "73047082d72fcfdde1f73b7f17ad495cffcbafaa" },
"dashboard-nvim": { "branch": "master", "commit": "63df28409d940f9cac0a925df09d3dc369db9841" },
"emmylua-nvim": { "branch": "master", "commit": "50b2eead8af6499fbba708553148ee8156d6612e" },
"firenvim": { "branch": "master", "commit": "138424db463e6c0e862a05166a4ccc781cd7c19d" },
@ -22,7 +21,7 @@
"lazy.nvim": { "branch": "main", "commit": "96584866b9c5e998cbae300594d0ccfd0c464627" },
"lualine.nvim": { "branch": "master", "commit": "2248ef254d0a1488a72041cfb45ca9caada6d994" },
"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.nvim": { "branch": "main", "commit": "41e75af1f578e55ba050c863587cffde3556ffa6" },
"neoformat": { "branch": "master", "commit": "e5fe7e8f7c3dd071b90f19af0e8c7cfa56cdedc7" },
@ -32,13 +31,13 @@
"nvim-autopairs": { "branch": "master", "commit": "0f04d78619cce9a5af4f355968040f7d675854a1" },
"nvim-cmp": { "branch": "main", "commit": "0b751f6beef40fd47375eaf53d3057e0bfa317e4" },
"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-lspconfig": { "branch": "master", "commit": "29939f6f07bc0f3b9fc563fbfbee06ac88c8c439" },
"nvim-lspconfig": { "branch": "master", "commit": "48347089666d5b77d054088aa72e4e0b58026e6e" },
"nvim-navic": { "branch": "master", "commit": "0ffa7ffe6588f3417e680439872f5049e38a24db" },
"nvim-notify": { "branch": "master", "commit": "e4a2022f4fec2d5ebc79afa612f96d8b11c627b3" },
"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-web-devicons": { "branch": "master", "commit": "3523d6e6d40ab11fd66c1b2732b3d6b60affa951" },
"password-store": { "branch": "master", "commit": "28cec11f1dbe6c4273d30370af45b69c9f408386" },

View file

@ -1,51 +1,9 @@
-- This module contains lsp related
-- reusable functions
local m = {}
function m.setup()
require("mason").setup()
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
-- Map LSP specific keybinds.
-- This makes them only available when LSP is running
function m.map_keys()
local telescope_builtin = require("telescope.builtin")
require("which-key").register({
@ -83,6 +41,7 @@ function m.map_keys()
})
end
function m.on_attach(client, bufnr)
-- Attach navic if document symbols are available
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,101 +1,107 @@
return function()
local cmp = require("cmp")
local luasnip = require("luasnip")
-- 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 luasnip = require("luasnip")
if not cmp then
return
end
if not cmp then
return
end
-- Setup git completion source
require("cmp_git").setup()
--
-- Setup copilot source
require("copilot_cmp").setup({ fix_pairs = true })
-- Setup git completion source
require("cmp_git").setup()
--
-- Setup copilot source
require("copilot_cmp").setup({ fix_pairs = true })
-- Set completeopt to have a better completion experience
vim.o.completeopt = "menuone,noselect"
-- Set completeopt to have a better completion experience
vim.o.completeopt = "menuone,noselect"
cmp.setup({
snippet = {
expand = function(args)
luasnip.lsp_expand(args.body)
end,
},
mapping = {
["<C-p>"] = cmp.mapping.select_prev_item(),
["<C-n>"] = cmp.mapping.select_next_item(),
["<C-d>"] = cmp.mapping.scroll_docs(-4),
["<C-f>"] = cmp.mapping.scroll_docs(4),
["<C-Space>"] = cmp.mapping.complete(),
["<C-e>"] = cmp.mapping.close(),
["<CR>"] = cmp.mapping.confirm({
behavior = cmp.ConfirmBehavior.Replace,
select = true,
}),
["<Tab>"] = cmp.mapping(function(fallback)
if cmp.visible() then
cmp.select_next_item()
elseif luasnip.expand_or_jumpable() then
luasnip.expand_or_jump()
else
fallback()
end
end, { "i", "s" }),
["<S-Tab>"] = cmp.mapping(function(fallback)
if cmp.visible() then
cmp.select_prev_item()
elseif luasnip.jumpable(-1) then
luasnip.jump(-1)
else
fallback()
end
end, { "i", "s" }),
},
sources = {
{ name = "luasnip" },
{ name = "copilot" },
{ name = "nvim_lsp" },
{ name = "nvim_lua" },
{ name = "git" },
{ name = "buffer" },
{ name = "spell" },
{ 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
-- on completion
local cmp_autopairs = require("nvim-autopairs.completion.cmp")
cmp.event:on("confirm_done", cmp_autopairs.on_confirm_done())
-- `/` cmdline setup.
cmp.setup.cmdline("/", {
mapping = cmp.mapping.preset.cmdline(),
sources = {
{ name = "buffer" },
},
})
-- `:` cmdline setup.
cmp.setup.cmdline(":", {
mapping = cmp.mapping.preset.cmdline(),
sources = cmp.config.sources({
{ name = "path" },
}, {
{
name = "cmdline",
option = {
ignore_cmds = { "Man", "!" },
},
cmp.setup({
snippet = {
expand = function(args)
luasnip.lsp_expand(args.body)
end,
},
}),
})
end
mapping = {
["<C-p>"] = cmp.mapping.select_prev_item(),
["<C-n>"] = cmp.mapping.select_next_item(),
["<C-d>"] = cmp.mapping.scroll_docs(-4),
["<C-f>"] = cmp.mapping.scroll_docs(4),
["<C-Space>"] = cmp.mapping.complete(),
["<C-e>"] = cmp.mapping.close(),
["<CR>"] = cmp.mapping.confirm({
behavior = cmp.ConfirmBehavior.Replace,
select = true,
}),
["<Tab>"] = cmp.mapping(function(fallback)
if cmp.visible() then
cmp.select_next_item()
elseif luasnip.expand_or_jumpable() then
luasnip.expand_or_jump()
else
fallback()
end
end, { "i", "s" }),
["<S-Tab>"] = cmp.mapping(function(fallback)
if cmp.visible() then
cmp.select_prev_item()
elseif luasnip.jumpable(-1) then
luasnip.jump(-1)
else
fallback()
end
end, { "i", "s" }),
},
sources = {
{ name = "luasnip" },
{ name = "copilot" },
{ name = "nvim_lsp" },
{ name = "nvim_lua" },
{ name = "git" },
{ name = "buffer" },
{ name = "spell" },
{ name = "path" },
},
})
-- Enable autopairs when enter is processed
-- on completion
local cmp_autopairs = require("nvim-autopairs.completion.cmp")
cmp.event:on("confirm_done", cmp_autopairs.on_confirm_done())
-- `/` cmdline setup.
cmp.setup.cmdline("/", {
mapping = cmp.mapping.preset.cmdline(),
sources = {
{ name = "buffer" },
},
})
-- `:` cmdline setup.
cmp.setup.cmdline(":", {
mapping = cmp.mapping.preset.cmdline(),
sources = cmp.config.sources({
{ name = "path" },
}, {
{
name = "cmdline",
option = {
ignore_cmds = { "Man", "!" },
},
},
}),
})
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,31 +1,34 @@
return function()
local dap = require("dap")
return {
"mfussenegger/nvim-dap",
config = function()
local dap = require("dap")
dap.adapters.bashdb = {
type = "executable",
command = vim.fn.stdpath("data") .. "/mason/packages/bash-debug-adapter/bash-debug-adapter",
name = "bashdb",
}
dap.adapters.bashdb = {
type = "executable",
command = vim.fn.stdpath("data") .. "/mason/packages/bash-debug-adapter/bash-debug-adapter",
name = "bashdb",
}
dap.configurations.sh = {
{
type = "bashdb",
request = "launch",
name = "Launch file",
showDebugOutput = true,
pathBashdb = vim.fn.stdpath("data") .. "/mason/packages/bash-debug-adapter/extension/bashdb_dir/bashdb",
pathBashdbLib = vim.fn.stdpath("data") .. "/mason/packages/bash-debug-adapter/extension/bashdb_dir",
trace = true,
file = "${file}",
program = "${file}",
cwd = "${workspaceFolder}",
pathCat = "cat",
pathBash = "/bin/bash",
pathMkfifo = "mkfifo",
pathPkill = "pkill",
args = {},
env = {},
terminalKind = "integrated",
},
}
end
dap.configurations.sh = {
{
type = "bashdb",
request = "launch",
name = "Launch file",
showDebugOutput = true,
pathBashdb = vim.fn.stdpath("data") .. "/mason/packages/bash-debug-adapter/extension/bashdb_dir/bashdb",
pathBashdbLib = vim.fn.stdpath("data") .. "/mason/packages/bash-debug-adapter/extension/bashdb_dir",
trace = true,
file = "${file}",
program = "${file}",
cwd = "${workspaceFolder}",
pathCat = "cat",
pathBash = "/bin/bash",
pathMkfifo = "mkfifo",
pathPkill = "pkill",
args = {},
env = {},
terminalKind = "integrated",
},
}
end,
}

View file

@ -1,5 +1,9 @@
return function()
require("dashboard").setup({
-- Startup dashboard
return {
"glepnir/dashboard-nvim",
event = "VimEnter",
dependencies = { { "kyazdani42/nvim-web-devicons" } },
opts = {
theme = "hyper",
config = {
week_header = {
@ -18,5 +22,5 @@ return function()
{ 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,19 +1,23 @@
return function()
require("ibl").setup({
exclude = {
filetypes = {
"",
"checkhealth",
"dashboard",
"git",
"gitcommit",
"TelescopePrompt",
"TelescopeResults",
"help",
"lazy",
"lspinfo",
"man",
-- Indent characters
return {
"lukas-reineke/indent-blankline.nvim",
config = function()
require("ibl").setup({
exclude = {
filetypes = {
"",
"checkhealth",
"dashboard",
"git",
"gitcommit",
"TelescopePrompt",
"TelescopeResults",
"help",
"lazy",
"lspinfo",
"man",
},
},
},
})
end
})
end,
}

View file

@ -1,5 +1,7 @@
return function()
require("kanagawa").setup({
-- Colorscheme
return {
"rebelot/kanagawa.nvim",
opts = {
compile = true,
dimInactive = true,
colors = {
@ -42,7 +44,8 @@ return function()
PmenuThumb = { bg = theme.ui.bg_p2 },
}
end,
})
vim.cmd("colorscheme kanagawa")
end
},
config = function()
vim.cmd("colorscheme kanagawa")
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()
require("lualine").setup({
-- Statusline
return {
"nvim-lualine/lualine.nvim",
dependencies = { "kyazdani42/nvim-web-devicons" },
opts = {
sections = {
lualine_c = { "navic" },
},
})
end
},
}

View file

@ -1,4 +1,9 @@
return function()
-- load friendly-snippets to luasnip
require("luasnip/loaders/from_vscode").lazy_load()
end
-- 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,
}

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,18 +1,25 @@
-- Replace much of neovim's default UI
-- with a modern replacement
return {
lsp = {
-- override markdown rendering so that **cmp** and other plugins use **Treesitter**
override = {
["vim.lsp.util.convert_input_to_markdown_lines"] = true,
["vim.lsp.util.stylize_markdown"] = true,
["cmp.entry.get_documentation"] = true,
"folke/noice.nvim",
event = "VeryLazy",
dependencies = { "MunifTanjim/nui.nvim", "rcarriga/nvim-notify" },
opts = {
lsp = {
-- override markdown rendering so that **cmp** and other plugins use **Treesitter**
override = {
["vim.lsp.util.convert_input_to_markdown_lines"] = true,
["vim.lsp.util.stylize_markdown"] = true,
["cmp.entry.get_documentation"] = true,
},
},
-- you can enable a preset for easier configuration
presets = {
bottom_search = true, -- use a classic bottom cmdline for search
command_palette = true, -- position the cmdline and popupmenu together
long_message_to_split = true, -- long messages will be sent to a split
inc_rename = false, -- enables an input dialog for inc-rename.nvim
lsp_doc_border = false, -- add a border to hover docs and signature help
},
},
-- you can enable a preset for easier configuration
presets = {
bottom_search = true, -- use a classic bottom cmdline for search
command_palette = true, -- position the cmdline and popupmenu together
long_message_to_split = true, -- long messages will be sent to a split
inc_rename = false, -- enables an input dialog for inc-rename.nvim
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,13 +1,20 @@
return function()
require("nvim-tree").setup({ -- BEGIN_DEFAULT_OPTS
diagnostics = {
enable = true,
show_on_dirs = true,
},
renderer = {
highlight_git = true,
},
})
-- Open/close with alt-o
vim.keymap.set("n", "<M-o>", vim.cmd.NvimTreeToggle)
end
-- Tree explorer
return {
"kyazdani42/nvim-tree.lua",
dependencies = { "kyazdani42/nvim-web-devicons" },
opts = {
diagnostics = {
enable = true,
show_on_dirs = true,
},
renderer = {
highlight_git = true,
},
},
config = function(spec)
require("nvim-tree").setup(spec.opts)
-- Open/close with alt-o
vim.keymap.set("n", "<M-o>", vim.cmd.NvimTreeToggle)
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()
local telescope = require("telescope")
local builtin = require("telescope.builtin")
return {
"nvim-telescope/telescope.nvim",
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 = {
find_files = { find_command = { "fd", "-Ht", "f" } },
lsp_references = { show_line = false },
@ -30,14 +44,20 @@ return function()
dir_command = { "fd", "-Ht", "d", ".", os.getenv("HOME") },
},
},
})
},
config = function(spec)
local telescope = require("telescope")
local builtin = require("telescope.builtin")
telescope.load_extension("fzf")
telescope.load_extension("ui-select")
telescope.load_extension("cder")
telescope.setup(spec.opts)
-- Keybinds
vim.keymap.set("n", "<C-s>", vim.cmd.Telescope)
vim.keymap.set("n", "<C-f>", builtin.find_files)
vim.keymap.set("n", "<C-g>", builtin.live_grep)
end
telescope.load_extension("fzf")
telescope.load_extension("ui-select")
telescope.load_extension("cder")
-- Keybinds
vim.keymap.set("n", "<C-s>", vim.cmd.Telescope)
vim.keymap.set("n", "<C-f>", builtin.find_files)
vim.keymap.set("n", "<C-g>", builtin.live_grep)
end,
}

View file

@ -1,46 +1,52 @@
return function()
require("nvim-treesitter.configs").setup({
ensure_installed = {
"bash",
"css",
"dockerfile",
"git_config",
"git_rebase",
"gitattributes",
"gitcommit",
"gitignore",
"html",
"http",
"java",
"javascript",
"json",
"json5",
"latex",
"lua",
"make",
"markdown",
"markdown_inline",
"php",
"python",
"rasi",
"regex",
"rst",
"scss",
"toml",
"tsx",
"typescript",
"vim",
"yaml",
},
highlight = { enable = true },
indent = { enable = true },
incremental_selection = { enable = true },
context_commentstring = { enable = true },
sync_install = true,
ignore_install = {},
auto_install = true,
})
return {
"nvim-treesitter/nvim-treesitter",
build = function()
require("nvim-treesitter.install").update({ with_sync = true })
end,
config = function()
require("nvim-treesitter.configs").setup({
ensure_installed = {
"bash",
"css",
"dockerfile",
"git_config",
"git_rebase",
"gitattributes",
"gitcommit",
"gitignore",
"html",
"http",
"java",
"javascript",
"json",
"json5",
"latex",
"lua",
"make",
"markdown",
"markdown_inline",
"php",
"python",
"rasi",
"regex",
"rst",
"scss",
"toml",
"tsx",
"typescript",
"vim",
"yaml",
},
highlight = { enable = true },
indent = { enable = true },
incremental_selection = { enable = true },
context_commentstring = { enable = true },
sync_install = true,
ignore_install = {},
auto_install = true,
})
-- vim.wo.foldmethod = 'expr'
-- im.wo.foldexpr = 'nvim_treesitter#foldexpr()'
end
-- vim.wo.foldmethod = 'expr'
-- im.wo.foldexpr = 'nvim_treesitter#foldexpr()'
end,
}

View file

@ -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
keymap.set("n", "zR", ufo.openAllFolds)
keymap.set("n", "zM", ufo.closeAllFolds)
-- 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
o.foldcolumn = "1"
o.foldlevel = 99
o.foldlevelstart = 99
o.foldenable = true
end
-- Fold settings
local o = vim.o
o.foldcolumn = "1"
o.foldlevel = 99
o.foldlevelstart = 99
o.foldenable = true
end,
}

View file

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

View file

@ -1,29 +1,29 @@
return function()
local wk = require("which-key")
local gitsigns = require("gitsigns")
wk.setup({})
-- 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")
wk.setup({})
wk.register({
f = { "<cmd>Neoformat<CR>", "Format with Neoformat" },
h = { "<cmd>nohlsearch<CR>", "Turn off search highlight" },
}, { prefix = "<leader>" })
wk.register({
h = { "<cmd>nohlsearch<CR>", "Turn off search highlight" },
}, { prefix = "<leader>" })
wk.register({
["<C-n>"] = { "<cmd>bnext<CR>", "Next buffer" },
["<C-b>"] = { "<cmd>bprevious<CR>", "Previous buffer" },
["["] = { h = { gitsigns.prev_hunk, "Previous hunk" } },
["]"] = { h = { gitsigns.next_hunk, "Next hunk" } },
})
wk.register({
["<C-n>"] = { "<cmd>bnext<CR>", "Next buffer" },
["<C-b>"] = { "<cmd>bprevious<CR>", "Previous buffer" },
})
-- Open cder
wk.register({ cd = {
function()
vim.cmd("Telescope cder")
end,
"Change directories",
} })
-- Open cder
wk.register({ cd = {
function()
vim.cmd("Telescope cder")
end,
"Change directories",
} })
-- Exit terminal insert mode with esc
vim.keymap.set("t", "<Esc>", "<C-\\><C-n>", {})
end
-- Exit terminal insert mode with esc
vim.keymap.set("t", "<Esc>", "<C-\\><C-n>", {})
end,
}