From 5bfabd7928df4357b53b1fa779a2dab856757180 Mon Sep 17 00:00:00 2001 From: logrusx Date: Fri, 25 Jul 2025 16:52:33 +0300 Subject: [PATCH 1/4] Mason 2.0 migration --- lua/java-core/ls/servers/jdtls/init.lua | 2 +- lua/java-core/utils/mason.lua | 11 ++++++++--- tests/prepare-config.lua | 2 +- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/lua/java-core/ls/servers/jdtls/init.lua b/lua/java-core/ls/servers/jdtls/init.lua index c864e9c..6c09700 100644 --- a/lua/java-core/ls/servers/jdtls/init.lua +++ b/lua/java-core/ls/servers/jdtls/init.lua @@ -70,7 +70,7 @@ function M.get_config(opts) if jdk:is_installed() then local java_home = - vim.fn.glob(path.join(jdk:get_install_path(), '/jdk-17*')) + vim.fn.glob('$MASON/packages/jdk-17*') local java_bin = path.join(java_home, '/bin') base_config.cmd_env = { diff --git a/lua/java-core/utils/mason.lua b/lua/java-core/utils/mason.lua index c910aec..a1e3edd 100644 --- a/lua/java-core/utils/mason.lua +++ b/lua/java-core/utils/mason.lua @@ -6,14 +6,19 @@ local M = {} ---@param pkg_name string ---@return string | nil function M.get_pkg_path(pkg_name) - return mason_registry.get_package(pkg_name):get_install_path() + local found, pkg = pcall(mason_registry.get_package, pkg_name) + if not found or not pkg:is_installed() then + return nil + end + return vim.fn.expand("$MASON/packages/" .. pkg_name) end ----Returns true if the package in installed in mason +---Returns true if the package is installed in mason ---@param pkg_name string ---@return boolean function M.is_pkg_installed(pkg_name) - return mason_registry.get_package(pkg_name):is_installed() + local found, pkg = pcall(mason_registry.get_package, pkg_name) + return found and pkg:is_installed() end ---Returns the shared artifact path for a given package diff --git a/tests/prepare-config.lua b/tests/prepare-config.lua index daa5280..5aa3751 100644 --- a/tests/prepare-config.lua +++ b/tests/prepare-config.lua @@ -25,7 +25,7 @@ require('lazy').setup({ lazy = false, }, { - 'williamboman/mason.nvim', + 'mason-org/mason.nvim', lazy = false, }, }, { From 13cf0602e8d8f027be46f219c151afc01e610218 Mon Sep 17 00:00:00 2001 From: logrusx Date: Tue, 29 Jul 2025 20:19:24 +0300 Subject: [PATCH 2/4] use lombok from jdtls distribution --- lua/java-core/ls/servers/jdtls/init.lua | 18 +----------------- 1 file changed, 1 insertion(+), 17 deletions(-) diff --git a/lua/java-core/ls/servers/jdtls/init.lua b/lua/java-core/ls/servers/jdtls/init.lua index 6c09700..7791b19 100644 --- a/lua/java-core/ls/servers/jdtls/init.lua +++ b/lua/java-core/ls/servers/jdtls/init.lua @@ -26,10 +26,9 @@ function M.get_config(opts) -- pick the OS at runtime because mason.nvim does that for me at the -- installation local jdtls_root = mason.get_shared_path('jdtls') - local lombok_root = mason.get_shared_path('lombok-nightly') local jdtls_config = path.join(jdtls_root, 'config') - local lombok_path = path.join(lombok_root, 'lombok.jar') + local lombok_path = path.join(jdtls_root, 'lombok.jar') local equinox_launcher = path.join(jdtls_root, 'plugins', 'org.eclipse.equinox.launcher.jar') local plugin_paths = plugins.get_plugin_paths(opts.jdtls_plugins) @@ -65,21 +64,6 @@ function M.get_config(opts) utils.get_workspace_path(), } - if opts.use_mason_jdk then - local jdk = mason_reg.get_package('openjdk-17') - - if jdk:is_installed() then - local java_home = - vim.fn.glob('$MASON/packages/jdk-17*') - local java_bin = path.join(java_home, '/bin') - - base_config.cmd_env = { - ['PATH'] = vim.fn.getenv('PATH') .. ':' .. java_bin, - ['JAVA_HOME'] = java_home, - } - end - end - ---@diagnostic disable-next-line: assign-type-mismatch base_config.root_dir = M.get_root_finder(opts.root_markers) base_config.init_options.bundles = plugin_paths From 385b0c0c92ac37d652121b46bbaea8acc28dbf15 Mon Sep 17 00:00:00 2001 From: logrusx Date: Wed, 30 Jul 2025 13:49:46 +0300 Subject: [PATCH 3/4] fix a reference to old package name --- lua/java-core/ls/servers/jdtls/plugins.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lua/java-core/ls/servers/jdtls/plugins.lua b/lua/java-core/ls/servers/jdtls/plugins.lua index 1de9344..cb87704 100644 --- a/lua/java-core/ls/servers/jdtls/plugins.lua +++ b/lua/java-core/ls/servers/jdtls/plugins.lua @@ -26,7 +26,7 @@ local plug_jar_map = { 'com.microsoft.java.test.plugin-*.jar', }, ['java-debug-adapter'] = { '*.jar' }, - ['spring-boot-tools'] = { 'jars/*.jar' }, + ['vs-code-spring-boot-tools'] = { 'jars/*.jar' }, } ---Returns a list of .jar file paths for given list of jdtls plugins From 38cf1dbfe890e2894c57f0081c8bc0176e2e4ebe Mon Sep 17 00:00:00 2001 From: logrusx <45463882+logrusx@users.noreply.github.com> Date: Wed, 6 Aug 2025 12:49:31 +0300 Subject: [PATCH 4/4] Remove unused local --- lua/java-core/ls/servers/jdtls/init.lua | 1 - 1 file changed, 1 deletion(-) diff --git a/lua/java-core/ls/servers/jdtls/init.lua b/lua/java-core/ls/servers/jdtls/init.lua index 7791b19..0484ce5 100644 --- a/lua/java-core/ls/servers/jdtls/init.lua +++ b/lua/java-core/ls/servers/jdtls/init.lua @@ -1,7 +1,6 @@ local config = require('java-core.ls.servers.jdtls.config') local log = require('java-core.utils.log') local mason = require('java-core.utils.mason') -local mason_reg = require('mason-registry') local path = require('java-core.utils.path') local plugins = require('java-core.ls.servers.jdtls.plugins') local util = require('lspconfig.util')