new config using vim.pack
This commit is contained in:
parent
e685165044
commit
17fda33a90
52 changed files with 629 additions and 659 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
|
@ -1 +0,0 @@
|
|||
lazy-lock.json
|
||||
|
|
@ -1,8 +0,0 @@
|
|||
local conf = vim.lsp.config.hls
|
||||
vim.lsp.config("hls", conf)
|
||||
vim.lsp.enable("hls")
|
||||
|
||||
vim.o.tabstop = 2
|
||||
vim.o.softtabstop = 0
|
||||
vim.o.shiftwidth = 0
|
||||
vim.o.expandtab = true
|
||||
|
|
@ -1,12 +0,0 @@
|
|||
local port = tonumber(os.getenv("GDScript_Port")) or 6005
|
||||
local cmd = vim.lsp.rpc.connect("127.0.0.1", port)
|
||||
local pipe = "/tmp/godot.pipe" -- I use /tmp/godot.pipe
|
||||
|
||||
vim.lsp.start({
|
||||
name = "Godot",
|
||||
cmd = cmd,
|
||||
root_dir = vim.fs.dirname(vim.fs.find({ "project.godot", ".git" }, { upward = true })[1]),
|
||||
on_attach = function(client, bufnr)
|
||||
vim.api.nvim_command('echo serverstart("' .. pipe .. '")')
|
||||
end,
|
||||
})
|
||||
|
|
@ -1,8 +0,0 @@
|
|||
local conf = vim.lsp.config.hls
|
||||
vim.lsp.config("hls", conf)
|
||||
vim.lsp.enable("hls")
|
||||
|
||||
vim.o.tabstop = 2
|
||||
vim.o.softtabstop = 0
|
||||
vim.o.shiftwidth = 0
|
||||
vim.o.expandtab = true
|
||||
|
|
@ -1,8 +0,0 @@
|
|||
local conf = vim.lsp.config.hls
|
||||
vim.lsp.config("hls", conf)
|
||||
vim.lsp.enable("hls")
|
||||
|
||||
vim.o.tabstop = 2
|
||||
vim.o.softtabstop = 0
|
||||
vim.o.shiftwidth = 0
|
||||
vim.o.expandtab = true
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
vim.opt.conceallevel = 2
|
||||
vim.opt.concealcursor = "nc"
|
||||
vim.opt.foldlevel = 99
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
local conf = vim.lsp.config.qmlls
|
||||
conf.root_markers = { ".qmlls.ini" }
|
||||
vim.lsp.config("qmlls", conf)
|
||||
vim.lsp.enable("qmlls")
|
||||
36
init.lua
36
init.lua
|
|
@ -1,4 +1,36 @@
|
|||
require("config.lazy")
|
||||
require("config.general")
|
||||
require("config.autocmd")
|
||||
require("config.lsp")
|
||||
|
||||
local plugins = {
|
||||
"lsp",
|
||||
"mason-bridge",
|
||||
"mason",
|
||||
"formatter",
|
||||
"treesitter",
|
||||
"nvim-lint",
|
||||
|
||||
-- "neorg",
|
||||
|
||||
"nightfox",
|
||||
|
||||
"statusline",
|
||||
|
||||
"ansi",
|
||||
"rpc",
|
||||
"utils",
|
||||
|
||||
"images",
|
||||
"diagrams",
|
||||
"table-mode",
|
||||
|
||||
"plenary",
|
||||
"fuzzyfind",
|
||||
|
||||
"latex",
|
||||
}
|
||||
|
||||
local putils = require("utils.plugins")
|
||||
|
||||
for _, plugin in pairs(plugins) do
|
||||
putils.parse(putils.get(plugin))
|
||||
end
|
||||
|
|
|
|||
|
|
@ -1,17 +0,0 @@
|
|||
return {
|
||||
cmd = { "ocamllsp" },
|
||||
filetypes = {
|
||||
"ocaml",
|
||||
"ocaml.interface",
|
||||
"ocaml.menhir",
|
||||
"ocaml.ocamllex",
|
||||
"dune",
|
||||
"reason",
|
||||
},
|
||||
root_markers = {
|
||||
{ "dune-project", "dune-workspace" },
|
||||
{ "*.opam", "esy.json", "package.json" },
|
||||
".git",
|
||||
},
|
||||
settings = {},
|
||||
}
|
||||
|
|
@ -1,12 +0,0 @@
|
|||
-- put this in your init.lua
|
||||
vim.api.nvim_create_autocmd({ "BufEnter", "BufWinEnter" }, {
|
||||
pattern = { "*.yuck" },
|
||||
callback = function(event)
|
||||
print(string.format("starting yuck;s for %s", vim.inspect(event)))
|
||||
vim.lsp.start({
|
||||
name = "YuckLs",
|
||||
cmd = { "yuckls" }, -- if installed from aur
|
||||
root_dir = vim.fn.getcwd(),
|
||||
})
|
||||
end,
|
||||
})
|
||||
|
|
@ -17,7 +17,11 @@ vim.keymap.set("t", "<Esc>", "<C-\\><C-N>", {})
|
|||
|
||||
vim.keymap.set("n", ".", ":", {})
|
||||
|
||||
vim.keymap.set("i", "jk", "", {})
|
||||
vim.keymap.set("i", "jk", "␛", {})
|
||||
|
||||
vim.cmd("nnoremap <Space> <Nop>")
|
||||
vim.g.mapleader = " "
|
||||
vim.g.maplocalleader = ","
|
||||
|
||||
vim.opt.termguicolors = true
|
||||
|
||||
|
|
|
|||
|
|
@ -1,28 +0,0 @@
|
|||
-- Bootstrap lazy.nvim
|
||||
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
|
||||
if not (vim.uv or vim.loop).fs_stat(lazypath) then
|
||||
local lazyrepo = "https://github.com/folke/lazy.nvim.git"
|
||||
local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath })
|
||||
if vim.v.shell_error ~= 0 then
|
||||
vim.api.nvim_echo({
|
||||
{ "Failed to clone lazy.nvim:\n", "ErrorMsg" },
|
||||
{ out, "WarningMsg" },
|
||||
{ "\nPress any key to exit..." },
|
||||
}, true, {})
|
||||
vim.fn.getchar()
|
||||
os.exit(1)
|
||||
end
|
||||
end
|
||||
vim.opt.rtp:prepend(lazypath)
|
||||
|
||||
-- Make sure to setup `mapleader` and `maplocalleader` before
|
||||
-- loading lazy.nvim so that mappings are correct.
|
||||
-- This is also a good place to setup other settings (vim.opt)
|
||||
vim.cmd("nnoremap <Space> <Nop>")
|
||||
vim.g.mapleader = " "
|
||||
vim.g.maplocalleader = ","
|
||||
|
||||
vim.keymap.set("n", "<leader>l", function() require"lazy".home() end, { silent = true, desc = "open lazy.nvim"})
|
||||
|
||||
-- Setup lazy.nvim
|
||||
require("lazy").setup("plugins")
|
||||
|
|
@ -1,4 +1,3 @@
|
|||
-- lsp that are not on mason/beta branch lsp
|
||||
vim.lsp.enable("zls")
|
||||
vim.lsp.enable("ocamllsp")
|
||||
vim.lsp.enable("ocamllsp")
|
||||
|
|
@ -9,3 +8,4 @@ vim.lsp.config("llvm-ir-lsp", {
|
|||
cmd = { "llvm-ir-lsp" },
|
||||
filetypes = { "llvm" },
|
||||
})
|
||||
|
||||
|
|
|
|||
|
|
@ -1,8 +1,11 @@
|
|||
---@module "utils.plugins"
|
||||
---@type Plugin
|
||||
return {
|
||||
"0xferrous/ansi.nvim",
|
||||
config = true,
|
||||
opts = {
|
||||
auto_enable = false, -- Auto-enable for configured filetypes
|
||||
filetypes = { "log", "ansi" }, -- Filetypes to auto-enable
|
||||
},
|
||||
configure = function(load)
|
||||
load("0xferrous/ansi.nvim")
|
||||
require("ansi").setup({
|
||||
auto_enable = false, -- Auto-enable for configured filetypes
|
||||
filetypes = { "log", "ansi" }, -- Filetypes to auto-enable
|
||||
})
|
||||
end,
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +0,0 @@
|
|||
return {
|
||||
"LukasPietzschmann/boo.nvim",
|
||||
opts = {},
|
||||
}
|
||||
|
|
@ -1,53 +0,0 @@
|
|||
return {
|
||||
"stevearc/conform.nvim",
|
||||
dependencies = { "frostplexx/mason-bridge.nvim" },
|
||||
event = { "BufWritePre" },
|
||||
cmd = { "ConformInfo" },
|
||||
init = function()
|
||||
require("conform").setup({
|
||||
format_on_save = function(bufnr)
|
||||
if vim.g.disable_autoformat or vim.b[bufnr].disable_autoformat then
|
||||
return
|
||||
end
|
||||
require("conform").formatters_by_ft = require("mason-bridge").get_formatters()
|
||||
return { timeout_ms = 200, lsp_fallback = true }, on_format
|
||||
end,
|
||||
formatters_by_ft = require("mason-bridge").get_formatters(), --[[ = {
|
||||
lua = { "stylua" },
|
||||
javascript = { "prettier" },
|
||||
html = { "prettier" },
|
||||
css = { "prettier" },
|
||||
c = { "clang-format" },
|
||||
cpp = { "clang-format" },
|
||||
arduino = { "clang-format" },
|
||||
sh = { "shfmt" },
|
||||
bash = { "shfmt" },
|
||||
mksh = { "shfmt" },
|
||||
json = { "jq" },
|
||||
}, ]] --
|
||||
|
||||
-- This will provide type hinting with LuaLS
|
||||
---@module "conform"
|
||||
---@type conform.setupOpts
|
||||
formatters = {
|
||||
prettier = {
|
||||
prepend_args = { "--use-tabs", "true" },
|
||||
},
|
||||
jq = {
|
||||
prepend_args = { "--tab" },
|
||||
},
|
||||
["clang-format"] = {
|
||||
prepend_args = function(self, ctx)
|
||||
return { "-style=file:/home/Dario48/.config/.clang-format" }
|
||||
end,
|
||||
},
|
||||
default_format_opts = {
|
||||
lsp_format = "fallback",
|
||||
},
|
||||
},
|
||||
})
|
||||
-- If you want the formatexpr, here is the place to set it
|
||||
vim.o.formatexpr = "v:lua.require'conform'.formatexpr()"
|
||||
vim.g.arduino_recommended_style = 0
|
||||
end,
|
||||
}
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
return {
|
||||
"vyfor/cord.nvim",
|
||||
build = ":Cord update",
|
||||
-- opts = {}
|
||||
}
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
return {
|
||||
url = "https://dario48.site/git/Dario48/darioline.git",
|
||||
config = true,
|
||||
}
|
||||
|
|
@ -1,40 +0,0 @@
|
|||
return {
|
||||
"3rd/diagram.nvim",
|
||||
dependencies = {
|
||||
{ "3rd/image.nvim" }, -- you'd probably want to configure image.nvim manually instead of doing this
|
||||
},
|
||||
opts = { -- you can just pass {}, defaults below
|
||||
events = {
|
||||
render_buffer = { "InsertLeave", "BufWinEnter", "TextChanged" },
|
||||
clear_buffer = { "BufLeave" },
|
||||
},
|
||||
renderer_options = {
|
||||
mermaid = {
|
||||
background = nil, -- nil | "transparent" | "white" | "#hex"
|
||||
theme = nil, -- nil | "default" | "dark" | "forest" | "neutral"
|
||||
scale = 1, -- nil | 1 (default) | 2 | 3 | ...
|
||||
width = nil, -- nil | 800 | 400 | ...
|
||||
height = nil, -- nil | 600 | 300 | ...
|
||||
cli_args = nil, -- nil | { "--no-sandbox" } | { "-p", "/path/to/puppeteer" } | ...
|
||||
},
|
||||
plantuml = {
|
||||
charset = nil,
|
||||
cli_args = nil, -- nil | { "-Djava.awt.headless=true" } | ...
|
||||
},
|
||||
d2 = {
|
||||
theme_id = nil,
|
||||
dark_theme_id = nil,
|
||||
scale = nil,
|
||||
layout = nil,
|
||||
sketch = nil,
|
||||
cli_args = nil, -- nil | { "--pad", "0" } | ...
|
||||
},
|
||||
gnuplot = {
|
||||
size = nil, -- nil | "800,600" | ...
|
||||
font = nil, -- nil | "Arial,12" | ...
|
||||
theme = nil, -- nil | "light" | "dark" | custom theme string
|
||||
cli_args = nil, -- nil | { "-p" } | { "-c", "config.plt" } | ...
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
21
lua/plugins/diagrams.lua
Normal file
21
lua/plugins/diagrams.lua
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
---@module "utils.plugins"
|
||||
---@type Plugin
|
||||
return {
|
||||
after = "images",
|
||||
configure = function(load)
|
||||
--load("3rd/diagram.nvim")
|
||||
--require("diagram").setup()
|
||||
|
||||
load("jbyuki/venn.nvim")
|
||||
vim.b.ve = "all"
|
||||
|
||||
vim.api.nvim_create_user_command("VennInit", function()
|
||||
vim.keymap.set("n", "J", "<C-v>j:VBox<CR>", { noremap = true })
|
||||
vim.keymap.set("n", "K", "<C-v>k:VBox<CR>", { noremap = true })
|
||||
vim.keymap.set("n", "L", "<C-v>l:VBox<CR>", { noremap = true })
|
||||
vim.keymap.set("n", "H", "<C-v>h:VBox<CR>", { noremap = true })
|
||||
-- draw a box by pressing "f" with visual selection,
|
||||
vim.keymap.set("v", "f", ":VBox<CR>", { noremap = true })
|
||||
end, {})
|
||||
end,
|
||||
}
|
||||
47
lua/plugins/formatter.lua
Normal file
47
lua/plugins/formatter.lua
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
---@module "utils.plugins"
|
||||
---@type Plugin
|
||||
return {
|
||||
after = "mason-bridge",
|
||||
configure = function(load)
|
||||
load("stevearc/conform.nvim")
|
||||
|
||||
require("conform").setup({
|
||||
formatters_by_ft = require("mason-bridge").get_formatters(),
|
||||
|
||||
format_on_save = function(bufnr)
|
||||
require("conform").formatters_by_ft = require("mason-bridge").get_formatters()
|
||||
|
||||
if vim.g.disable_autoformat or vim.b[bufnr].disable_autoformat then
|
||||
return
|
||||
else
|
||||
return { timeout_ms = 500, lsp_format = "fallback" }
|
||||
end
|
||||
end,
|
||||
})
|
||||
|
||||
vim.api.nvim_create_user_command("FormatDisable", function(args)
|
||||
if args.bang then
|
||||
-- FormatDisable! will disable formatting globally
|
||||
vim.g.disable_autoformat = true
|
||||
else
|
||||
vim.b.disable_autoformat = true
|
||||
end
|
||||
end, {
|
||||
desc = "Disable autoformat-on-save",
|
||||
bang = true,
|
||||
})
|
||||
vim.api.nvim_create_user_command("FormatEnable", function(args)
|
||||
if args.bang then
|
||||
-- FormatDisable! will disable formatting globally
|
||||
vim.g.disable_autoformat = false
|
||||
else
|
||||
vim.b.disable_autoformat = false
|
||||
end
|
||||
end, {
|
||||
desc = "Enable autoformat-on-save",
|
||||
bang = true,
|
||||
})
|
||||
|
||||
vim.o.formatexpr = "v:lua.require'conform'.formatexpr()"
|
||||
end,
|
||||
}
|
||||
|
|
@ -1,11 +1,14 @@
|
|||
---@module "utils.plugins"
|
||||
---@type Plugin
|
||||
return {
|
||||
"nvim-telescope/telescope.nvim",
|
||||
dependencies = { "nvim-lua/plenary.nvim" },
|
||||
|
||||
keys = {
|
||||
{ "<leader>ff", require("telescope.builtin").find_files, desc = "Telescope find files" },
|
||||
{ "<leader>fg", require("telescope.builtin").live_grep, desc = "Telescope live grep" },
|
||||
{ "<leader>fb", require("telescope.builtin").buffers, desc = "Telescope buffers" },
|
||||
{ "<leader>fh", require("telescope.builtin").help_tags, desc = "Telescope help tags" },
|
||||
},
|
||||
after = "plenary",
|
||||
configures = "telescope",
|
||||
configure = function(load)
|
||||
load("nvim-telescope/telescope.nvim")
|
||||
require("telescope").setup()
|
||||
vim.keymap.set("n", "<leader>ff", require("telescope.builtin").find_files, { desc = "Telescope find files" })
|
||||
vim.keymap.set("n", "<leader>fg", require("telescope.builtin").live_grep, { desc = "Telescope live grep" })
|
||||
vim.keymap.set("n", "<leader>fb", require("telescope.builtin").buffers, { desc = "Telescope buffers" })
|
||||
vim.keymap.set("n", "<leader>fh", require("telescope.builtin").help_tags, { desc = "Telescope help tags" })
|
||||
end,
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,17 +0,0 @@
|
|||
return {
|
||||
"3rd/image.nvim",
|
||||
opts = {
|
||||
integrations = {
|
||||
markdown = {
|
||||
enabled = true,
|
||||
clear_in_insert_mode = false,
|
||||
download_remote_images = true,
|
||||
only_render_image_at_cursor = false,
|
||||
only_render_image_at_cursor_mode = "popup", -- or "inline"
|
||||
floating_windows = true, -- if true, images will be rendered in floating markdown windows
|
||||
filetypes = { "markdown", "vimwiki", "latex" }, -- markdown extensions (ie. quarto) can go here
|
||||
},
|
||||
},
|
||||
},
|
||||
config = true,
|
||||
}
|
||||
22
lua/plugins/images.lua
Normal file
22
lua/plugins/images.lua
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
---@module "utils.plugins"
|
||||
---@type Plugin
|
||||
return {
|
||||
configures = "images",
|
||||
configure = function(load)
|
||||
load("3rd/image.nvim")
|
||||
|
||||
require("image").setup({
|
||||
integrations = {
|
||||
markdown = {
|
||||
enabled = true,
|
||||
clear_in_insert_mode = false,
|
||||
download_remote_images = true,
|
||||
only_render_image_at_cursor = false,
|
||||
only_render_image_at_cursor_mode = "popup", -- or "inline"
|
||||
floating_windows = true, -- if true, images will be rendered in floating markdown windows
|
||||
filetypes = { "markdown", "vimwiki", "latex" }, -- markdown extensions (ie. quarto) can go here
|
||||
},
|
||||
},
|
||||
})
|
||||
end,
|
||||
}
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
return {
|
||||
"kmonad/kmonad-vim",
|
||||
}
|
||||
|
|
@ -1,7 +1,9 @@
|
|||
---@module "utils.plugins"
|
||||
---@type Plugin
|
||||
return {
|
||||
"lervag/vimtex",
|
||||
init = function()
|
||||
-- VimTeX configuration goes here, e.g.
|
||||
configure = function(load)
|
||||
load("lervag/vimtex")
|
||||
|
||||
vim.g.vimtex_view_method = "mupdf"
|
||||
vim.g.vimtex_compiler_method = "latexmk"
|
||||
vim.g.vimtex_compiler_latexmk = { options = { "-shell-escape" } }
|
||||
99
lua/plugins/lsp.lua
Normal file
99
lua/plugins/lsp.lua
Normal file
|
|
@ -0,0 +1,99 @@
|
|||
---@module "utils.plugins"
|
||||
---@type Plugin
|
||||
return {
|
||||
after = "mason",
|
||||
configure = function(load)
|
||||
load("neovim/nvim-lspconfig")
|
||||
|
||||
load("folke/lazydev.nvim")
|
||||
require("lazydev").setup({})
|
||||
|
||||
--[[
|
||||
---@type vim.lsp.Config
|
||||
local config = {
|
||||
---@type lspconfig.settings.lua_ls
|
||||
settings = {
|
||||
Lua = {
|
||||
runtime = {
|
||||
version = "LuaJIT",
|
||||
},
|
||||
workspace = {
|
||||
preloadFileSize = 10000,
|
||||
library = {
|
||||
vim.env.VIMRUNTIME,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
vim.lsp.config("lua_ls", config)
|
||||
]]
|
||||
--
|
||||
|
||||
vim.api.nvim_create_autocmd("LspAttach", {
|
||||
callback = function(args)
|
||||
local client = vim.lsp.get_client_by_id(args.data.client_id)
|
||||
if client and client:supports_method("textDocument/completion") then
|
||||
vim.lsp.completion.enable(true, client.id, args.buf, { autotrigger = true })
|
||||
end
|
||||
end,
|
||||
})
|
||||
vim.opt.completeopt = { "menuone", "noinsert", "popup" }
|
||||
vim.keymap.set("i", "<Tab>", function()
|
||||
if vim.fn.pumvisible() == 1 then
|
||||
return "<C-y>"
|
||||
end
|
||||
return "<Tab>"
|
||||
end, { expr = true })
|
||||
|
||||
-- Reserve a space in the gutter
|
||||
-- This will avoid an annoying layout shift in the screen
|
||||
vim.opt.signcolumn = "yes"
|
||||
vim.api.nvim_create_autocmd("LspAttach", {
|
||||
desc = "LSP actions",
|
||||
callback = function(event)
|
||||
local opts = { buffer = event.buf }
|
||||
|
||||
vim.keymap.set("n", "K", function()
|
||||
vim.lsp.buf.hover()
|
||||
end, opts)
|
||||
vim.keymap.set("n", "gd", function()
|
||||
vim.lsp.buf.definition()
|
||||
end, opts)
|
||||
vim.keymap.set("n", "gD", function()
|
||||
vim.lsp.buf.declaration()
|
||||
end, opts)
|
||||
vim.keymap.set("n", "gi", function()
|
||||
vim.lsp.buf.implementation()
|
||||
end, opts)
|
||||
vim.keymap.set("n", "go", function()
|
||||
vim.lsp.buf.type_definition()
|
||||
end, opts)
|
||||
vim.keymap.set("n", "gr", function()
|
||||
vim.lsp.buf.references()
|
||||
end, opts)
|
||||
vim.keymap.set("n", "gs", function()
|
||||
vim.lsp.buf.signature_help()
|
||||
end, opts)
|
||||
vim.keymap.set("n", "<F2>", function()
|
||||
vim.lsp.buf.rename()
|
||||
end, opts)
|
||||
vim.keymap.set({ "n", "x" }, "<F3>", function()
|
||||
vim.lsp.buf.format({ async = true })
|
||||
end, opts)
|
||||
vim.keymap.set("n", "<leader>f", function()
|
||||
vim.lsp.buf.code_action()
|
||||
end, opts)
|
||||
end,
|
||||
})
|
||||
|
||||
load("mason-org/mason-lspconfig.nvim")
|
||||
|
||||
require("mason-lspconfig").setup({
|
||||
automatic_enable = true,
|
||||
})
|
||||
|
||||
load("LukasPietzschmann/boo.nvim")
|
||||
end,
|
||||
}
|
||||
|
|
@ -1,59 +0,0 @@
|
|||
return {
|
||||
"neovim/nvim-lspconfig",
|
||||
dependencies = {
|
||||
{ "hrsh7th/cmp-nvim-lsp" },
|
||||
{ "hrsh7th/nvim-cmp" },
|
||||
},
|
||||
config = function()
|
||||
-- Reserve a space in the gutter
|
||||
-- This will avoid an annoying layout shift in the screen
|
||||
vim.opt.signcolumn = "yes"
|
||||
|
||||
-- Add cmp_nvim_lsp capabilities settings to lspconfig
|
||||
-- This should be executed before you configure any language server
|
||||
local lspconfig_defaults = require("lspconfig").util.default_config
|
||||
lspconfig_defaults.capabilities = vim.tbl_deep_extend(
|
||||
"force",
|
||||
lspconfig_defaults.capabilities,
|
||||
require("cmp_nvim_lsp").default_capabilities()
|
||||
)
|
||||
|
||||
vim.api.nvim_create_autocmd("LspAttach", {
|
||||
desc = "LSP actions",
|
||||
callback = function(event)
|
||||
local opts = { buffer = event.buf }
|
||||
|
||||
vim.keymap.set("n", "K", function()
|
||||
vim.lsp.buf.hover()
|
||||
end, opts)
|
||||
vim.keymap.set("n", "gd", function()
|
||||
vim.lsp.buf.definition()
|
||||
end, opts)
|
||||
vim.keymap.set("n", "gD", function()
|
||||
vim.lsp.buf.declaration()
|
||||
end, opts)
|
||||
vim.keymap.set("n", "gi", function()
|
||||
vim.lsp.buf.implementation()
|
||||
end, opts)
|
||||
vim.keymap.set("n", "go", function()
|
||||
vim.lsp.buf.type_definition()
|
||||
end, opts)
|
||||
vim.keymap.set("n", "gr", function()
|
||||
vim.lsp.buf.references()
|
||||
end, opts)
|
||||
vim.keymap.set("n", "gs", function()
|
||||
vim.lsp.buf.signature_help()
|
||||
end, opts)
|
||||
vim.keymap.set("n", "<F2>", function()
|
||||
vim.lsp.buf.rename()
|
||||
end, opts)
|
||||
vim.keymap.set({ "n", "x" }, "<F3>", function()
|
||||
vim.lsp.buf.format({ async = true })
|
||||
end, opts)
|
||||
vim.keymap.set("n", "<leader>f", function()
|
||||
vim.lsp.buf.code_action()
|
||||
end, opts)
|
||||
end,
|
||||
})
|
||||
end,
|
||||
}
|
||||
10
lua/plugins/mason-bridge.lua
Normal file
10
lua/plugins/mason-bridge.lua
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
---@module "utils.plugins"
|
||||
---@type Plugin
|
||||
return {
|
||||
after = "mason",
|
||||
configures = "mason-bridge",
|
||||
configure = function(load)
|
||||
load("frostplexx/mason-bridge.nvim")
|
||||
require("mason-bridge").setup({})
|
||||
end,
|
||||
}
|
||||
|
|
@ -1,72 +1,13 @@
|
|||
---@module "utils.plugins"
|
||||
---@type Plugin
|
||||
return {
|
||||
{
|
||||
"williamboman/mason.nvim",
|
||||
configures = "mason",
|
||||
configure = function(load)
|
||||
load("mason-org/mason.nvim")
|
||||
vim.keymap.set("n", "<leader>m", ":Mason<CR>", { desc = "open mason" })
|
||||
|
||||
keys = {
|
||||
{ "<leader>m", ":Mason <CR>", desc = "open mason" },
|
||||
},
|
||||
config = true,
|
||||
opts = {
|
||||
require("mason").setup({
|
||||
PATH = "append",
|
||||
},
|
||||
},
|
||||
{
|
||||
"williamboman/mason-lspconfig.nvim",
|
||||
dependencies = { "williamboman/mason.nvim" },
|
||||
opts = {
|
||||
-- Replace the language servers listed here
|
||||
-- with the ones you want to install
|
||||
ensure_installed = { "lua_ls", "clangd", "hyprls" },
|
||||
handlers = {
|
||||
function(server_name)
|
||||
vim.lsp.enable(server_name)
|
||||
end,
|
||||
|
||||
["lua_ls"] = function()
|
||||
vim.lsp.config("lua_ls", {
|
||||
settings = {
|
||||
Lua = {
|
||||
runtime = {
|
||||
-- Tell the language server which version of Lua you're using
|
||||
-- (most likely LuaJIT in the case of Neovim)
|
||||
version = "LuaJIT",
|
||||
},
|
||||
-- Make the server aware of Neovim runtime files
|
||||
workspace = {
|
||||
checkThirdParty = false,
|
||||
library = {
|
||||
vim.env.VIMRUNTIME,
|
||||
-- Depending on the usage, you might want to add additional paths here.
|
||||
-- "${3rd}/luv/library"
|
||||
-- "${3rd}/busted/library",
|
||||
},
|
||||
-- or pull in all of 'runtimepath'. NOTE: this is a lot slower
|
||||
-- library = vim.api.nvim_get_runtime_file("", true)
|
||||
completion = {
|
||||
callSnippet = "Replace",
|
||||
},
|
||||
doc = {
|
||||
privateName = { "^_" },
|
||||
},
|
||||
hint = {
|
||||
enable = true,
|
||||
setType = false,
|
||||
paramType = true,
|
||||
paramName = "Disable",
|
||||
semicolon = "Disable",
|
||||
arrayIndex = "Disable",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
})
|
||||
end,
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
"frostplexx/mason-bridge.nvim",
|
||||
dependencies = { "williamboman/mason.nvim" },
|
||||
config = true,
|
||||
},
|
||||
})
|
||||
end,
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,52 +0,0 @@
|
|||
return {
|
||||
dependencies = { "nvim-lua/plenary.nvim" },
|
||||
"milanglacier/minuet-ai.nvim",
|
||||
config = function()
|
||||
require("minuet").setup({
|
||||
provider = "openai_fim_compatible",
|
||||
n_completions = 1, -- recommend for local model for resource saving
|
||||
context_window = 512,
|
||||
provider_options = {
|
||||
openai_fim_compatible = {
|
||||
-- For Windows users, TERM may not be present in environment variables.
|
||||
-- Consider using APPDATA instead.
|
||||
api_key = "TERM",
|
||||
name = "LLama.cpp",
|
||||
end_point = "http://localhost:8012/v1/completions",
|
||||
model = "PLACEHOLDER",
|
||||
optional = {
|
||||
max_tokens = 56,
|
||||
top_p = 0.9,
|
||||
},
|
||||
template = {
|
||||
prompt = function(context_before_cursor, context_after_cursor, _)
|
||||
return "<|fim_prefix|>"
|
||||
.. context_before_cursor
|
||||
.. "<|fim_suffix|>"
|
||||
.. context_after_cursor
|
||||
.. "<|fim_middle|>"
|
||||
end,
|
||||
suffix = false,
|
||||
},
|
||||
},
|
||||
},
|
||||
virtualtext = {
|
||||
auto_trigger_ft = {},
|
||||
keymap = {
|
||||
-- accept whole completion
|
||||
accept = "<M-T>",
|
||||
-- accept one line
|
||||
accept_line = "<M-t>",
|
||||
-- accept n lines (prompts for number)
|
||||
-- e.g. "A-z 2 CR" will accept 2 lines
|
||||
accept_n_lines = "<M-z>",
|
||||
-- Cycle to prev completion item, or manually invoke completion
|
||||
prev = "<M-h>",
|
||||
-- Cycle to next completion item, or manually invoke completion
|
||||
next = "<M-l>",
|
||||
dismiss = "<M-e>",
|
||||
},
|
||||
},
|
||||
})
|
||||
end,
|
||||
}
|
||||
|
|
@ -1,43 +1,38 @@
|
|||
---@module "utils.plugins"
|
||||
---@type Plugin
|
||||
return {
|
||||
"nvim-neorg/neorg",
|
||||
lazy = false, -- Disable lazy loading as some `lazy.nvim` distributions set `lazy = true` by default
|
||||
dependencies = {
|
||||
{
|
||||
"juniorsundar/neorg-extras",
|
||||
-- tag = "v0.3.1" -- Always a safe bet to track current latest release
|
||||
},
|
||||
"nvim-telescope/telescope.nvim", -- Required for the Neorg-Roam features
|
||||
"nvim-lua/plenary.nvim", -- Required as part of Telescope installation
|
||||
"nvim-treesitter/nvim-treesitter",
|
||||
},
|
||||
opts = {
|
||||
load = {
|
||||
["external.many-mans"] = {
|
||||
config = {
|
||||
metadata_fold = true, -- If want @data property ... @end to fold
|
||||
code_fold = true, -- If want @code ... @end to fold
|
||||
},
|
||||
},
|
||||
["core.defaults"] = {},
|
||||
["core.concealer"] = {},
|
||||
["core.dirman"] = {
|
||||
config = {
|
||||
workspaces = {
|
||||
school = "~/Documents/school",
|
||||
notes = "~/Documents/notes",
|
||||
uni = "~/Documents/uni",
|
||||
after = { "telescope", "nvim-treesitter" },
|
||||
configure = function(load)
|
||||
load("nvim-neotest/nvim-nio")
|
||||
load("pysan3/pathlib.nvim")
|
||||
load("nvim-neorg/lua-utils.nvim")
|
||||
load("juniorsundar/neorg-extras")
|
||||
load("nvim-neorg/neorg")
|
||||
require("neorg").setup({
|
||||
load = {
|
||||
["external.many-mans"] = {
|
||||
config = {
|
||||
metadata_fold = true, -- If want @data property ... @end to fold
|
||||
code_fold = true, -- If want @code ... @end to fold
|
||||
},
|
||||
},
|
||||
["core.defaults"] = {},
|
||||
["core.concealer"] = {},
|
||||
-- ["core.completion"] = { config = { engine = "nvim-cmp" } },
|
||||
-- ["core.integrations.treesitter"] = {},
|
||||
["core.clipboard.code-blocks"] = {},
|
||||
["core.esupports.indent"] = {},
|
||||
["core.dirman"] = {
|
||||
config = {
|
||||
workspaces = {
|
||||
school = "~/Documents/school",
|
||||
notes = "~/Documents/notes",
|
||||
uni = "~/Documents/uni",
|
||||
},
|
||||
default_workspace = "notes",
|
||||
},
|
||||
default_workspace = "notes",
|
||||
},
|
||||
},
|
||||
["core.completion"] = { config = { engine = "nvim-cmp" } },
|
||||
["core.integrations.treesitter"] = {},
|
||||
["core.clipboard.code-blocks"] = {},
|
||||
["core.esupports.indent"] = {},
|
||||
},
|
||||
},
|
||||
ft = "norg",
|
||||
cmd = "Neorg",
|
||||
config = true,
|
||||
version = "*",
|
||||
})
|
||||
end,
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,8 @@
|
|||
---@module "utils.plugins"
|
||||
---@type Plugin
|
||||
return {
|
||||
"EdenEast/nightfox.nvim",
|
||||
init = function()
|
||||
configure = function(load)
|
||||
load("EdenEast/nightfox.nvim")
|
||||
vim.cmd("colorscheme carbonfox")
|
||||
end
|
||||
end,
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,79 +0,0 @@
|
|||
return {
|
||||
{
|
||||
"hrsh7th/nvim-cmp",
|
||||
dependencies = {
|
||||
"hrsh7th/cmp-nvim-lsp",
|
||||
"hrsh7th/cmp-path",
|
||||
"hrsh7th/cmp-cmdline",
|
||||
"hrsh7th/cmp-nvim-lua",
|
||||
"neovim/nvim-lspconfig",
|
||||
"mtoohey31/cmp-fish",
|
||||
"petertriho/cmp-git",
|
||||
},
|
||||
config = function()
|
||||
local cmp = require("cmp")
|
||||
|
||||
cmp.setup({
|
||||
sources = {
|
||||
{
|
||||
name = "lazydev",
|
||||
group_index = 0, -- set group index to 0 to skip loading LuaLS completions
|
||||
},
|
||||
{ name = "nvim_lua" },
|
||||
{
|
||||
name = "nvim_lsp",
|
||||
entry_filter = function(entry, ctx)
|
||||
local kind = require("cmp.types").lsp.CompletionItemKind[entry:get_kind()]
|
||||
|
||||
if kind == "Text" then
|
||||
return false
|
||||
end
|
||||
return true
|
||||
end,
|
||||
},
|
||||
{ name = "neorg" },
|
||||
{ name = "fish" },
|
||||
},
|
||||
snippet = {
|
||||
expand = function(args)
|
||||
-- You need Neovim v0.10 to use vim.snippet
|
||||
vim.snippet.expand(args.body)
|
||||
end,
|
||||
},
|
||||
cmp.setup.filetype("gitcommit", {
|
||||
sources = cmp.config.sources({
|
||||
{ name = "git" },
|
||||
}, {
|
||||
{ name = "buffer" },
|
||||
}),
|
||||
}),
|
||||
require("cmp_git").setup({}),
|
||||
|
||||
window = {
|
||||
completion = cmp.config.window.bordered(),
|
||||
documentation = cmp.config.window.bordered(),
|
||||
},
|
||||
mapping = cmp.mapping.preset.insert({
|
||||
["<C-Space>"] = cmp.mapping.complete(),
|
||||
["<S-NL>"] = cmp.mapping.scroll_docs(-4),
|
||||
["<C-S-K>"] = cmp.mapping.scroll_docs(-4),
|
||||
[" "] = cmp.mapping.confirm(),
|
||||
}),
|
||||
})
|
||||
end,
|
||||
},
|
||||
{
|
||||
"folke/lazydev.nvim",
|
||||
ft = "lua", -- only load on lua files
|
||||
config = function()
|
||||
local lazydev = require("lazydev")
|
||||
require("lazydev").setup()
|
||||
vim.lsp.enable("lua_ls")
|
||||
vim.lsp.config("lua_ls", {
|
||||
root_dir = function(bufnr, on_dir)
|
||||
on_dir(lazydev.find_workspace(bufnr))
|
||||
end,
|
||||
})
|
||||
end,
|
||||
},
|
||||
}
|
||||
|
|
@ -1,9 +1,13 @@
|
|||
---@module "utils.plugins"
|
||||
---@type Plugin
|
||||
return {
|
||||
"mfussenegger/nvim-lint",
|
||||
init = function()
|
||||
after = "mason-bridge",
|
||||
configure = function(load)
|
||||
load("mfussenegger/nvim-lint")
|
||||
vim.api.nvim_create_autocmd({ "BufWritePost" }, {
|
||||
callback = function()
|
||||
require "lint".try_lint()
|
||||
require("lint").linters_by_ft = require("mason-bridge").get_linters()
|
||||
require("lint").try_lint()
|
||||
end,
|
||||
})
|
||||
|
||||
|
|
@ -15,5 +19,5 @@ return {
|
|||
})
|
||||
|
||||
require("lint").linters_by_ft = require("mason-bridge").get_linters()
|
||||
end
|
||||
end,
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +0,0 @@
|
|||
return {
|
||||
"taeber/vim-peg",
|
||||
lazy = false,
|
||||
}
|
||||
8
lua/plugins/plenary.lua
Normal file
8
lua/plugins/plenary.lua
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
---@module "utils.plugins"
|
||||
---@type Plugin
|
||||
return {
|
||||
configures = "plenary",
|
||||
configure = function(load)
|
||||
load("nvim-lua/plenary.nvim")
|
||||
end,
|
||||
}
|
||||
13
lua/plugins/rpc.lua
Normal file
13
lua/plugins/rpc.lua
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
---@module "utils.plugins"
|
||||
---@type Plugin
|
||||
return {
|
||||
configure = function(load)
|
||||
load("vyfor/cord.nvim")
|
||||
require("cord").setup({
|
||||
display = {
|
||||
theme = "catppuccin",
|
||||
flavor = "dark",
|
||||
},
|
||||
})
|
||||
end,
|
||||
}
|
||||
|
|
@ -1,32 +0,0 @@
|
|||
return {
|
||||
"michaelb/sniprun",
|
||||
branch = "master",
|
||||
|
||||
build = "sh install.sh",
|
||||
-- do 'sh install.sh 1' if you want to force compile locally
|
||||
-- (instead of fetching a binary from the github release). Requires Rust >= 1.65
|
||||
|
||||
opts = {
|
||||
repl_enable = { "Mathematica_original" },
|
||||
interpreter_options = {
|
||||
Lua_nvim = {
|
||||
use_on_filetypes = { "lua" },
|
||||
},
|
||||
Mathematica_original = {
|
||||
use_javagraphics_if_contains = { "Plot" }, -- a pattern that need <<JavaGraphics
|
||||
},
|
||||
},
|
||||
display = {
|
||||
"VirtualLine",
|
||||
},
|
||||
live_mode_toggle = "enable",
|
||||
},
|
||||
keys = {
|
||||
{ "<leader>r", "<Plug>SnipRun", desc = "run snipper", silent = true },
|
||||
{ "<leader>R", "<Plug>SnipLive", desc = "run snipper in REPL mode", silent = true },
|
||||
},
|
||||
|
||||
lazy = false,
|
||||
|
||||
config = true,
|
||||
}
|
||||
8
lua/plugins/statusline.lua
Normal file
8
lua/plugins/statusline.lua
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
---@module "utils.plugins"
|
||||
---@type Plugin
|
||||
return {
|
||||
configure = function(load)
|
||||
load({ "Dario48/darioline", source = "https://dario48.site/git/" })
|
||||
require("darioline").setup()
|
||||
end,
|
||||
}
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
return {
|
||||
"lambdalisue/vim-suda",
|
||||
}
|
||||
15
lua/plugins/table-mode.lua
Normal file
15
lua/plugins/table-mode.lua
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
---@module "utils.plugins"
|
||||
---@type Plugin
|
||||
return {
|
||||
configure = function(load)
|
||||
load("dhruvasagar/vim-table-mode")
|
||||
|
||||
vim.g.table_mode_corner = "+"
|
||||
|
||||
vim.keymap.set("n", "<LocalLeader>tm", "<cmd>TableModeToggle<cr>", { desc = "toggla table mode" })
|
||||
vim.keymap.set("n", "<LocalLeader>tt", "<cmd>Tableize<cr>", { desc = "transform CVS to table" })
|
||||
vim.keymap.set("n", "<LocalLeader>T", function()
|
||||
vim.api.nvim_command("Tableize/" .. vim.fn.input("what separator to use? "))
|
||||
end, { desc = "transform CVS to table" })
|
||||
end,
|
||||
}
|
||||
|
|
@ -1,24 +1,20 @@
|
|||
---@module "utils.plugins"
|
||||
---@type Plugin
|
||||
return {
|
||||
"nvim-treesitter/nvim-treesitter",
|
||||
opts = {
|
||||
-- A list of parser names, or "all" (the listed parsers MUST always be installed)
|
||||
ensure_installed = { "c", "lua", "vim", "vimdoc", "query" },
|
||||
configures = "nvim-treesitter",
|
||||
configure = function(load)
|
||||
load("nvim-treesitter/nvim-treesitter")
|
||||
|
||||
-- Install parsers synchronously (only applied to `ensure_installed`)
|
||||
sync_install = true,
|
||||
require("nvim-treesitter").install({ "c", "lua", "vim", "vimdoc", "query" }):wait(300000)
|
||||
|
||||
-- Automatically install missing parsers when entering buffer
|
||||
-- Recommendation: set to false if you don't have `tree-sitter` CLI installed locally
|
||||
auto_install = false,
|
||||
|
||||
-- List of parsers to ignore installing (or "all")
|
||||
|
||||
---- If you need to change the installation directory of the parsers (see -> Advanced Setup)
|
||||
-- parser_install_dir = "/some/path/to/store/parsers", -- Remember to run vim.opt.runtimepath:append("/some/path/to/store/parsers")!
|
||||
highlight = { enable = true },
|
||||
},
|
||||
config = function(_, opts)
|
||||
require("nvim-treesitter.configs").setup(opts)
|
||||
vim.api.nvim_create_autocmd("FileType", {
|
||||
pattern = require("nvim-treesitter").get_installed(),
|
||||
callback = function()
|
||||
vim.treesitter.start()
|
||||
end,
|
||||
})
|
||||
end,
|
||||
onUpdate = function()
|
||||
vim.cmd("TSUpdate")
|
||||
end,
|
||||
version = "*",
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,3 +0,0 @@
|
|||
return {
|
||||
"Apeiros-46B/uiua.vim",
|
||||
}
|
||||
|
|
@ -1,7 +1,9 @@
|
|||
---@module "utils.plugins"
|
||||
---@type Plugin
|
||||
return {
|
||||
"HiPhish/rainbow-delimiters.nvim",
|
||||
lazy = false,
|
||||
init = function()
|
||||
configure = function(load)
|
||||
load("HiPhish/rainbow-delimiters.nvim")
|
||||
|
||||
-- This module contains a number of default definitions
|
||||
local rainbow_delimiters = require("rainbow-delimiters")
|
||||
|
||||
|
|
@ -29,5 +31,8 @@ return {
|
|||
"RainbowDelimiterCyan",
|
||||
},
|
||||
}
|
||||
|
||||
load("nvim-tree/nvim-web-devicons")
|
||||
load("folke/which-key.nvim")
|
||||
end,
|
||||
}
|
||||
|
|
@ -1,18 +0,0 @@
|
|||
return {
|
||||
"jbyuki/venn.nvim",
|
||||
|
||||
config = function()
|
||||
vim.b.ve = "all"
|
||||
end,
|
||||
|
||||
keys = {
|
||||
{ "J", "<C-v>j:VBox<CR>", mode = "n", noremap = true },
|
||||
{ "K", "<C-v>k:VBox<CR>", mode = "n", noremap = true },
|
||||
{ "L", "<C-v>l:VBox<CR>", mode = "n", noremap = true },
|
||||
{ "H", "<C-v>h:VBox<CR>", mode = "n", noremap = true },
|
||||
-- draw a box by pressing "f" with visual selection,
|
||||
{ "f", ":VBox<CR>", mode = "v", noremap = true },
|
||||
},
|
||||
|
||||
lazy = true,
|
||||
}
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
return {
|
||||
"luk400/vim-jukit",
|
||||
lazu = true,
|
||||
ft = "ipynb",
|
||||
}
|
||||
|
|
@ -1,17 +0,0 @@
|
|||
return {
|
||||
"dhruvasagar/vim-table-mode",
|
||||
config = function()
|
||||
vim.g.table_mode_corner = "+"
|
||||
end,
|
||||
keys = {
|
||||
{ "<LocalLeader>tm", "<cmd>TableModeToggle<cr>", desc = "toggla table mode" },
|
||||
{ "<LocalLeader>tt", "<cmd>Tableize<cr>", desc = "transform CVS to table" },
|
||||
{
|
||||
"<LocalLeader>T",
|
||||
function()
|
||||
vim.api.nvim_command("Tableize/" .. vim.fn.input("what separator to use? "))
|
||||
end,
|
||||
desc = "transform CVS to table",
|
||||
},
|
||||
},
|
||||
}
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
return {
|
||||
"folke/which-key.nvim",
|
||||
dependencies = { "nvim-tree/nvim-web-devicons" },
|
||||
}
|
||||
127
lua/utils/plugins.lua
Normal file
127
lua/utils/plugins.lua
Normal file
|
|
@ -0,0 +1,127 @@
|
|||
local M = {}
|
||||
|
||||
M.loaded = {}
|
||||
|
||||
M.waiting = {}
|
||||
|
||||
---nice utility wrapper around vim.pack.add
|
||||
---@param plugin string|table
|
||||
function M.load(plugin)
|
||||
if plugin == nil then
|
||||
error("value passed to load is nil")
|
||||
end
|
||||
if type(plugin) == "table" then
|
||||
if type(plugin[1]) == "table" then
|
||||
for _, i in ipairs(plugin) do
|
||||
M.load(i)
|
||||
end
|
||||
elseif type(plugin[1]) == "string" then
|
||||
local name = plugin[1]
|
||||
if plugin.source == nil then
|
||||
name = "https://github.com/" .. name
|
||||
elseif type(plugin.source) == "string" then
|
||||
name = plugin.source .. name
|
||||
else
|
||||
error("plugin source must be either string or nil")
|
||||
end
|
||||
|
||||
if plugin.load == nil then
|
||||
vim.pack.add({ name })
|
||||
else
|
||||
vim.pack.add({ name }, { load = plugin.load })
|
||||
end
|
||||
else
|
||||
error("table passed to load is invalid")
|
||||
end
|
||||
elseif type(plugin) == "string" then
|
||||
vim.pack.add({ "https://github.com/" .. plugin })
|
||||
else
|
||||
error("value passed to load must be string or table [of tables]* of strings")
|
||||
end
|
||||
end
|
||||
|
||||
---get plugin, expect it to be in @VIMRC/lua/plugins/name.lua
|
||||
---@param plugin string
|
||||
---@return Plugin
|
||||
function M.get(plugin)
|
||||
return require("plugins." .. plugin)
|
||||
end
|
||||
|
||||
---@param pkg Plugin
|
||||
---@return boolean
|
||||
local isDoneWaiting = function(pkg)
|
||||
local after = pkg.after
|
||||
---@cast after table
|
||||
|
||||
for _, i in pairs(after) do
|
||||
if not M.loaded[i] then
|
||||
return false
|
||||
end
|
||||
end
|
||||
return true
|
||||
end
|
||||
|
||||
---@class Plugin
|
||||
---@field configure fun(load: fun(string)): nil
|
||||
---@field after? string|table
|
||||
---@field configures? string
|
||||
---@field onUpdate? fun(ev): nil
|
||||
|
||||
---parse a plugin in the util.Plugin format
|
||||
---@param plugin Plugin
|
||||
function M.parse(plugin)
|
||||
local load = false
|
||||
if plugin.after == nil then
|
||||
load = true
|
||||
elseif type(plugin.after) == "string" then
|
||||
load = M.loaded[plugin.after]
|
||||
else
|
||||
load = isDoneWaiting(plugin)
|
||||
end
|
||||
|
||||
if load then
|
||||
plugin.configure(M.load)
|
||||
|
||||
if plugin.configures ~= nil then
|
||||
M.loaded[plugin.configures] = true
|
||||
|
||||
if M.waiting[plugin.configures] ~= nil then
|
||||
for _, i in pairs(M.waiting[plugin.configures]) do
|
||||
M.parse(i)
|
||||
end
|
||||
end
|
||||
M.waiting[plugin.configures] = nil
|
||||
if plugin.onUpdate ~= nil then
|
||||
vim.api.nvim_create_autocmd("PackChanged", {
|
||||
callback = function(ev)
|
||||
local name, kind = ev.data.spec.name, ev.data.kind
|
||||
if name == plugin.configures and kind == "update" then
|
||||
if not ev.data.active then
|
||||
vim.cmd.packadd(plugin.configures)
|
||||
end
|
||||
plugin.onUpdate(ev)
|
||||
end
|
||||
end,
|
||||
})
|
||||
end
|
||||
end
|
||||
else
|
||||
if type(plugin.after == "string") then
|
||||
if M.waiting[plugin.after] == nil then
|
||||
M.waiting[plugin.after] = {}
|
||||
end
|
||||
table.insert(M.waiting[plugin.after], plugin)
|
||||
else
|
||||
local after = plugin.after
|
||||
---@cast after table
|
||||
for _, i in pairs(after) do
|
||||
if M.waiting[i] == nil then
|
||||
M.waiting[i] = {}
|
||||
end
|
||||
table.insert(M.waiting[i], plugin)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
return M
|
||||
116
nvim-pack-lock.json
Normal file
116
nvim-pack-lock.json
Normal file
|
|
@ -0,0 +1,116 @@
|
|||
{
|
||||
"plugins": {
|
||||
"ansi.nvim": {
|
||||
"rev": "63462a1550878a5f1a89d5383279775e1882948e",
|
||||
"src": "https://github.com/0xferrous/ansi.nvim"
|
||||
},
|
||||
"boo.nvim": {
|
||||
"rev": "926b2e92c7e4341ef5e64c7c8f3373768f5e9437",
|
||||
"src": "https://github.com/LukasPietzschmann/boo.nvim"
|
||||
},
|
||||
"conform.nvim": {
|
||||
"rev": "086a40dc7ed8242c03be9f47fbcee68699cc2395",
|
||||
"src": "https://github.com/stevearc/conform.nvim"
|
||||
},
|
||||
"cord.nvim": {
|
||||
"rev": "283e4a5bdafd0d6187f28e5b739cccab6b4c9c64",
|
||||
"src": "https://github.com/vyfor/cord.nvim"
|
||||
},
|
||||
"darioline": {
|
||||
"rev": "e13f982d3fb11ef62938f5f1b00e205965e94662",
|
||||
"src": "https://dario48.site/git/Dario48/darioline"
|
||||
},
|
||||
"diagram.nvim": {
|
||||
"rev": "89d8110ec15021ac9a03ff2317d27b900c45bf60",
|
||||
"src": "https://github.com/3rd/diagram.nvim"
|
||||
},
|
||||
"image.nvim": {
|
||||
"rev": "da2be65c153ba15a14a342b05591652a6df70d58",
|
||||
"src": "https://github.com/3rd/image.nvim"
|
||||
},
|
||||
"lazydev.nvim": {
|
||||
"rev": "ff2cbcba459b637ec3fd165a2be59b7bbaeedf0d",
|
||||
"src": "https://github.com/folke/lazydev.nvim"
|
||||
},
|
||||
"lua-utils.nvim": {
|
||||
"rev": "e565749421f4bbb5d2e85e37c3cef9d56553d8bd",
|
||||
"src": "https://github.com/nvim-neorg/lua-utils.nvim"
|
||||
},
|
||||
"mason-bridge.nvim": {
|
||||
"rev": "19bc564adbb44eaf151e863ffb0a439c4b8c4a79",
|
||||
"src": "https://github.com/frostplexx/mason-bridge.nvim"
|
||||
},
|
||||
"mason-lspconfig.nvim": {
|
||||
"rev": "25f609e7fca78af7cede4f9fa3af8a94b1c4950b",
|
||||
"src": "https://github.com/mason-org/mason-lspconfig.nvim"
|
||||
},
|
||||
"mason.nvim": {
|
||||
"rev": "44d1e90e1f66e077268191e3ee9d2ac97cc18e65",
|
||||
"src": "https://github.com/mason-org/mason.nvim"
|
||||
},
|
||||
"neorg": {
|
||||
"rev": "338f601c7c164e7e3ded7539f209c1f12344a5d5",
|
||||
"src": "https://github.com/nvim-neorg/neorg"
|
||||
},
|
||||
"neorg-extras": {
|
||||
"rev": "6e5f33c6e3be0a72134dde576fd95c8ca018f531",
|
||||
"src": "https://github.com/juniorsundar/neorg-extras"
|
||||
},
|
||||
"nightfox.nvim": {
|
||||
"rev": "ba47d4b4c5ec308718641ba7402c143836f35aa9",
|
||||
"src": "https://github.com/EdenEast/nightfox.nvim"
|
||||
},
|
||||
"nvim-lint": {
|
||||
"rev": "4b03656c09c1561f89b6aa0665c15d292ba9499d",
|
||||
"src": "https://github.com/mfussenegger/nvim-lint"
|
||||
},
|
||||
"nvim-lspconfig": {
|
||||
"rev": "16812abf0e8d8175155f26143a8504e8253e92b0",
|
||||
"src": "https://github.com/neovim/nvim-lspconfig"
|
||||
},
|
||||
"nvim-nio": {
|
||||
"rev": "21f5324bfac14e22ba26553caf69ec76ae8a7662",
|
||||
"src": "https://github.com/nvim-neotest/nvim-nio"
|
||||
},
|
||||
"nvim-treesitter": {
|
||||
"rev": "7caec274fd19c12b55902a5b795100d21531391f",
|
||||
"src": "https://github.com/nvim-treesitter/nvim-treesitter"
|
||||
},
|
||||
"nvim-web-devicons": {
|
||||
"rev": "d7462543c9e366c0d196c7f67a945eaaf5d99414",
|
||||
"src": "https://github.com/nvim-tree/nvim-web-devicons"
|
||||
},
|
||||
"pathlib.nvim": {
|
||||
"rev": "57e5598af6fe253761c1b48e0b59b7cd6699e2c1",
|
||||
"src": "https://github.com/pysan3/pathlib.nvim"
|
||||
},
|
||||
"plenary.nvim": {
|
||||
"rev": "b9fd5226c2f76c951fc8ed5923d85e4de065e509",
|
||||
"src": "https://github.com/nvim-lua/plenary.nvim"
|
||||
},
|
||||
"rainbow-delimiters.nvim": {
|
||||
"rev": "50080ed0f44dbc18ae13b81278a01b951a06127a",
|
||||
"src": "https://github.com/HiPhish/rainbow-delimiters.nvim"
|
||||
},
|
||||
"telescope.nvim": {
|
||||
"rev": "cfb85dcf7f822b79224e9e6aef9e8c794211b20b",
|
||||
"src": "https://github.com/nvim-telescope/telescope.nvim"
|
||||
},
|
||||
"venn.nvim": {
|
||||
"rev": "b09c2f36ddf70b498281845109bedcf08a7e0de0",
|
||||
"src": "https://github.com/jbyuki/venn.nvim"
|
||||
},
|
||||
"vim-table-mode": {
|
||||
"rev": "bb025308a45c67c7c8f0763ba37bc2ee3f534df0",
|
||||
"src": "https://github.com/dhruvasagar/vim-table-mode"
|
||||
},
|
||||
"vimtex": {
|
||||
"rev": "9306903316c3ddd250676b7cf97c84a84c9c8f99",
|
||||
"src": "https://github.com/lervag/vimtex"
|
||||
},
|
||||
"which-key.nvim": {
|
||||
"rev": "3aab2147e74890957785941f0c1ad87d0a44c15a",
|
||||
"src": "https://github.com/folke/which-key.nvim"
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue