diff options
Diffstat (limited to '')
| -rw-r--r-- | ftplugin/java.lua | 110 |
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) |
