new config using vim.pack

This commit is contained in:
Dario48 2026-03-31 21:49:56 +02:00
commit 17fda33a90
52 changed files with 629 additions and 659 deletions

1
.gitignore vendored
View file

@ -1 +0,0 @@
lazy-lock.json

View file

@ -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

View file

@ -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,
})

View file

@ -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

View file

@ -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

View file

@ -1,3 +0,0 @@
vim.opt.conceallevel = 2
vim.opt.concealcursor = "nc"
vim.opt.foldlevel = 99

View file

@ -1,4 +0,0 @@
local conf = vim.lsp.config.qmlls
conf.root_markers = { ".qmlls.ini" }
vim.lsp.config("qmlls", conf)
vim.lsp.enable("qmlls")

View file

View file

@ -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

View file

@ -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 = {},
}

View file

@ -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,
})

View file

@ -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

View file

@ -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")

View file

@ -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" },
})

View file

@ -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,
}

View file

@ -1,4 +0,0 @@
return {
"LukasPietzschmann/boo.nvim",
opts = {},
}

View file

@ -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,
}

View file

@ -1,5 +0,0 @@
return {
"vyfor/cord.nvim",
build = ":Cord update",
-- opts = {}
}

View file

@ -1,4 +0,0 @@
return {
url = "https://dario48.site/git/Dario48/darioline.git",
config = true,
}

View file

@ -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
View 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
View 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,
}

View file

@ -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,
}

View file

@ -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
View 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,
}

View file

@ -1,3 +0,0 @@
return {
"kmonad/kmonad-vim",
}

View file

@ -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
View 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,
}

View file

@ -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,
}

View 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,
}

View file

@ -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,
}

View file

@ -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,
}

View file

@ -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,
}

View file

@ -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,
}

View file

@ -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,
},
}

View file

@ -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,
}

View file

@ -1,4 +0,0 @@
return {
"taeber/vim-peg",
lazy = false,
}

8
lua/plugins/plenary.lua Normal file
View 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
View 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,
}

View file

@ -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,
}

View 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,
}

View file

@ -1,3 +0,0 @@
return {
"lambdalisue/vim-suda",
}

View 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,
}

View file

@ -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 = "*",
}

View file

@ -1,3 +0,0 @@
return {
"Apeiros-46B/uiua.vim",
}

View file

@ -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,
}

View file

@ -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,
}

View file

@ -1,5 +0,0 @@
return {
"luk400/vim-jukit",
lazu = true,
ft = "ipynb",
}

View file

@ -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",
},
},
}

View file

@ -1,4 +0,0 @@
return {
"folke/which-key.nvim",
dependencies = { "nvim-tree/nvim-web-devicons" },
}

127
lua/utils/plugins.lua Normal file
View 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
View 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"
}
}
}