aboutsummaryrefslogtreecommitdiff
path: root/.config/nvim/lsp/jdtls.lua
diff options
context:
space:
mode:
Diffstat (limited to '.config/nvim/lsp/jdtls.lua')
-rw-r--r--.config/nvim/lsp/jdtls.lua102
1 files changed, 0 insertions, 102 deletions
diff --git a/.config/nvim/lsp/jdtls.lua b/.config/nvim/lsp/jdtls.lua
deleted file mode 100644
index 4026047..0000000
--- a/.config/nvim/lsp/jdtls.lua
+++ /dev/null
@@ -1,102 +0,0 @@
----@brief
----
---- https://projects.eclipse.org/projects/eclipse.jdt.ls
----
---- Language server for Java.
----
---- IMPORTANT: If you want all the features jdtls has to offer, [nvim-jdtls](https://github.com/mfussenegger/nvim-jdtls)
---- is highly recommended. If all you need is diagnostics, completion, imports, gotos and formatting and some code actions
---- you can keep reading here.
----
---- For manual installation you can download precompiled binaries from the
---- [official downloads site](http://download.eclipse.org/jdtls/snapshots/?d)
---- and ensure that the `PATH` variable contains the `bin` directory of the extracted archive.
----
---- ```lua
---- -- init.lua
---- vim.lsp.enable('jdtls')
---- ```
----
---- You can also pass extra custom jvm arguments with the JDTLS_JVM_ARGS environment variable as a space separated list of arguments,
---- that will be converted to multiple --jvm-arg=<param> args when passed to the jdtls script. This will allow for example tweaking
---- the jvm arguments or integration with external tools like lombok:
----
---- ```sh
---- export JDTLS_JVM_ARGS="-javaagent:$HOME/.local/share/java/lombok.jar"
---- ```
----
---- For automatic installation you can use the following unofficial installers/launchers under your own risk:
---- - [jdtls-launcher](https://github.com/eruizc-dev/jdtls-launcher) (Includes lombok support by default)
---- ```lua
---- -- init.lua
---- vim.lsp.config('jdtls', { cmd = { 'jdtls' } })
---- ```
-
-local function get_jdtls_cache_dir()
- return vim.fn.stdpath('cache') .. '/jdtls'
-end
-
-local function get_jdtls_workspace_dir()
- return get_jdtls_cache_dir() .. '/workspace'
-end
-
-local function get_jdtls_jvm_args()
- local env = os.getenv('JDTLS_JVM_ARGS')
- local args = {}
- for a in string.gmatch((env or ''), '%S+') do
- local arg = string.format('--jvm-arg=%s', a)
- table.insert(args, arg)
- end
- return unpack(args)
-end
-
-local root_markers1 = {
- -- Multi-module projects
- 'mvnw',
- 'gradlew',
- 'build.gradle',
- 'build.gradle.kts',
- -- Use git directory as last resort for multi-module maven projects
- -- In multi-module maven projects it is not really possible to determine what is the parent directory
- -- and what is submodule directory. And jdtls does not break if the parent directory is at higher level than
- -- actual parent pom.xml so propagating all the way to root git directory is fine
- '.git',
-}
-local root_markers2 = {
- -- Single-module projects
- 'build.xml', -- Ant
- 'pom.xml', -- Maven
- 'settings.gradle', -- Gradle
- 'settings.gradle.kts', -- Gradle
-}
-
----@type vim.lsp.Config
-return {
- ---@param dispatchers? vim.lsp.rpc.Dispatchers
- ---@param config vim.lsp.ClientConfig
- cmd = function(dispatchers, config)
- local workspace_dir = get_jdtls_workspace_dir()
- local data_dir = workspace_dir
-
- if config.root_dir then
- data_dir = data_dir .. '/' .. vim.fn.fnamemodify(config.root_dir, ':p:h:t')
- end
-
- local config_cmd = {
- 'jdtls',
- '-data',
- data_dir,
- get_jdtls_jvm_args(),
- }
-
- return vim.lsp.rpc.start(config_cmd, dispatchers, {
- cwd = config.cmd_cwd,
- env = config.cmd_env,
- detached = config.detached,
- })
- end,
- filetypes = { 'java' },
- root_markers = vim.fn.has('nvim-0.11.3') == 1 and { root_markers1, root_markers2 }
- or vim.list_extend(root_markers1, root_markers2),
- init_options = {},
-}