aboutsummaryrefslogtreecommitdiff
path: root/ftplugin
diff options
context:
space:
mode:
authorpml68 <contact@pml68.me>2024-11-25 00:35:25 +0100
committerpml68 <contact@pml68.me>2024-11-25 00:35:25 +0100
commit1fdfe23673e1bb965aa316b116c0e89a4ac7e9d6 (patch)
tree28e9046af9aca60c742afa3a04d8f3776f9b011e /ftplugin
parentfeat: remove unneeded (and broken) plugins (diff)
downloadnvim-1fdfe23673e1bb965aa316b116c0e89a4ac7e9d6.tar.gz
feat: add java support
Diffstat (limited to '')
-rw-r--r--ftplugin/java.lua110
1 files changed, 110 insertions, 0 deletions
diff --git a/ftplugin/java.lua b/ftplugin/java.lua
new file mode 100644
index 0000000..ccec910
--- /dev/null
+++ b/ftplugin/java.lua
@@ -0,0 +1,110 @@
+local home = vim.env.HOME
+
+local jdtls = require("jdtls")
+local project_name = vim.fn.fnamemodify(vim.fn.getcwd(), ":p:h:t")
+local workspace_dir = home .. "/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",
+ "-Dlog.protocol=true",
+ "-Dlog.level=ALL",
+ "-javaagent:" .. home .. "/.local/share/nvim/mason/share/jdtls/lombok.jar",
+ "-Xmx4g",
+ "--add-modules=ALL-SYSTEM",
+ "--add-opens", "java.base/java.util=ALL-UNNAMED",
+ "--add-opens", "java.base/java.lang=ALL-UNNAMED",
+
+ "-jar",
+ home .. "/.local/share/nvim/mason/share/jdtls/plugins/org.eclipse.equinox.launcher.jar",
+ "-configuration",
+ home .. "/.local/share/nvim/mason/packages/jdtls/config_linux",
+ "-data",
+ workspace_dir,
+ },
+
+ root_dir = require("jdtls.setup").find_root({ ".git", "mvnw", "pom.xml", "build.gradle" }),
+
+ settings = {
+ java = {
+ home = "/usr/lib/jvm/java-21-openjdk",
+ eclipse = {
+ downloadSources = true,
+ },
+ configuration = {
+ updateBuildConfiguration = "interactive",
+ runtimes = {
+ {
+ name = "JavaSE-17",
+ path = "/usr/lib/jvm/java-17-openjdk",
+ },
+ {
+ name = "JavaSE-21",
+ path = "/usr/lib/jvm/java-21-openjdk",
+ },
+ },
+ },
+ maven = {
+ downloadSources = true,
+ },
+ implementationsCodeLens = {
+ enabled = true,
+ },
+ referencesCodeLens = {
+ enabled = true,
+ },
+ references = {
+ includeDecompiledSources = true,
+ },
+ signatureHelp = { enabled = true },
+ format = {
+ enabled = true,
+ settings = {
+ url = "https://github.com/google/styleguide/blob/gh-pages/intellij-java-google-style.xml",
+ profile = "GoogleStyle",
+ },
+ },
+ completion = {
+ favoriteStaticMembers = {
+ "org.hamcrest.MatcherAssert.assertThat",
+ "org.hamcrest.Matchers.*",
+ "org.hamcrest.CoreMatchers.*",
+ "org.junit.jupiter.api.Assertions.*",
+ "java.util.Objects.requireNonNull",
+ "java.util.Objects.requireNonNullElse",
+ "org.mockito.Mockito.*",
+ },
+ importOrder = {
+ "java",
+ "javax",
+ "com",
+ "org",
+ },
+ },
+ sources = {
+ organizeImports = {
+ starThreshold = 9999,
+ staticStarThreshold = 9999,
+ },
+ },
+ codeGeneration = {
+ toString = {
+ template = "${object.className}{${member.name()}=${member.value}, ${otherMembers}}",
+ },
+ useBlocks = true,
+ },
+ },
+ },
+ capabilities = require("cmp_nvim_lsp").default_capabilities(),
+ flags = {
+ allow_incremental_sync = true,
+ },
+ init_options = {
+ extendedClientCapabilities = jdtls.extendedClientCapabilities,
+ },
+}
+
+jdtls.start_or_attach(config)