feat(nvim): migrate to LazyVim

This commit is contained in:
Stefan Imhoff
2023-02-10 12:43:10 +01:00
parent 91874608bf
commit a274746a8a
147 changed files with 2059 additions and 2806 deletions

View File

@@ -0,0 +1,9 @@
-- Automatically fix spelling mistakes
-- https://github.com/tpope/vim-abolish
return {
"tpope/vim-abolish",
config = function()
vim.api.nvim_command("Abolish teh the")
vim.api.nvim_command("Abolish {despa,sepe}rat{e,es,ed,ing,ely,ion,ions,or} {despe,sepa}rat{}")
end,
}

View File

@@ -0,0 +1,29 @@
-- Dashboard
-- https://github.com/goolord/alpha-nvim
return {
"goolord/alpha-nvim",
opts = function(_, opts)
opts.section.header.val = {
"",
"┌─╮╭─╮╭─╮▖ ▖▖▄▄▗▄ ",
"│ │├─┘│ │▝▖▞ ▌▌ ▌ ▌",
"╵ ╵╰─╯╰─╯ ▝ ▘▘ ▘ ▘",
}
opts.section.buttons.val = {
opts.button("f", "" .. " Find file", ":Telescope find_files <CR>"),
opts.button("n", "" .. " New file", ":ene <BAR> startinsert <CR>"),
opts.button("r", "" .. " Recent files", ":Telescope oldfiles <CR>"),
opts.button("g", "" .. " Find text", ":Telescope live_grep <CR>"),
opts.button("p", "" .. " Find Project", ":Telescope projects<CR>"),
opts.button("s", "" .. " Restore Session", [[:lua require("persistence").load() <cr>]]),
opts.button("l", "" .. " Lazy (Plugins)", ":Lazy<CR>"),
opts.button("m", "" .. " Mason (LSP, DAP, Linter, Formatter)", ":Mason<CR>"),
opts.button("q", "" .. " Quit", ":qa<CR>"),
opts.padding,
}
opts.section.header.opts.hl = "String"
opts.section.buttons.opts.hl = "Keyword"
opts.section.footer.opts.hl = "String"
opts.opts.opts.noautocmd = true
end,
}

View File

@@ -0,0 +1,8 @@
-- Astro support
-- https://github.com/wuelnerdotexe/vim-astro
return {
"wuelnerdotexe/vim-astro",
config = function()
vim.g.astro_typescript = "enable"
end,
}

View File

@@ -0,0 +1,10 @@
-- Use treesitter to auto close and auto rename HTML tags
-- https://github.com/windwp/nvim-ts-autotag
return {
"windwp/nvim-ts-autotag",
config = function()
require("nvim-ts-autotag").setup({
disable_filetype = { "TelescopePrompt", "vim" },
})
end,
}

View File

@@ -0,0 +1,14 @@
-- Show Git blame inline
-- https://github.com/APZelos/blamer.nvim
return {
"APZelos/blamer.nvim",
keys = {
-- stylua: ignore
{ "<leader>gB", "<cmd>BlamerToggle<cr>", desc = "Git Blame" },
},
config = function()
vim.g.blamer_enabled = 0
vim.g.blamer_relative_time = 1
vim.g.blamer_delay = 200
end,
}

View File

@@ -0,0 +1,5 @@
-- Vim bookmark plugin
-- https://github.com/MattesGroeger/vim-bookmarks
return {
"MattesGroeger/vim-bookmarks",
}

View File

@@ -0,0 +1,20 @@
-- View images in Neovim
-- https://github.com/princejoogie/chafa.nvim
return {
"princejoogie/chafa.nvim",
dependencies = {
"nvim-lua/plenary.nvim",
"m00qek/baleia.nvim",
},
config = function()
require("chafa").setup({
render = {
min_padding = 5,
show_label = true,
},
events = {
update_on_nvim_resize = true,
},
})
end,
}

View File

@@ -0,0 +1,16 @@
-- Searchable Cheatsheet
-- https://github.com/sudormrfbin/cheatsheet.nvim
return {
"sudormrfbin/cheatsheet.nvim",
dependencies = {
"nvim-telescope/telescope.nvim",
"nvim-lua/popup.nvim",
"nvim-lua/plenary.nvim",
},
keys = {
{ "<leader>C", "<cmd>Cheatsheet<cr>", desc = "Cheatsheet" },
},
config = function()
require("cheatsheet").setup()
end,
}

48
nvim/lua/plugins/cmp.lua Normal file
View File

