diff --git a/lazy-lock.json b/lazy-lock.json index 47327c0..9e81ae8 100644 --- a/lazy-lock.json +++ b/lazy-lock.json @@ -1,25 +1,27 @@ { "Comment.nvim": { "branch": "master", "commit": "e30b7f2008e52442154b66f7c519bfd2f1e32acb" }, - "LuaSnip": { "branch": "master", "commit": "dae4f5aaa3574bd0c2b9dd20fb9542a02c10471c" }, + "LuaSnip": { "branch": "master", "commit": "642b0c595e11608b4c18219e93b88d7637af27bc" }, "cmp-nvim-lsp": { "branch": "main", "commit": "cbc7b02bb99fae35cb42f514762b89b5126651ef" }, "cmp_luasnip": { "branch": "master", "commit": "98d9cb5c2c38532bd9bdb481067b20fea8f32e90" }, - "conform.nvim": { "branch": "master", "commit": "c2526f1cde528a66e086ab1668e996d162c75f4f" }, + "conform.nvim": { "branch": "master", "commit": "086a40dc7ed8242c03be9f47fbcee68699cc2395" }, "friendly-snippets": { "branch": "main", "commit": "6cd7280adead7f586db6fccbd15d2cac7e2188b9" }, - "gitsigns.nvim": { "branch": "main", "commit": "31217271a7314c343606acb4072a94a039a19fb5" }, - "indent-blankline.nvim": { "branch": "master", "commit": "005b56001b2cb30bfa61b7986bc50657816ba4ba" }, + "gitsigns.nvim": { "branch": "main", "commit": "0a80125bace82d82847d40bc2c38a22d62c6dc2d" }, + "indent-blankline.nvim": { "branch": "master", "commit": "d28a3f70721c79e3c5f6693057ae929f3d9c0a03" }, "lazy.nvim": { "branch": "main", "commit": "306a05526ada86a7b30af95c5cc81ffba93fef97" }, "lualine.nvim": { "branch": "master", "commit": "47f91c416daef12db467145e16bed5bbfe00add8" }, - "mason-lspconfig.nvim": { "branch": "main", "commit": "ae609525ddf01c153c39305730b1791800ffe4fe" }, + "mason-lspconfig.nvim": { "branch": "main", "commit": "a979821a975897b88493843301950c456a725982" }, "mason.nvim": { "branch": "main", "commit": "44d1e90e1f66e077268191e3ee9d2ac97cc18e65" }, - "mini.tabline": { "branch": "main", "commit": "caf23615b9b99bacc79ecd60f61c4e6a8ec18c84" }, - "nvim": { "branch": "main", "commit": "beaf41a30c26fd7d6c386d383155cbd65dd554cd" }, + "mini.tabline": { "branch": "main", "commit": "d03f10bf562cef57bd9f80f82c54269ff4816a15" }, + "nvim": { "branch": "main", "commit": "a7788416689dbefea659d9e9415c87926b0ba5d8" }, "nvim-autopairs": { "branch": "master", "commit": "59bce2eef357189c3305e25bc6dd2d138c1683f5" }, "nvim-cmp": { "branch": "main", "commit": "da88697d7f45d16852c6b2769dc52387d1ddc45f" }, - "nvim-lspconfig": { "branch": "master", "commit": "f4e9d367d4e067d7a5fabc9fd3f1349b291eb718" }, - "nvim-tree.lua": { "branch": "master", "commit": "a0db8bf7d6488b1dcd9cb5b0dfd6684a1e14f769" }, - "nvim-treesitter": { "branch": "main", "commit": "9f2dad22ef8bb14fd1e0a3aa8859cdc88170668b" }, - "nvim-web-devicons": { "branch": "master", "commit": "746ffbb17975ebd6c40142362eee1b0249969c5c" }, + "nvim-jdtls": { "branch": "master", "commit": "77ccaeb422f8c81b647605da5ddb4a7f725cda90" }, + "nvim-lspconfig": { "branch": "master", "commit": "841c6d4139aedb8a3f2baf30cef5327371385b93" }, + "nvim-tree.lua": { "branch": "master", "commit": "e16cd38962bc40c22a51ee004aa4f43726d74a16" }, + "nvim-treesitter": { "branch": "main", "commit": "6620ae1c44dfa8623b22d0cbf873a9e8d073b849" }, + "nvim-web-devicons": { "branch": "master", "commit": "d7462543c9e366c0d196c7f67a945eaaf5d99414" }, "plenary.nvim": { "branch": "master", "commit": "b9fd5226c2f76c951fc8ed5923d85e4de065e509" }, - "telescope.nvim": { "branch": "master", "commit": "ad7d9580338354ccc136e5b8f0aa4f880434dcdc" }, - "which-key.nvim": { "branch": "main", "commit": "3aab2147e74890957785941f0c1ad87d0a44c15a" } + "telescope.nvim": { "branch": "master", "commit": "5255aa27c422de944791318024167ad5d40aad20" }, + "which-key.nvim": { "branch": "main", "commit": "3aab2147e74890957785941f0c1ad87d0a44c15a" }, + "zeavim.vim": { "branch": "master", "commit": "298e52ad683680b4aa19b53d009cf0e6b9197664" } } diff --git a/lua/config/keymaps.lua b/lua/config/keymaps.lua index 3b54324..f03d900 100644 --- a/lua/config/keymaps.lua +++ b/lua/config/keymaps.lua @@ -14,7 +14,7 @@ map("n", "h", "nohlsearch", { desc = "No highlight" }) -- Diagnostics map("n", "[d", vim.diagnostic.goto_prev, { desc = "Prev diagnostic" }) map("n", "]d", vim.diagnostic.goto_next, { desc = "Next diagnostic" }) -map("n", "e", vim.diagnostic.open_float, { desc = "Diagnostic float" }) +map("n", "y", vim.diagnostic.open_float, { desc = "Diagnostic float" }) -- Window navigation map("n", "", "h", { desc = "Left window" }) @@ -24,6 +24,11 @@ map("n", "", "l", { desc = "Right window" }) local diagnostics_visible = true +-- Enable inline diagnostics on startup +vim.diagnostic.config({ + virtual_text = true, +}) + map("n", "td", function() diagnostics_visible = not diagnostics_visible vim.diagnostic.config({ diff --git a/lua/config/options.lua b/lua/config/options.lua index 8233f23..756a371 100644 --- a/lua/config/options.lua +++ b/lua/config/options.lua @@ -28,3 +28,4 @@ opt.mouse = "a" opt.updatetime = 250 opt.timeoutlen = 400 +vim.wo.fillchars = 'eob:ยท' diff --git a/lua/plugins/coding.lua b/lua/plugins/coding.lua index 5c5538f..d5e6faa 100644 --- a/lua/plugins/coding.lua +++ b/lua/plugins/coding.lua @@ -5,9 +5,9 @@ return { build = ":TSUpdate", config = function() require("nvim-treesitter.config").setup({ - highlight = { enabled = true }, + highlight = { enable = true }, additional_vim_regex_highlighting = false, - indent = { enabled = true }, + indent = { enable = true }, ensure_installed = { "go", "gomod", @@ -22,6 +22,12 @@ return { "yaml", "bash", "c_sharp", + "java", + "c", + "cpp", + "julia", + "python", + "zig", }, }) end, diff --git a/lua/plugins/lsp.lua b/lua/plugins/lsp.lua index c8c7ac5..c81ecdf 100644 --- a/lua/plugins/lsp.lua +++ b/lua/plugins/lsp.lua @@ -10,7 +10,7 @@ return { dependencies = { "williamboman/mason.nvim" }, opts = { -- installs these via Mason (so you don't have to) - ensure_installed = { "gopls", "ts_ls", "lua_ls", "clangd", "rust_analyzer", "omnisharp" }, + ensure_installed = { "gopls", "ts_ls", "lua_ls", "clangd", "rust_analyzer", "omnisharp", "jdtls", "julials", "pyright", "zls" }, -- optional: automatically call vim.lsp.enable() for installed servers automatic_enable = true, @@ -73,10 +73,13 @@ return { vim.lsp.config("clangd", { capabilities = capabilities, - cmd = { "clangd", "--background-index" }, - -- nice-to-haves: - -- "--clang-tidy", -- enable clang-tidy diagnostics (can be noisy) - -- "--completion-style=detailed", + cmd = { + "clangd", + "--background-index", + "--query-driver=/usr/bin/g++,/usr/bin/gcc", + "--completion-style=detailed", + "--header-insertion=iwyu", + }, }) vim.lsp.config("rust_analyzer", { capabilities = capabilities, @@ -89,9 +92,25 @@ return { }, }, }) - -- If you did NOT set mason-lspconfig automatic_enable=true, - -- enable explicitly: - -- vim.lsp.enable({ "gopls", "ts_ls", "lua_ls" }) + + vim.lsp.config("julials", { + capabilities = capabilities, + }) + + vim.lsp.config("pyright", { + capabilities = capabilities, + }) + + vim.lsp.config("zls", { + capabilities = capabilities, + settings = { + zls = { + enable_snippets = true, + enable_semantic_tokens = true, + enable_inlay_hints = true, + }, + }, + }) end, }, @@ -143,6 +162,59 @@ return { end, }, + -- Java LSP (requires special handling) + { + "mfussenegger/nvim-jdtls", + ft = "java", + config = function() + local jdtls_path = vim.fn.stdpath("data") .. "/mason/packages/jdtls" + local launcher = vim.fn.glob(jdtls_path .. "/plugins/org.eclipse.equinox.launcher_*.jar") + local config_dir = jdtls_path .. "/config_linux" + + vim.api.nvim_create_autocmd("FileType", { + pattern = "java", + callback = function() + local project_name = vim.fn.fnamemodify(vim.fn.getcwd(), ":p:h:t") + local workspace_dir = vim.fn.stdpath("data") .. "/jdtls-workspace/" .. project_name + + local config = { + cmd = { + "java", + "-Declipse.application=org.eclipse.jdt.ls.core.id1", + "-Dosgi.bundles.defaultStartLevel=4", + "-Declipse.product=org.eclipse.jdt.ls.core.product", + "-Xmx1g", + "--add-modules=ALL-SYSTEM", + "--add-opens", "java.base/java.util=ALL-UNNAMED", + "--add-opens", "java.base/java.lang=ALL-UNNAMED", + "-jar", launcher, + "-configuration", config_dir, + "-data", workspace_dir, + }, + root_dir = require("jdtls.setup").find_root({ ".git", "mvnw", "gradlew", "pom.xml", "build.gradle" }), + settings = { + java = { + signatureHelp = { enabled = true }, + completion = { + favoriteStaticMembers = {}, + filteredTypes = { "com.sun.*", "io.micrometer.shaded.*" }, + }, + sources = { + organizeImports = { starThreshold = 9999, staticStarThreshold = 9999 }, + }, + }, + }, + init_options = { + bundles = {}, + }, + } + + require("jdtls").start_or_attach(config) + end, + }) + end, + }, + -- Formatting (format-on-save) { "stevearc/conform.nvim", @@ -163,6 +235,9 @@ return { cpp = { "clang-format" }, rust = { "rustfmt" }, cs = { "csharpier" }, + java = { "google-java-format" }, + python = { "black" }, + zig = { "zigfmt" }, }, }) diff --git a/lua/plugins/ui.lua b/lua/plugins/ui.lua index a89304d..5a69195 100644 --- a/lua/plugins/ui.lua +++ b/lua/plugins/ui.lua @@ -1,30 +1,13 @@ return { { "nvim-tree/nvim-web-devicons", lazy = true }, - { - "catppuccin/nvim", - priority = 1000, - config = function() - require("catppuccin").setup({ - integrations = { - treesitter = true, - native_lsp = { - enabled = true, - semantic_tokens = true, - }, - }, - }) - vim.cmd.colorscheme("catppuccin-mocha") - end, - }, - -- Statusline { "nvim-lualine/lualine.nvim", dependencies = { "nvim-tree/nvim-web-devicons" }, config = function() require("lualine").setup({ - options = { theme = "auto", globalstatus = true }, + options = { theme = "codedark", globalstatus = true }, }) end, }, diff --git a/lua/plugins/zeal.lua b/lua/plugins/zeal.lua new file mode 100644 index 0000000..c998904 --- /dev/null +++ b/lua/plugins/zeal.lua @@ -0,0 +1,26 @@ +-- ~/.config/nvim/lua/plugins/zeal.lua +return { + { + "KabbAmine/zeavim.vim", + cmd = { "Zeavim", "ZeavimV", "Zeal" }, + keys = { + { "z", "Zeavim", desc = "Zeal (word under cursor)" }, + { "z", "ZeavimV", mode = "v", desc = "Zeal (selection)" }, + { "Z", "Zeal", desc = "Zeal (input)" }, + }, + config = function() + vim.g.zv_file_types = { + c = "c", + cpp = "cpp", + rust = "rust", + go = "go", + lua = "lua", + python = "python", + javascript = "javascript", + typescript = "typescript", + java = "java", + cs = "csharp", + } + end, + }, +}