feat(nvim): add LazyVim-based configuration
This commit is contained in:
@@ -0,0 +1,8 @@
|
|||||||
|
tt.*
|
||||||
|
.tests
|
||||||
|
doc/tags
|
||||||
|
debug
|
||||||
|
.repro
|
||||||
|
foo.*
|
||||||
|
*.log
|
||||||
|
data
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
{
|
||||||
|
"neodev": {
|
||||||
|
"library": {
|
||||||
|
"enabled": true,
|
||||||
|
"plugins": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"neoconf": {
|
||||||
|
"plugins": {
|
||||||
|
"lua_ls": {
|
||||||
|
"enabled": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
-- bootstrap lazy.nvim, LazyVim and your plugins
|
||||||
|
require("config.lazy")
|
||||||
|
|
||||||
|
-- Associate .puml files with plantuml filetype
|
||||||
|
vim.filetype.add({
|
||||||
|
extension = {
|
||||||
|
puml = "plantuml",
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
-- vim.g.plugins_debug = true
|
||||||
@@ -0,0 +1,56 @@
|
|||||||
|
{
|
||||||
|
"LazyVim": { "branch": "main", "commit": "c10948c50b18fae7f256433afdef09e432410480" },
|
||||||
|
"SchemaStore.nvim": { "branch": "main", "commit": "3d2c297f7152208daf4a382ea7123f9e4ebf9da1" },
|
||||||
|
"blink.cmp": { "branch": "main", "commit": "78336bc89ee5365633bcf754d93df01678b5c08f" },
|
||||||
|
"bufferline.nvim": { "branch": "main", "commit": "655133c3b4c3e5e05ec549b9f8cc2894ac6f51b3" },
|
||||||
|
"catppuccin": { "branch": "main", "commit": "79e2049a0fdf7ec840f8463fe1d962c94493196b" },
|
||||||
|
"clangd_extensions.nvim": { "branch": "main", "commit": "78c2ecd659d54972be17aa6ba2deac3c53223b80" },
|
||||||
|
"cmake-tools.nvim": { "branch": "master", "commit": "22859d754b5de738cfe9945e0910729f63deefd0" },
|
||||||
|
"conform.nvim": { "branch": "master", "commit": "619363c30309d29ffa631e67c8183f2a72caa373" },
|
||||||
|
"crates.nvim": { "branch": "main", "commit": "694357861ec9ebf12475ddcdd04ea45a0923c32d" },
|
||||||
|
"diffview.nvim": { "branch": "main", "commit": "4516612fe98ff56ae0415a259ff6361a89419b0a" },
|
||||||
|
"flash.nvim": { "branch": "main", "commit": "b6346946d10d07998efee029fb0f7a593806d0cd" },
|
||||||
|
"friendly-snippets": { "branch": "main", "commit": "6cd7280adead7f586db6fccbd15d2cac7e2188b9" },
|
||||||
|
"gitsigns.nvim": { "branch": "main", "commit": "31d6fb2d618bca1482b9f274751ead5f03461408" },
|
||||||
|
"grug-far.nvim": { "branch": "main", "commit": "0f6a5d0d7a70659b11bbcd6b3673ee0fe61b6024" },
|
||||||
|
"lazy.nvim": { "branch": "main", "commit": "85c7ff3711b730b4030d03144f6db6375044ae82" },
|
||||||
|
"lazydev.nvim": { "branch": "main", "commit": "ff2cbcba459b637ec3fd165a2be59b7bbaeedf0d" },
|
||||||
|
"lualine.nvim": { "branch": "master", "commit": "221ce6b2d999187044529f49da6554a92f740a96" },
|
||||||
|
"markdown-preview.nvim": { "branch": "master", "commit": "a923f5fc5ba36a3b17e289dc35dc17f66d0548ee" },
|
||||||
|
"mason-lspconfig.nvim": { "branch": "main", "commit": "7adc933dabcc7c86ae6b07aff7ee68eac398491f" },
|
||||||
|
"mason-nvim-dap.nvim": { "branch": "main", "commit": "9a10e096703966335bd5c46c8c875d5b0690dade" },
|
||||||
|
"mason.nvim": { "branch": "main", "commit": "2a6940af80375532e5e9e7c1f2fc6319a1b7a69d" },
|
||||||
|
"mini.ai": { "branch": "main", "commit": "25248c6aa002391936a6200f12d1466015987133" },
|
||||||
|
"mini.icons": { "branch": "main", "commit": "98faae31e9be1cc054ae63485e58ceb185efcad0" },
|
||||||
|
"mini.pairs": { "branch": "main", "commit": "b1c5a726921b7a8c9321e9a7a208aa0571de5810" },
|
||||||
|
"mini.surround": { "branch": "main", "commit": "8d5d0c5aa92449368ac251e85451d79d8f69d296" },
|
||||||
|
"noice.nvim": { "branch": "main", "commit": "7bfd942445fb63089b59f97ca487d605e715f155" },
|
||||||
|
"nui.nvim": { "branch": "main", "commit": "de740991c12411b663994b2860f1a4fd0937c130" },
|
||||||
|
"nvim-dap": { "branch": "master", "commit": "9e848e09a697ee95302a3ef2dd43fd6eb709e570" },
|
||||||
|
"nvim-dap-go": { "branch": "main", "commit": "b4421153ead5d726603b02743ea40cf26a51ed5f" },
|
||||||
|
"nvim-dap-python": { "branch": "master", "commit": "1808458eba2b18f178f990e01376941a42c7f93b" },
|
||||||
|
"nvim-dap-ui": { "branch": "master", "commit": "cc9dd33aade7f20bae414d0cba163bc60d4d4b43" },
|
||||||
|
"nvim-dap-virtual-text": { "branch": "master", "commit": "fbdb48c2ed45f4a8293d0d483f7730d24467ccb6" },
|
||||||
|
"nvim-jdtls": { "branch": "master", "commit": "6e9d953f0b82bccdb834cfde0e893f3119c22592" },
|
||||||
|
"nvim-lint": { "branch": "master", "commit": "a219b2c9e5b4765e5c845aba119dad55806fcaf1" },
|
||||||
|
"nvim-lspconfig": { "branch": "master", "commit": "d592c1e6ad9a0a01b3d5ed3f0345d68407167181" },
|
||||||
|
"nvim-nio": { "branch": "master", "commit": "edcc181a875301dd21840189aa2f2f9ad69fc172" },
|
||||||
|
"nvim-treesitter": { "branch": "main", "commit": "8b3a191c015dd66a92d51a112ed96af0aac13b63" },
|
||||||
|
"nvim-treesitter-textobjects": { "branch": "main", "commit": "898ee307df58f854d11cd7edd06472574d48014e" },
|
||||||
|
"nvim-ts-autotag": { "branch": "main", "commit": "88c1453db4ba7dd24131086fe51fdf74e587d275" },
|
||||||
|
"omnisharp-extended-lsp.nvim": { "branch": "main", "commit": "51e407a46ddb15e49727139b5b1ae3650cd6a069" },
|
||||||
|
"open-browser.vim": { "branch": "master", "commit": "7d4c1d8198e889d513a030b5a83faa07606bac27" },
|
||||||
|
"persistence.nvim": { "branch": "main", "commit": "b20b2a7887bd39c1a356980b45e03250f3dce49c" },
|
||||||
|
"plantuml-previewer.vim": { "branch": "master", "commit": "368a1f331c1ff29f6a3ee76facfca39a7f374b13" },
|
||||||
|
"plantuml-syntax": { "branch": "master", "commit": "9d4900aa16674bf5bb8296a72b975317d573b547" },
|
||||||
|
"plenary.nvim": { "branch": "master", "commit": "74b06c6c75e4eeb3108ec01852001636d85a932b" },
|
||||||
|
"render-markdown.nvim": { "branch": "main", "commit": "f422cb5c6855f150e2ddcfaf44e7157b98b34f6a" },
|
||||||
|
"rustaceanvim": { "branch": "main", "commit": "32969563686a262ef91161b54a1cac66b2d5a766" },
|
||||||
|
"snacks.nvim": { "branch": "main", "commit": "882c996cf28183f4d63640de0b4c02ec886d01f2" },
|
||||||
|
"todo-comments.nvim": { "branch": "main", "commit": "31e3c38ce9b29781e4422fc0322eb0a21f4e8668" },
|
||||||
|
"tokyonight.nvim": { "branch": "main", "commit": "cdc07ac78467a233fd62c493de29a17e0cf2b2b6" },
|
||||||
|
"trouble.nvim": { "branch": "main", "commit": "bd67efe408d4816e25e8491cc5ad4088e708a69a" },
|
||||||
|
"ts-comments.nvim": { "branch": "main", "commit": "a59d6092213447450191122c9346f309161504cb" },
|
||||||
|
"venv-selector.nvim": { "branch": "main", "commit": "cc4bb3975de8835291f9bb45889e96c6b2795fc4" },
|
||||||
|
"which-key.nvim": { "branch": "main", "commit": "3aab2147e74890957785941f0c1ad87d0a44c15a" }
|
||||||
|
}
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
{
|
||||||
|
"extras": [
|
||||||
|
"lazyvim.plugins.extras.coding.mini-surround",
|
||||||
|
"lazyvim.plugins.extras.lang.cmake",
|
||||||
|
"lazyvim.plugins.extras.lang.git",
|
||||||
|
"lazyvim.plugins.extras.lang.java"
|
||||||
|
],
|
||||||
|
"install_version": 8,
|
||||||
|
"news": {
|
||||||
|
"NEWS.md": "11866"
|
||||||
|
},
|
||||||
|
"version": 8
|
||||||
|
}
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
-- Autocmds are automatically loaded on the VeryLazy event
|
||||||
|
-- Default autocmds that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/autocmds.lua
|
||||||
|
--
|
||||||
|
-- Add any additional autocmds here
|
||||||
|
-- with `vim.api.nvim_create_autocmd`
|
||||||
|
--
|
||||||
|
-- Or remove existing autocmds by their group name (which is prefixed with `lazyvim_` for the defaults)
|
||||||
|
-- e.g. vim.api.nvim_del_augroup_by_name("lazyvim_wrap_spell")
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
-- Keymaps are automatically loaded on the VeryLazy event
|
||||||
|
-- Default keymaps that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/keymaps.lua
|
||||||
|
-- Add any additional keymaps here
|
||||||
|
|
||||||
|
Snacks.toggle.option("list", { name = "Invisible chars" }):map("<leader>uv")
|
||||||
@@ -0,0 +1,100 @@
|
|||||||
|
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)
|
||||||
|
|
||||||
|
-- Import all custom plugins recursively
|
||||||
|
local plugin_specs = require("utils.scanner").scan("plugins")
|
||||||
|
|
||||||
|
if vim.g.plugins_debug then
|
||||||
|
vim.notify(string.format("[plugins] Found %d import(s)", #plugin_specs), vim.log.levels.INFO)
|
||||||
|
for i, spec in ipairs(plugin_specs) do
|
||||||
|
vim.notify(string.format("[plugins] %d. %s", i, spec.import), vim.log.levels.INFO)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
require("lazy").setup({
|
||||||
|
spec = {
|
||||||
|
-- add LazyVim and import its plugins
|
||||||
|
{ "LazyVim/LazyVim", import = "lazyvim.plugins" },
|
||||||
|
|
||||||
|
-- LazyVim extras would go here
|
||||||
|
{ import = "lazyvim.plugins.extras.dap.core" },
|
||||||
|
{ import = "lazyvim.plugins.extras.lang.clangd" },
|
||||||
|
{ import = "lazyvim.plugins.extras.lang.cmake" },
|
||||||
|
{ import = "lazyvim.plugins.extras.lang.docker" },
|
||||||
|
{ import = "lazyvim.plugins.extras.lang.dotnet" },
|
||||||
|
{ import = "lazyvim.plugins.extras.lang.git" },
|
||||||
|
{ import = "lazyvim.plugins.extras.lang.go" },
|
||||||
|
{ import = "lazyvim.plugins.extras.lang.java" },
|
||||||
|
{ import = "lazyvim.plugins.extras.lang.json" },
|
||||||
|
{ import = "lazyvim.plugins.extras.lang.markdown" },
|
||||||
|
{ import = "lazyvim.plugins.extras.lang.python" },
|
||||||
|
{ import = "lazyvim.plugins.extras.lang.rust" },
|
||||||
|
{ import = "lazyvim.plugins.extras.lang.toml" },
|
||||||
|
{ import = "lazyvim.plugins.extras.lang.typescript" },
|
||||||
|
{ import = "lazyvim.plugins.extras.lang.yaml" },
|
||||||
|
|
||||||
|
-- Your own plugins must be last
|
||||||
|
unpack(plugin_specs),
|
||||||
|
},
|
||||||
|
|
||||||
|
defaults = {
|
||||||
|
-- By default, only LazyVim plugins will be lazy-loaded.
|
||||||
|
-- Your custom plugins will load during startup.
|
||||||
|
lazy = false,
|
||||||
|
|
||||||
|
-- It's recommended to leave version=false for now.
|
||||||
|
version = false,
|
||||||
|
},
|
||||||
|
|
||||||
|
install = {
|
||||||
|
colorscheme = {
|
||||||
|
"tokyonight",
|
||||||
|
"habamax",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
checker = {
|
||||||
|
enabled = true,
|
||||||
|
notify = false,
|
||||||
|
},
|
||||||
|
|
||||||
|
performance = {
|
||||||
|
rtp = {
|
||||||
|
disabled_plugins = {
|
||||||
|
"gzip",
|
||||||
|
-- "matchit",
|
||||||
|
-- "matchparen",
|
||||||
|
-- "netrwPlugin",
|
||||||
|
"tarPlugin",
|
||||||
|
"tohtml",
|
||||||
|
"tutor",
|
||||||
|
"zipPlugin",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
-- Options are automatically loaded before lazy.nvim startup
|
||||||
|
-- Default options that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/options.lua
|
||||||
|
-- Add any additional options here
|
||||||
|
--
|
||||||
|
vim.opt.list = true
|
||||||
|
|
||||||
|
vim.opt.listchars = {
|
||||||
|
tab = "→ ",
|
||||||
|
trail = "·",
|
||||||
|
nbsp = "␣",
|
||||||
|
space = "·",
|
||||||
|
}
|
||||||
|
|
||||||
|
vim.opt.encoding = "utf-8"
|
||||||
|
vim.opt.fileencoding = "utf-8"
|
||||||
|
vim.opt.fileencodings = "utf-8,latin1"
|
||||||
@@ -0,0 +1,90 @@
|
|||||||
|
return {
|
||||||
|
{
|
||||||
|
"sindrets/diffview.nvim",
|
||||||
|
|
||||||
|
keys = {
|
||||||
|
-- Diffview
|
||||||
|
{
|
||||||
|
"<leader>dt",
|
||||||
|
function()
|
||||||
|
local lib = require("diffview.lib")
|
||||||
|
|
||||||
|
if lib.get_current_view() then
|
||||||
|
vim.cmd("DiffviewClose")
|
||||||
|
else
|
||||||
|
vim.cmd("DiffviewOpen")
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
desc = "Diffview: Toggle",
|
||||||
|
},
|
||||||
|
|
||||||
|
-- Current conflict
|
||||||
|
{
|
||||||
|
"<leader>mo",
|
||||||
|
function()
|
||||||
|
require("diffview.config").actions.conflict_choose("ours")
|
||||||
|
end,
|
||||||
|
desc = "Merge: Choose Ours",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"<leader>mt",
|
||||||
|
function()
|
||||||
|
require("diffview.config").actions.conflict_choose("theirs")
|
||||||
|
end,
|
||||||
|
desc = "Merge: Choose Theirs",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"<leader>mb",
|
||||||
|
function()
|
||||||
|
require("diffview.config").actions.conflict_choose("base")
|
||||||
|
end,
|
||||||
|
desc = "Merge: Choose Base",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"<leader>ma",
|
||||||
|
function()
|
||||||
|
require("diffview.config").actions.conflict_choose("all")
|
||||||
|
end,
|
||||||
|
desc = "Merge: Keep All",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"<leader>mx",
|
||||||
|
function()
|
||||||
|
require("diffview.config").actions.conflict_choose("none")
|
||||||
|
end,
|
||||||
|
desc = "Merge: Delete Conflict",
|
||||||
|
},
|
||||||
|
|
||||||
|
-- All conflicts in current file
|
||||||
|
{
|
||||||
|
"<leader>mO",
|
||||||
|
function()
|
||||||
|
require("diffview.config").actions.conflict_choose_all("ours")
|
||||||
|
end,
|
||||||
|
desc = "Merge: Choose Ours (All)",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"<leader>mT",
|
||||||
|
function()
|
||||||
|
require("diffview.config").actions.conflict_choose_all("theirs")
|
||||||
|
end,
|
||||||
|
desc = "Merge: Choose Theirs (All)",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"<leader>mA",
|
||||||
|
function()
|
||||||
|
require("diffview.config").actions.conflict_choose_all("all")
|
||||||
|
end,
|
||||||
|
desc = "Merge: Keep All (All)",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
opts = {
|
||||||
|
view = {
|
||||||
|
merge_tool = {
|
||||||
|
layout = "diff3_mixed",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
@@ -0,0 +1,67 @@
|
|||||||
|
return {
|
||||||
|
-- C/C++ formatter configuration
|
||||||
|
{
|
||||||
|
"stevearc/conform.nvim",
|
||||||
|
opts = {
|
||||||
|
formatters_by_ft = {
|
||||||
|
-- Format C source files
|
||||||
|
c = { "clang_format" },
|
||||||
|
|
||||||
|
-- Format C header files
|
||||||
|
h = { "clang_format" },
|
||||||
|
|
||||||
|
-- Format C++ source files
|
||||||
|
cpp = { "clang_format" },
|
||||||
|
|
||||||
|
-- Format C++ header files
|
||||||
|
hpp = { "clang_format" },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
-- C/C++ language server configuration
|
||||||
|
{
|
||||||
|
"neovim/nvim-lspconfig",
|
||||||
|
opts = {
|
||||||
|
servers = {
|
||||||
|
clangd = {
|
||||||
|
-- Enable additional clangd features
|
||||||
|
capabilities = {
|
||||||
|
offsetEncoding = { "utf-16" },
|
||||||
|
},
|
||||||
|
|
||||||
|
-- clangd command options
|
||||||
|
cmd = {
|
||||||
|
"clangd",
|
||||||
|
"--background-index",
|
||||||
|
"--clang-tidy",
|
||||||
|
"--header-insertion=iwyu",
|
||||||
|
"--completion-style=detailed",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
-- Install C/C++ tools through Mason
|
||||||
|
{
|
||||||
|
"mason-org/mason.nvim",
|
||||||
|
opts = {
|
||||||
|
ensure_installed = {
|
||||||
|
"clangd",
|
||||||
|
"clang-format",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
-- Treesitter support for C/C++
|
||||||
|
{
|
||||||
|
"nvim-treesitter/nvim-treesitter",
|
||||||
|
opts = {
|
||||||
|
ensure_installed = {
|
||||||
|
"c",
|
||||||
|
"cpp",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
@@ -0,0 +1,119 @@
|
|||||||
|
return {
|
||||||
|
-- Java LSP, debugger, and test support
|
||||||
|
{
|
||||||
|
"mfussenegger/nvim-jdtls",
|
||||||
|
ft = "java",
|
||||||
|
opts = {
|
||||||
|
settings = {
|
||||||
|
java = {
|
||||||
|
-- Download source code for dependencies
|
||||||
|
eclipse = {
|
||||||
|
downloadSources = true,
|
||||||
|
},
|
||||||
|
|
||||||
|
-- Update Maven/Gradle configuration automatically
|
||||||
|
configuration = {
|
||||||
|
updateBuildConfiguration = "interactive",
|
||||||
|
},
|
||||||
|
|
||||||
|
-- Java code formatting configuration
|
||||||
|
format = {
|
||||||
|
enabled = true,
|
||||||
|
settings = {
|
||||||
|
url = vim.fn.stdpath("config") .. "/lang-servers/intellij-java-google-style.xml",
|
||||||
|
profile = "GoogleStyle",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
-- Additional completion suggestions
|
||||||
|
completion = {
|
||||||
|
favoritestaticmembers = {
|
||||||
|
"org.junit.assert.*",
|
||||||
|
"org.mockito.mockito.*",
|
||||||
|
"org.springframework.util.assert.*",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
-- show implementation hints in the editor
|
||||||
|
implementationscodelens = {
|
||||||
|
enabled = true,
|
||||||
|
},
|
||||||
|
|
||||||
|
-- show reference counters in the editor
|
||||||
|
referencescodelens = {
|
||||||
|
enabled = true,
|
||||||
|
},
|
||||||
|
|
||||||
|
-- display parameter names as inline hints
|
||||||
|
inlayhints = {
|
||||||
|
parameternames = {
|
||||||
|
enabled = "all",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
-- organize imports automatically on save
|
||||||
|
saveactions = {
|
||||||
|
organizeimports = true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
-- install java syntax parser
|
||||||
|
{
|
||||||
|
"nvim-treesitter/nvim-treesitter",
|
||||||
|
opts = {
|
||||||
|
ensure_installed = {
|
||||||
|
"java",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
-- install required java tools through mason
|
||||||
|
{
|
||||||
|
"mason-org/mason.nvim",
|
||||||
|
opts = {
|
||||||
|
ensure_installed = {
|
||||||
|
"google-java-format",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
-- java formatter integration
|
||||||
|
{
|
||||||
|
"stevearc/conform.nvim",
|
||||||
|
event = { "BufWritePre" },
|
||||||
|
opts = {
|
||||||
|
formatters_by_ft = {
|
||||||
|
java = { "google-java-format" },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
-- debug adapter protocol support
|
||||||
|
{
|
||||||
|
"mfussenegger/nvim-dap",
|
||||||
|
dependencies = {
|
||||||
|
"mfussenegger/nvim-dap-ui",
|
||||||
|
},
|
||||||
|
config = function()
|
||||||
|
local dap = require("dap")
|
||||||
|
|
||||||
|
-- Java debugger provided by JDTLS
|
||||||
|
require("jdtls").setup_dap({
|
||||||
|
hotcodereplace = "auto",
|
||||||
|
})
|
||||||
|
|
||||||
|
dap.configurations.java = dap.configurations.java or {}
|
||||||
|
|
||||||
|
table.insert(dap.configurations.java, {
|
||||||
|
type = "java",
|
||||||
|
request = "attach",
|
||||||
|
name = "Attach to Maven exec:java",
|
||||||
|
hostName = "127.0.0.1",
|
||||||
|
port = 5005,
|
||||||
|
})
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
}
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
return {
|
||||||
|
-- json formatter integration
|
||||||
|
{
|
||||||
|
"stevearc/conform.nvim",
|
||||||
|
event = { "BufWritePre" },
|
||||||
|
opts = {
|
||||||
|
formatters_by_ft = {
|
||||||
|
json = { "prettier" },
|
||||||
|
jsonc = { "prettier" },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
-- install required json tools through mason
|
||||||
|
{
|
||||||
|
"mason-org/mason.nvim",
|
||||||
|
opts = {
|
||||||
|
ensure_installed = {
|
||||||
|
"prettier",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
-- treesitter json support
|
||||||
|
{
|
||||||
|
"nvim-treesitter/nvim-treesitter",
|
||||||
|
opts = {
|
||||||
|
ensure_installed = {
|
||||||
|
"json",
|
||||||
|
"jsonc",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
return {
|
||||||
|
{
|
||||||
|
"weirongxu/plantuml-previewer.vim", -- main PlantUML plugin
|
||||||
|
ft = "plantuml", -- lazy-load for PlantUML files
|
||||||
|
dependencies = {
|
||||||
|
"tyru/open-browser.vim", -- browser preview dependency
|
||||||
|
"aklt/plantuml-syntax", -- syntax highlighting for PlantUML
|
||||||
|
},
|
||||||
|
config = function()
|
||||||
|
-- path to local PlantUML jar (if using local CLI)
|
||||||
|
vim.g.plantuml_previewer_jar_path = "/usr/share/java/plantuml/plantuml.jar"
|
||||||
|
|
||||||
|
-- output format for generated diagrams
|
||||||
|
vim.g.plantuml_previewer_output_type = "png"
|
||||||
|
|
||||||
|
-- automatically refresh preview when saving the file
|
||||||
|
vim.g.plantuml_previewer_refresh_on_save = 1
|
||||||
|
|
||||||
|
-- default browser for open-browser.vim
|
||||||
|
vim.g.open_browser_default_browser = "firefox"
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
}
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
return {
|
||||||
|
{
|
||||||
|
"mason-org/mason.nvim",
|
||||||
|
opts = {
|
||||||
|
ensure_installed = {
|
||||||
|
"lemminx",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"neovim/nvim-lspconfig",
|
||||||
|
opts = {
|
||||||
|
servers = {
|
||||||
|
lemminx = {},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"nvim-treesitter/nvim-treesitter",
|
||||||
|
opts = {
|
||||||
|
ensure_installed = {
|
||||||
|
"xml",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
@@ -0,0 +1,85 @@
|
|||||||
|
---@class PluginScanner
|
||||||
|
---@field scan fun(root: string): table
|
||||||
|
|
||||||
|
-- Recursively scans a Lua directory and generates Lazy.nvim import specs.
|
||||||
|
--
|
||||||
|
-- Every directory is converted into a Lazy.nvim import spec, including
|
||||||
|
-- the root directory itself.
|
||||||
|
--
|
||||||
|
-- Example:
|
||||||
|
--
|
||||||
|
-- ~/.config/nvim/
|
||||||
|
-- └── lua/
|
||||||
|
-- └── plugins/
|
||||||
|
-- ├── ui.lua
|
||||||
|
-- ├── lsp/
|
||||||
|
-- │ ├── lua.lua
|
||||||
|
-- │ └── python.lua
|
||||||
|
-- └── languages/
|
||||||
|
-- └── rust/
|
||||||
|
-- └── dap.lua
|
||||||
|
--
|
||||||
|
-- Generated imports:
|
||||||
|
--
|
||||||
|
-- { import = "plugins" }
|
||||||
|
-- { import = "plugins.lsp" }
|
||||||
|
-- { import = "plugins.languages" }
|
||||||
|
-- { import = "plugins.languages.rust" }
|
||||||
|
--
|
||||||
|
-- Lazy.nvim can then recursively load Lua files from these directories.
|
||||||
|
--
|
||||||
|
-- Files themselves are not returned by the scanner.
|
||||||
|
--
|
||||||
|
-- Note:
|
||||||
|
-- Importing "plugins" already gives Lazy.nvim access to everything below
|
||||||
|
-- that directory, so nested imports are technically redundant. They are
|
||||||
|
-- still returned here because this scanner is explicitly designed to
|
||||||
|
-- report every discovered directory.
|
||||||
|
|
||||||
|
local M = {}
|
||||||
|
|
||||||
|
---@param root string
|
||||||
|
---@return table Lazy.nvim import specifications
|
||||||
|
function M.scan(root)
|
||||||
|
local result = {}
|
||||||
|
|
||||||
|
local config_path = vim.fn.stdpath("config")
|
||||||
|
local lua_path = vim.fs.normalize(config_path .. "/lua")
|
||||||
|
local base = vim.fs.normalize(lua_path .. "/" .. root)
|
||||||
|
|
||||||
|
-- Convert absolute filesystem path to Lua module name.
|
||||||
|
---@param path string
|
||||||
|
---@return string
|
||||||
|
local function path_to_module(path)
|
||||||
|
local module = path:sub(#lua_path + 2)
|
||||||
|
|
||||||
|
return module:gsub("[/\\]", ".")
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Recursively scan directories.
|
||||||
|
---@param dir string
|
||||||
|
local function scan_dir(dir)
|
||||||
|
for name, type in vim.fs.dir(dir) do
|
||||||
|
local path = vim.fs.normalize(dir .. "/" .. name)
|
||||||
|
|
||||||
|
if type == "directory" then
|
||||||
|
table.insert(result, {
|
||||||
|
import = path_to_module(path),
|
||||||
|
})
|
||||||
|
|
||||||
|
scan_dir(path)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Always include the root directory itself.
|
||||||
|
table.insert(result, {
|
||||||
|
import = path_to_module(base),
|
||||||
|
})
|
||||||
|
|
||||||
|
scan_dir(base)
|
||||||
|
|
||||||
|
return result
|
||||||
|
end
|
||||||
|
|
||||||
|
return M
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
indent_type = "Spaces"
|
||||||
|
indent_width = 2
|
||||||
|
column_width = 120
|
||||||
Reference in New Issue
Block a user