@@ -0,0 +1,48 @@
return {
"hrsh7th/nvim-cmp",
dependencies = {
{ "roobert/tailwindcss-colorizer-cmp.nvim", config = true },
"zbirenbaum/copilot-cmp",
"David-Kunz/cmp-npm",
},
opts = function(_, opts)
local cmp = require("cmp")
opts.sources = cmp.config.sources(vim.list_extend(opts.sources, {
{ name = "copilot" },
{ name = "npm", keyword_length = 4 },
}))
opts.formatting = {
fields = { "kind", "abbr", "menu" },
format = function(_, item)
local icons = require("lazyvim.config").icons.kinds
if icons[item.kind] then
item.kind = icons[item.kind]
end
return item
end,
}
vim.api.nvim_set_hl(0, "CmpItemKindCopilot", { fg = "#6CC644" })
vim.api.nvim_set_hl(0, "CmpItemAbbrMatch", { fg = "NONE", bg = "#000000" })
vim.cmd([[highlight! link CmpItemAbbrMatchFuzzy CmpItemAbbrMatch]])
vim.cmd([[highlight! CmpItemAbbrDeprecated guibg=NONE gui=strikethrough guifg=#808080]])
vim.cmd([[highlight! CmpItemAbbrMatch guibg=NONE guifg=#569CD6]])
vim.cmd([[highlight! link CmpItemAbbrMatchFuzzy CmpItemAbbrMatch]])
vim.cmd([[highlight! CmpItemKindVariable guibg=NONE guifg=#9CDCFE]])
vim.cmd([[highlight! link CmpItemKindInterface CmpItemKindVariable]])
vim.cmd([[highlight! link CmpItemKindText CmpItemKindVariable]])
vim.cmd([[highlight! CmpItemKindFunction guibg=NONE guifg=#C586C0]])
vim.cmd([[highlight! link CmpItemKindMethod CmpItemKindFunction]])
vim.cmd([[highlight! CmpItemKindKeyword guibg=NONE guifg=#D4D4D4]])
vim.cmd([[highlight! link CmpItemKindProperty CmpItemKindKeyword]])
vim.cmd([[highlight! link CmpItemKindUnit CmpItemKindKeyword]])
-- Original LazyVim kind icon formatter
local format_kinds = opts.formatting.format
opts.formatting.format = function(entry, item)
format_kinds(entry, item) -- add icons
return require("tailwindcss-colorizer-cmp").formatter(entry, item)
end
end,
}

View File

@@ -0,0 +1,10 @@
-- Pop-up menu for code actions
-- https://github.com/weilbith/nvim-code-action-menu
return {
"weilbith/nvim-code-action-menu",
cmd = "CodeActionMenu",
keys = {
-- stylua: ignore
{ "<leader>cc", "<cmd>CodeActionMenu<cr>", desc = "Code Action Menu" },
},
}

View File

@@ -0,0 +1,10 @@
-- Minimap
-- https://github.com/gorbit99/codewindow.nvim
return {
"gorbit99/codewindow.nvim",
config = function()
local codewindow = require("codewindow")
codewindow.setup()
codewindow.apply_default_keybinds()
end,
}

View File

@@ -0,0 +1,29 @@
-- The fastest Neovim colorizer
-- https://github.com/norcalli/nvim-colorizer.lua
return {
"norcalli/nvim-colorizer.lua",
config = function()
require("colorizer").setup({
"css",
"html",
"javascript",
"javascriptreact",
"typescript",
"typescriptreact",
"yaml",
"conf",
"lua",
}, {
RGB = true,
RRGGBB = true,
names = true,
RRGGBBAA = true,
rgb_fn = true,
hsl_fn = true,
css = true,
css_fn = true,
mode = "background",
tailwind = true,
})
end,
}

View File

@@ -0,0 +1,18 @@
-- https://github.com/folke/tokyonight.nvim
-- https://github.com/chriskempson/base16-vim
-- https://github.com/kartikp10/noctis.nvim
-- https://github.com/catppuccin/nvim
return {
"folke/tokyonight.nvim", -- Tokyo Night color scheme
"chriskempson/base16-vim", -- Base16 colorschemes
{ "kartikp10/noctis.nvim", dependencies = "rktjmp/lush.nvim" }, -- Noctis color scheme
{ "catppuccin/nvim", name = "catppuccin" }, -- Catppuccin color scheme
-- Configure LazyVim to load Tokyo Night
{
"LazyVim/LazyVim",
opts = {
colorscheme = "tokyonight-night",
},
},
}

View File

@@ -0,0 +1,5 @@
-- More pleasant editing on commit messages
-- https://github.com/rhysd/committia.vim
return {
"rhysd/committia.vim",
}

View File

@@ -0,0 +1,10 @@
-- Copilot replacement
-- https://github.com/zbirenbaum/copilot.lua
-- https://github.com/zbirenbaum/copilot-cmp
return {
"zbirenbaum/copilot-cmp",
dependencies = "zbirenbaum/copilot.lua",
opts = function()
require("copilot").setup()
end,
}

View File

@@ -0,0 +1,19 @@
-- Highlight cursor words and lines
-- https://github.com/yamatsum/nvim-cursorline
return {
"yamatsum/nvim-cursorline",
config = function()
require("nvim-cursorline").setup({
cursorline = {
enable = true,
timeout = 1000,
number = false,
},
cursorword = {
enable = true,
min_length = 3,
hl = { underline = true },
},
})
end,
}

28
nvim/lua/plugins/dial.lua Normal file
View File

@@ -0,0 +1,28 @@
-- Enhanced increment/decrement
-- https://github.com/monaqa/dial.nvim
return {
"monaqa/dial.nvim",
config = function()
local augend = require("dial.augend")
local opts = { noremap = true, silent = true }
require("dial.config").augends:register_group({
default = {
augend.constant.alias.bool,
augend.constant.alias.de_weekday,
augend.constant.alias.de_weekday_full,
augend.date.alias["%d.%m.%Y"],
augend.hexcolor.new({ case = "lower" }),
augend.integer.alias.decimal_int,
augend.semver.alias.semver,
},
})
vim.keymap.set("n", "<C-a>", require("dial.map").inc_normal(), opts)
vim.keymap.set("n", "<C-x>", require("dial.map").dec_normal(), opts)
vim.keymap.set("v", "<C-a>", require("dial.map").inc_visual(), opts)
vim.keymap.set("v", "<C-x>", require("dial.map").dec_visual(), opts)
vim.keymap.set("v", "g<C-a>", require("dial.map").inc_gvisual(), opts)
vim.keymap.set("v", "g<C-x>", require("dial.map").dec_gvisual(), opts)
end,
}

View File

@@ -0,0 +1,20 @@
-- Easily cycle through diffs
-- https://github.com/sindrets/diffview.nvim
return {
"sindrets/diffview.nvim",
lazy = false,
dependencies = "nvim-lua/plenary.nvim",
keys = {
{ "<leader>gdo", "<cmd>DiffviewOpen<cr>", desc = "Diffview Open" },
{ "<leader>gdx", "<cmd>DiffviewClose<cr>", desc = "Diffview Close" },
},
opts = {
view = {
use_icons = true,
default = {
layout = "diff2_horizontal",
winbar_info = false,
},
},
},
}

View File

@@ -0,0 +1,5 @@
-- Editorconfig
-- https://github.com/editorconfig/editorconfig-vim
return {
"editorconfig/editorconfig-vim",
}

View File

@@ -0,0 +1,6 @@
-- Emmet
-- https://github.com/mattn/emmet-vim
-- <c-y>, to extend
return {
"mattn/emmet-vim",
}

View File

@@ -0,0 +1,267 @@
-- since this is just an example spec, don't actually load anything here and return an empty spec
-- stylua: ignore
if true then return {} end
-- every spec file under config.plugins will be loaded automatically by lazy.nvim
--
-- In your plugin files, you can:
-- * add extra plugins
-- * disable/enabled LazyVim plugins
-- * override the configuration of LazyVim plugins
return {
-- add gruvbox
{ "ellisonleao/gruvbox.nvim" },
-- Configure LazyVim to load gruvbox
{
"LazyVim/LazyVim",
opts = {
colorscheme = "gruvbox",
},
},
-- change trouble config
{
"folke/trouble.nvim",
-- opts will be merged with the parent spec
opts = { use_diagnostic_signs = true },
},
-- disable trouble
{ "folke/trouble.nvim", enabled = false },
-- add symbols-outline
{
"simrat39/symbols-outline.nvim",
cmd = "SymbolsOutline",
keys = { { "<leader>cs", "<cmd>SymbolsOutline<cr>", desc = "Symbols Outline" } },
config = true,
},
-- override nvim-cmp and add cmp-emoji
{
"hrsh7th/nvim-cmp",
dependencies = { "hrsh7th/cmp-emoji" },
---@param opts cmp.ConfigSchema
opts = function(_, opts)
local cmp = require("cmp")
opts.sources = cmp.config.sources(vim.list_extend(opts.sources, { { name = "emoji" } }))
end,
},
-- change some telescope options and a keymap to browse plugin files
{
"nvim-telescope/telescope.nvim",
keys = {
-- add a keymap to browse plugin files
-- stylua: ignore
{
"<leader>fp",
function() require("telescope.builtin").find_files({ cwd = require("lazy.core.config").options.root }) end,
desc = "Find Plugin File",
},
},
-- change some options
opts = {
defaults = {
layout_strategy = "horizontal",
layout_config = { prompt_position = "top" },
sorting_strategy = "ascending",
winblend = 0,
},
},
},
-- add telescope-fzf-native
{
"telescope.nvim",
dependencies = {
"nvim-telescope/telescope-fzf-native.nvim",
build = "make",
config = function()
require("telescope").load_extension("fzf")
end,
},
},
-- add pyright to lspconfig
{
"neovim/nvim-lspconfig",
---@class PluginLspOpts
opts = {
---@type lspconfig.options
servers = {
-- pyright will be automatically installed with mason and loaded with lspconfig
pyright = {},
},
},
},
-- add tsserver and setup with typescript.nvim instead of lspconfig
{
"neovim/nvim-lspconfig",
dependencies = {
"jose-elias-alvarez/typescript.nvim",
init = function()
require("lazyvim.util").on_attach(function(_, buffer)
-- stylua: ignore
vim.keymap.set( "n", "<leader>co", "TypescriptOrganizeImports", { buffer = buffer, desc = "Organize Imports" })
vim.keymap.set("n", "<leader>cR", "TypescriptRenameFile", { desc = "Rename File", buffer = buffer })
end)
end,
},
---@class PluginLspOpts
opts = {
---@type lspconfig.options
servers = {
-- tsserver will be automatically installed with mason and loaded with lspconfig
tsserver = {},
},
-- you can do any additional lsp server setup here
-- return true if you don't want this server to be setup with lspconfig
---@type table<string, fun(server:string, opts:_.lspconfig.options):boolean?>
setup = {
-- example to setup with typescript.nvim
tsserver = function(_, opts)
require("typescript").setup({ server = opts })
return true
end,
-- Specify * to use this function as a fallback for any server
-- ["*"] = function(server, opts) end,
},
},
},
-- for typescript, LazyVim also includes extra specs to properly setup lspconfig,
-- treesitter, mason and typescript.nvim. So instead of the above, you can use:
{ import = "lazyvim.plugins.extras.lang.typescript" },
-- add more treesitter parsers
{
"nvim-treesitter/nvim-treesitter",
opts = {
ensure_installed = {
"bash",
"help",
"html",
"javascript",
"json",
"lua",
"markdown",
"markdown_inline",
"python",
"query",
"regex",
"tsx",
"typescript",
"vim",
"yaml",
},
},
},
-- since `vim.tbl_deep_extend`, can only merge tables and not lists, the code above
-- would overwrite `ensure_installed` with the new value.
-- If you'd rather extend the default config, use the code below instead:
{
"nvim-treesitter/nvim-treesitter",
opts = function(_, opts)
-- add tsx and treesitter
vim.list_extend(opts.ensure_installed, {
"tsx",
"typescript",
})
end,
},
-- the opts function can also be used to change the default opts:
{
"nvim-lualine/lualine.nvim",
event = "VeryLazy",
opts = function(_, opts)
table.insert(opts.sections.lualine_x, "😄")
end,
},
-- or you can return new options to override all the defaults
{
"nvim-lualine/lualine.nvim",
event = "VeryLazy",
opts = function()
return {
--[[add your custom lualine config here]]
}
end,
},
-- use mini.starter instead of alpha
{ import = "lazyvim.plugins.extras.ui.mini-starter" },
-- add jsonls and schemastore ans setup treesitter for json, json5 and jsonc
{ import = "lazyvim.plugins.extras.lang.json" },
-- add any tools you want to have installed below
{
"williamboman/mason.nvim",
opts = {
ensure_installed = {
"stylua",
"shellcheck",
"shfmt",
"flake8",
},
},
},
-- Use <tab> for completion and snippets (supertab)
-- first: disable default <tab> and <s-tab> behavior in LuaSnip
{
"L3MON4D3/LuaSnip",
keys = function()
return {}
end,
},
-- then: setup supertab in cmp
{
"hrsh7th/nvim-cmp",
dependencies = {
"hrsh7th/cmp-emoji",
},
---@param opts cmp.ConfigSchema
opts = function(_, opts)
local has_words_before = function()
unpack = unpack or table.unpack
local line, col = unpack(vim.api.nvim_win_get_cursor(0))
return col ~= 0 and vim.api.nvim_buf_get_lines(0, line - 1, line, true)[1]:sub(col, col):match("%s") == nil
end
local luasnip = require("luasnip")
local cmp = require("cmp")
opts.mapping = vim.tbl_extend("force", opts.mapping, {
["<Tab>"] = cmp.mapping(function(fallback)
if cmp.visible() then
cmp.select_next_item()
-- You could replace the expand_or_jumpable() calls with expand_or_locally_jumpable()
-- they way you will only jump inside the snippet region
elseif luasnip.expand_or_jumpable() then
luasnip.expand_or_jump()
elseif has_words_before() then
cmp.complete()
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" }),
})
end,
},
}

View File

@@ -0,0 +1,9 @@
-- Export active buffers to VS Code
-- https://github.com/elijahmanor/export-to-vscode.nvim
return {
"elijahmanor/export-to-vscode.nvim",
keys = {
-- stylua: ignore
{ "<leader>code", function() require("export-to-vscode").launch() end, desc = "Export to VS Code" },
},
}

60
nvim/lua/plugins/fm.lua Normal file
View File

@@ -0,0 +1,60 @@
-- Use favorite terminal file managers in Neovim
-- https://github.com/is0n/fm-nvim
return {
"is0n/fm-nvim",
keys = {
{ "<M-g>", "<cmd>Lazygit<cr>", desc = "Lazygit" },
{ "<M-l>", "<cmd>Lf<cr>", desc = "Lf" },
},
opts = {
edit_cmd = "edit",
on_close = {},
on_open = {},
ui = {
default = "float",
float = {
border = "rounded",
float_hl = "Normal",
border_hl = "FloatBorder",
blend = 0,
height = 0.9,
width = 0.9,
x = 0.5,
y = 0.5,
},
split = {
direction = "topleft",
size = 24,
},
},
cmds = {
lf_cmd = "lf",
fm_cmd = "fm",
nnn_cmd = "nnn",
fff_cmd = "fff",
twf_cmd = "twf",
fzf_cmd = "fzf",
fzy_cmd = "find . | fzy",
xplr_cmd = "xplr",
vifm_cmd = "vifm",
skim_cmd = "sk",
broot_cmd = "broot",
gitui_cmd = "gitui",
ranger_cmd = "ranger",
joshuto_cmd = "joshuto",
lazygit_cmd = "lazygit",
neomutt_cmd = "neomutt",
taskwarrior_cmd = "taskwarrior-tui",
},
mappings = {
vert_split = "<C-v>",
horz_split = "<C-h>",
tabedit = "<C-t>",
edit = "<C-e>",
ESC = "<ESC>",
},
},
config = function()
require("fm-nvim").setup()
end,
}

View File

@@ -0,0 +1,8 @@
-- Open the link of current line on GitHub
-- https://github.com/ruanyl/vim-gh-line
return {
"ruanyl/vim-gh-line",
config = function()
vim.g.gh_github_domain = "source.xing.com"
end,
}

View File

@@ -0,0 +1,5 @@
-- A powerful grammar checker using LanguageTool
-- https://github.com/rhysd/vim-grammarous
return {
"rhysd/vim-grammarous",
}

View File

@@ -0,0 +1,25 @@
-- Getting you where you want with the fewest keystrokes
-- https://github.com/ThePrimeagen/harpoon
return {
"ThePrimeagen/harpoon",
dependencies = "nvim-telescope/telescope.nvim",
-- stylua: ignore
keys = {
{ "<leader>a", function() require("harpoon.ui").add_file() end, desc = "Harpoon Add File" },
{ "<leader>;", function() require("harpoon.ui").toggle_quick_menu() end, desc = "Harpoon Toggle Quickmenu" },
{ "<leader>1", function() require("harpoon.ui").nav_file(1) end, desc = "Harpoon Buffer 1" },
{ "<leader>2", function() require("harpoon.ui").nav_file(2) end, desc = "Harpoon Buffer 2" },
{ "<leader>3", function() require("harpoon.ui").nav_file(3) end, desc = "Harpoon Buffer 3" },
{ "<leader>4", function() require("harpoon.ui").nav_file(4) end, desc = "Harpoon Buffer 4" },
},
opts = {
global_settings = {
mark_branch = true,
},
width = vim.api.nvim_win_get_width(0) - 4,
},
config = function()
require("harpoon").setup()
require("telescope").load_extension("harpoon")
end,
}

View File

@@ -0,0 +1,17 @@
-- A legend for your keymaps, commands, and autocmds
-- https://github.com/mrjones2014/legendary.nvim
return {
"mrjones2014/legendary.nvim",
dependencies = {
"kkharji/sqlite.lua",
},
keys = {
-- stylua: ignore
{ "<leader>L", "<cmd>Legendary<cr>", desc = "Legendary" },
},
config = function()
require("legendary").setup({
which_key = { auto_register = true },
})
end,
}

21
nvim/lua/plugins/lf.lua Normal file
View File

@@ -0,0 +1,21 @@
-- Lf file manager for Neovim
-- https://github.com/lmburns/lf.nvim
return {
"lmburns/lf.nvim",
cmd = "Lf",
dependencies = {
"nvim-lua/plenary.nvim",
"akinsho/toggleterm.nvim",
},
keys = {
{ "<leader>fl", "<cmd>Lf<cr>", desc = "Lf File Manager" },
},
opts = {
winblend = 0,
highlights = { NormalFloat = { guibg = "NONE" } },
border = "curved",
height = 0.70,
width = 0.85,
escape_quit = true,
},
}

View File

@@ -0,0 +1,27 @@
-- Quickstart configs for Nvim LSP
-- https://github.com/neovim/nvim-lspconfig
return {
"neovim/nvim-lspconfig",
init = function()
require("lazyvim.util").on_attach(function(_, buffer)
-- stylua: ignore
vim.keymap.set("n", "g0", "<cmd>Telescope lsp_document_symbols<cr>", { buffer = buffer, desc = "Document Symbols" })
end)
end,
opts = {
servers = {
astro = {},
cssls = {},
cssmodules_ls = {},
diagnosticls = {},
emmet_ls = {},
graphql = {},
html = {},
jsonls = {},
sumneko_lua = {},
svelte = {},
tsserver = {},
yamlls = {},
},
},
}

View File

@@ -0,0 +1,97 @@
return {
"nvim-lualine/lualine.nvim",
event = "VeryLazy",
opts = function()
local icons = require("lazyvim.config").icons
local function fg(name)
return function()
---@type {foreground?:number}?
local hl = vim.api.nvim_get_hl_by_name(name, true)
return hl and hl.foreground and { fg = string.format("#%06x", hl.foreground) }
end
end
return {
options = {
icons_enabled = true,
theme = "transparent",
component_separators = { left = "", right = "" },
section_separators = { left = "", right = "" },
disabled_filetypes = { "alpha", "dashboard", "lazy " },
always_divide_middle = true,
globalstatus = true,
},
sections = {
lualine_a = { "mode" },
lualine_b = { "branch" },
lualine_c = {
{
"diagnostics",
symbols = {
error = icons.diagnostics.Error,
warn = icons.diagnostics.Warn,
info = icons.diagnostics.Info,
hint = icons.diagnostics.Hint,
},
},
{ "filetype", icon_only = true, separator = "", padding = { left = 1, right = 0 } },
{ "filename", path = 1, symbols = { modified = "", readonly = "", unnamed = "" } },
-- stylua: ignore
{
function() return require("nvim-navic").get_location() end,
cond = function() return package.loaded["nvim-navic"] and require("nvim-navic").is_available() end,
},
},
lualine_x = {
{
function()
return require("noice").api.status.command.get()
end,
cond = function()
return package.loaded["noice"] and require("noice").api.status.command.has()
end,
color = fg("Statement"),
},
{
function()
return require("noice").api.status.mode.get()
end,
cond = function()
return package.loaded["noice"] and require("noice").api.status.mode.has()
end,
color = fg("Constant"),
},
{ require("lazy.status").updates, cond = require("lazy.status").has_updates, color = fg("Special") },
{
"diff",
symbols = {
added = icons.git.added,
modified = icons.git.modified,
removed = icons.git.removed,
},
},
},
lualine_y = {
{ "progress", separator = "", padding = { left = 1, right = 0 } },
{ "location", padding = { left = 0, right = 1 } },
},
lualine_z = {
function()
return "" .. os.date("%R")
end,
},
},
inactive_sections = {
lualine_a = {},
lualine_b = {},
lualine_c = { "filename" },
lualine_x = { "location" },
lualine_y = {},
lualine_z = {},
},
tabline = {},
extensions = { "neo-tree" },
}
end,
}

View File

@@ -0,0 +1,38 @@
-- Package manager for LSP servers, DAP servers, linters, and formatters
-- https://github.com/williamboman/mason.nvim
return {
"williamboman/mason.nvim",
opts = {
ensure_installed = {
"astro-language-server",
"cspell",
"css-lsp",
"cssmodules-language-server",
"diagnostic-languageserver",
"emmet-ls",
"eslint_d",
"html-lsp",
"json-lsp",
"lua-language-server",
"markdownlint",
"prettier",
"prettierd",
"pyright",
"shellcheck",
"stylua",
"svelte-language-server",
"typescript-language-server",
"vale",
"yaml-language-server",
"yamlfmt",
},
ui = {
border = "rounded",
icons = {
package_installed = "",
package_pending = "",
package_uninstalled = "",
},
},
},
}

View File

@@ -0,0 +1,5 @@
-- Vim undo tree visualizer
-- https://github.com/simnalamburt/vim-mundo
return {
"simnalamburt/vim-mundo",
}

View File

@@ -0,0 +1,12 @@
-- Experimental UI plugin
-- https://github.com/folke/noice.nvim
return {
"folke/noice.nvim",
opts = {
lsp = {
progress = {
enabled = true,
},
},
},
}

View File

@@ -0,0 +1,10 @@
-- A fancy, configurable notification manager
-- https://github.com/rcarriga/nvim-notify
return {
"rcarriga/nvim-notify",
opts = {
render = "minimal",
stages = "static",
timeout = 2000,
},
}

View File

@@ -0,0 +1,31 @@
return {
"jose-elias-alvarez/null-ls.nvim",
config = function()
local null_ls = require("null-ls")
null_ls.setup({
debug = false,
debounce = 50,
save_after_format = false,
sources = {
null_ls.builtins.code_actions.cspell,
null_ls.builtins.code_actions.eslint,
null_ls.builtins.diagnostics.cspell,
null_ls.builtins.diagnostics.eslint,
null_ls.builtins.diagnostics.fish,
null_ls.builtins.diagnostics.markdownlint,
null_ls.builtins.diagnostics.stylelint,
null_ls.builtins.diagnostics.tsc,
null_ls.builtins.diagnostics.tsc,
null_ls.builtins.formatting.black,
null_ls.builtins.formatting.fish_indent,
null_ls.builtins.formatting.prettierd,
null_ls.builtins.formatting.shfmt,
null_ls.builtins.formatting.stylelint,
null_ls.builtins.formatting.stylua,
null_ls.builtins.formatting.trim_newlines,
null_ls.builtins.formatting.trim_whitespace,
},
root_dir = require("null-ls.utils").root_pattern("package.json", ".null-ls-root", ".neoconf.json", ".git"),
})
end,
}

View File

@@ -0,0 +1,27 @@
-- Nvim Treesitter configurations
-- https://github.com/nvim-treesitter/nvim-treesitter
return {
"nvim-treesitter/nvim-treesitter",
"nvim-treesitter/playground",
opts = {
ensure_installed = {
"astro",
"bash",
"css",
"help",
"html",
"javascript",
"json",
"lua",
"markdown",
"markdown_inline",
"python",
"query",
"regex",
"tsx",
"typescript",
"vim",
"yaml",
},
},
}

13
nvim/lua/plugins/octo.lua Normal file
View File

@@ -0,0 +1,13 @@
-- Edit and review GitHub issues and pull requests
-- https://github.com/pwntester/octo.nvim
return {
"pwntester/octo.nvim",
dependencies = {
"nvim-lua/plenary.nvim",
"nvim-telescope/telescope.nvim",
"nvim-tree/nvim-web-devicons",
},
config = function()
require("octo").setup()
end,
}

View File

@@ -0,0 +1,26 @@
return {
"MunifTanjim/prettier.nvim",
dependencies = {
"neovim/nvim-lspconfig",
"jose-elias-alvarez/null-ls.nvim",
},
config = function()
require("prettier").setup({
bin = "prettierd",
filetypes = {
"css",
"graphql",
"html",
"javascript",
"javascriptreact",
"json",
"less",
"markdown",
"scss",
"typescript",
"typescriptreact",
"yaml",
},
})
end,
}

View File

@@ -0,0 +1,23 @@
-- The superior project management solution for neovim
-- https://github.com/ahmedkhalf/project.nvim
return {
"ahmedkhalf/project.nvim",
keys = {
-- stylua: ignore
{ "<leader>p", ":Telescope projects<cr>", desc = "Search Projects" },
},
config = function()
require("project_nvim").setup({
active = true,
on_config_done = nil,
manual_mode = false,
detection_methods = { "pattern" },
patterns = { ".git", "Makefile", ".gitignore", "package.json", "!node_modules" },
show_hidden = false,
silent_chdir = true,
ignore_lsp = {},
datapath = vim.fn.stdpath("data"),
})
require("telescope").load_extension("projects")
end,
}

View File

@@ -0,0 +1,5 @@
-- Highlight columns in CSV files
-- https://github.com/mechatroner/rainbow_csv
return {
"mechatroner/rainbow_csv",
}

View File

@@ -0,0 +1,34 @@
return {
"mrjones2014/smart-splits.nvim",
keys = {
{ "<leader>wr", "<cmd>SmartResizeMode<cr>", desc = "Toggle Smart Resize Mode" },
},
config = function()
require("smart-splits").setup({
ignored_filetypes = {
"nofile",
"quickfix",
"prompt",
},
ignored_buftypes = { "NvimTree" },
default_amount = 3,
wrap_at_edge = true,
move_cursor_same_row = false,
resize_mode = {
quit_key = "<ESC>",
resize_keys = { "h", "j", "k", "l" },
silent = false,
hooks = {
on_enter = nil,
on_leave = nil,
},
},
ignored_events = {
"BufEnter",
"WinEnter",
},
tmux_integration = true,
disable_tmux_nav_when_zoomed = true,
})
end,
}

View File

@@ -0,0 +1,10 @@
-- A tree view for symbols
-- https://github.com/simrat39/symbols-outline.nvim
return {
"simrat39/symbols-outline.nvim",
config = function()
require("symbols-outline").setup({
width = 25,
})
end,
}

View File

@@ -0,0 +1,5 @@
-- Table Mode for instant table creation
-- https://github.com/dhruvasagar/vim-table-mode
return {
"dhruvasagar/vim-table-mode",
}

View File

@@ -0,0 +1,21 @@
-- Telescope extention to switch between Headlines
-- https://github.com/crispgm/telescope-heading.nvim
return {
"telescope.nvim",
dependencies = {
"crispgm/telescope-heading.nvim",
keys = {
{ "<leader>sl", "<cmd>Telescope heading<cr>", desc = "Headlines" },
},
opts = {
extensions = {
heading = {
treesitter = true,
},
},
},
config = function()
require("telescope").load_extension("heading")
end,
},
}

View File

@@ -0,0 +1,22 @@
-- Telescope extension to open your Browser bookmarks
-- https://github.com/dhruvmanila/telescope-bookmarks.nvim
return {
"telescope.nvim",
dependencies = {
"dhruvmanila/telescope-bookmarks.nvim",
keys = {
{ "<leader>sR", "<cmd>Telescope bookmarks<cr>", desc = "Brave Bookmarks" },
},
opts = {
extensions = {
bookmarks = {
selected_browser = "brave",
url_open_command = "open",
},
},
},
config = function()
require("telescope").load_extension("bookmarks")
end,
},
}

View File

@@ -0,0 +1,22 @@
-- Telescope extension for a File Browser
-- https://github.com/nvim-telescope/telescope-file-browser.nvim
return {
"telescope.nvim",
dependencies = {
"nvim-telescope/telescope-file-browser.nvim",
keys = {
{ "<leader>sB", ":Telescope file_browser path=%:p:h=%:p:h<cr>", desc = "Browse Files" },
},
opts = {
extensions = {
file_browser = {
theme = "ivy",
hijack_netrw = true,
},
},
},
config = function()
require("telescope").load_extension("file_browser")
end,
},
}

View File

@@ -0,0 +1,27 @@
-- Telescope extensionn that offers intelligent priorization
-- https://github.com/nvim-telescope/telescope-frecency.nvim
return {
"telescope.nvim",
dependencies = {
"nvim-telescope/telescope-frecency.nvim",
dependencies = {
"kkharji/sqlite.lua",
},
keys = {
{ "<leader>sf", "<cmd>Telescope frecency<cr>", desc = "Frecency" },
},
opts = {
extensions = {
frecency = {
show_scores = false,
show_unindexed = true,
ignore_patterns = { "*.git/*", "*/tmp/*" },
disable_devicons = false,
},
},
},
config = function()
require("telescope").load_extension("frecency")
end,
},
}

View File

@@ -0,0 +1,21 @@
-- Telescope extension for a FZY style sorter that is compiled
-- https://github.com/nvim-telescope/telescope-fzy-native.nvim
return {
"telescope.nvim",
dependencies = {
"nvim-telescope/telescope-fzy-native.nvim",
opts = {
extensions = {
fzy_native = {
fuzzy = true,
override_generic_sorter = true,
override_file_sorter = true,
case_mode = "smart_case",
},
},
},
config = function()
require("telescope").load_extension("fzy_native")
end,
},
}

View File

@@ -0,0 +1,12 @@
-- Telescope extension to integrate with GitHub CLI
-- https://github.com/nvim-telescope/telescope-github.nvim
return {
"telescope.nvim",
dependencies = {
"nvim-lua/plenary.nvim",
"nvim-telescope/telescope-github.nvim",
config = function()
require("telescope").load_extension("gh")
end,
},
}

View File

@@ -0,0 +1,14 @@
-- Telescope plugin to search the node_modules directory
-- https://github.com/nvim-telescope/telescope-node-modules.nvim
return {
"telescope.nvim",
dependencies = {
"nvim-telescope/telescope-node-modules.nvim",
keys = {
{ "<leader>sN", "<cmd>Telescope node_modules list<cr>", desc = "Node Modules" },
},
config = function()
require("telescope").load_extension("node_modules")
end,
},
}

View File

@@ -0,0 +1,23 @@
-- Telescope extension to view and search the undo tree
-- https://github.com/debugloop/telescope-undo.nvim
return {
"nvim-telescope/telescope.nvim",
dependencies = {
"nvim-lua/plenary.nvim",
"debugloop/telescope-undo.nvim",
},
opts = {
extensions = {
undo = {
side_by_side = true,
layout_strategy = "vertical",
layout_config = {
preview_height = 0.8,
},
},
},
},
config = function()
require("telescope").load_extension("undo")
end,
}

View File

@@ -0,0 +1,12 @@
-- Find, Filter, Preview, Pick
-- https://github.com/nvim-telescope/telescope.nvim
return {
"telescope.nvim",
keys = {
{ "<C-p>", "<cmd>Telescope find_files hidden=true<cr>", desc = "Find Files (hidden)" },
{ "<C-t>", "<cmd>Telescope<cr>", desc = "Telescope" },
{ "<M-p>", "<cmd>Telescope find_files<cr>", desc = "Find Files" },
{ "<leader>tr", "<cmd>Telescope resume<cr>", desc = "Telescope" },
{ "<leader>tu", "<cmd>Telescope undo<cr>", desc = "Undo Tree" },
},
}

View File

@@ -0,0 +1,6 @@
-- Seamless navigation between tmux panes and vim splits
-- https://github.com/christoomey/vim-tmux-navigator
return {
"christoomey/vim-tmux-navigator",
event = "VeryLazy",
}

View File

@@ -0,0 +1,12 @@
-- Remove all background colors to make Neovim transparent
-- https://github.com/xiyaowong/nvim-transparent
return {
"xiyaowong/nvim-transparent",
opts = {
enable = false,
extra_groups = {
"TelescopeBorder",
"TelescopeNormal",
},
},
}

View File

@@ -0,0 +1,8 @@
-- Distraction-free coding
-- https://github.com/folke/zen-mode.nvim
return {
"folke/twilight.nvim",
config = function()
require("twilight").setup()
end,
}

View File

@@ -0,0 +1,8 @@
return {
"chrisgrieser/nvim-various-textobjs",
config = function()
require("various-textobjs").setup({
useDefaultKeymaps = true,
})
end,
}

View File

@@ -0,0 +1,10 @@
-- Easily interact with tmux from vim
-- https://github.com/preservim/vimux
return {
"preservim/vimux",
config = function()
vim.g.VimuxHeight = "30"
vim.g.VimuxOrientation = "h"
vim.g.VimuxUseNearestPane = 0
end,
}

View File

@@ -0,0 +1,5 @@
-- Multiple cursors
-- https://github.com/mg979/vim-visual-multi
return {
"mg979/vim-visual-multi",
}

View File

@@ -0,0 +1,6 @@
-- Track time and metrics
-- https://github.com/wakatime/vim-wakatime
return {
"wakatime/vim-wakatime",
event = "VeryLazy",
}

View File

@@ -0,0 +1,5 @@
-- Extract the selection into a new file
-- https://github.com/rstacruz/vim-xtract
return {
"rstacruz/vim-xtract",
}

View File

@@ -0,0 +1,47 @@
-- Distraction-free coding
-- https://github.com/folke/zen-mode.nvim
return {
"folke/zen-mode.nvim",
keys = {
-- stylua: ignore
{ "<leader>zz", "<cmd>ZenMode<cr>", desc = "Zen Mode" },
},
config = function()
require("zen-mode").setup({
window = {
backdrop = 0.98,
width = 80,
height = 0.85,
options = {
signcolumn = "no", -- disable signcolumn
number = false, -- disable number column
relativenumber = false, -- disable relative numbers
cursorline = false, -- disable cursorline
cursorcolumn = false, -- disable cursor column
foldcolumn = "0", -- disable fold column
list = false, -- disable whitespace characters
},
},
plugins = {
options = {
enabled = true,
ruler = true, -- disables the ruler text in the cmd line area
showcmd = false, -- disables the command in the last line of the screen
},
twilight = { enabled = true }, -- enable to start Twilight when zen mode opens
gitsigns = { enabled = false }, -- disables git signs
tmux = { enabled = false }, -- disables the tmux statusline
kitty = {
enabled = true,
font = "+2", -- font size increment
},
},
on_open = function()
vim.cmd([[:IndentBlanklineDisable]])
end,
on_close = function()
vim.cmd([[:IndentBlanklineEnable]])
end,
})
end,
}