Set up jdtls for Java development
This commit is contained in:
parent
da6fc73b1a
commit
d05fc4e044
171
init.lua
171
init.lua
@ -140,6 +140,8 @@ vim.opt.rtp:prepend(lazypath)
|
|||||||
-- To update plugins you can run
|
-- To update plugins you can run
|
||||||
-- :Lazy update
|
-- :Lazy update
|
||||||
--
|
--
|
||||||
|
-- See HACK below...
|
||||||
|
jdtls_already_ran = false
|
||||||
-- NOTE: Here is where you install your plugins.
|
-- NOTE: Here is where you install your plugins.
|
||||||
require('lazy').setup({
|
require('lazy').setup({
|
||||||
|
|
||||||
@ -438,6 +440,7 @@ require('lazy').setup({
|
|||||||
{ 'williamboman/mason.nvim', config = true }, -- NOTE: Must be loaded before dependants
|
{ 'williamboman/mason.nvim', config = true }, -- NOTE: Must be loaded before dependants
|
||||||
'williamboman/mason-lspconfig.nvim',
|
'williamboman/mason-lspconfig.nvim',
|
||||||
'WhoIsSethDaniel/mason-tool-installer.nvim',
|
'WhoIsSethDaniel/mason-tool-installer.nvim',
|
||||||
|
'nvim-java/nvim-java',
|
||||||
|
|
||||||
-- Useful status updates for LSP.
|
-- Useful status updates for LSP.
|
||||||
-- NOTE: `opts = {}` is the same as calling `require('fidget').setup({})`
|
-- NOTE: `opts = {}` is the same as calling `require('fidget').setup({})`
|
||||||
@ -508,7 +511,7 @@ require('lazy').setup({
|
|||||||
|
|
||||||
-- Fuzzy find all the symbols in your current document.
|
-- Fuzzy find all the symbols in your current document.
|
||||||
-- Symbols are things like variables, functions, types, etc.
|
-- Symbols are things like variables, functions, types, etc.
|
||||||
map('<leader>ds', require('telescope.builtin').lsp_document_symbols, '[D]ocument [S]ymbols')
|
map('<leader>ds', require('telescope.builtin').treesitter, '[D]ocument [S]ymbols')
|
||||||
|
|
||||||
-- Fuzzy find all the symbols in your current workspace.
|
-- Fuzzy find all the symbols in your current workspace.
|
||||||
-- Similar to document symbols, except searches over your entire project.
|
-- Similar to document symbols, except searches over your entire project.
|
||||||
@ -639,6 +642,161 @@ require('lazy').setup({
|
|||||||
server.capabilities = vim.tbl_deep_extend('force', {}, capabilities, server.capabilities or {})
|
server.capabilities = vim.tbl_deep_extend('force', {}, capabilities, server.capabilities or {})
|
||||||
require('lspconfig')[server_name].setup(server)
|
require('lspconfig')[server_name].setup(server)
|
||||||
end,
|
end,
|
||||||
|
jdtls = function()
|
||||||
|
-- HACK: Don't know why this gets called more than once
|
||||||
|
if jdtls_already_ran then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
jdtls_already_ran = true
|
||||||
|
require('java').setup {
|
||||||
|
-- Your custom jdtls settings goes here
|
||||||
|
-- Do not automatically install JDK 17
|
||||||
|
-- From: https://github.com/nvim-java/nvim-java/wiki/Q-&-A#no_entry-disable-openjdk-17-auto-installation
|
||||||
|
jdk = {
|
||||||
|
auto_install = false,
|
||||||
|
},
|
||||||
|
init_options = {
|
||||||
|
documentSymbol = {
|
||||||
|
dynamicRegistration = false,
|
||||||
|
hierarchicalDocumentSymbolSupport = true,
|
||||||
|
labelSupport = true,
|
||||||
|
symbolKind = {
|
||||||
|
valueSet = {
|
||||||
|
1,
|
||||||
|
2,
|
||||||
|
3,
|
||||||
|
4,
|
||||||
|
5,
|
||||||
|
6,
|
||||||
|
7,
|
||||||
|
8,
|
||||||
|
9,
|
||||||
|
10,
|
||||||
|
11,
|
||||||
|
12,
|
||||||
|
13,
|
||||||
|
14,
|
||||||
|
15,
|
||||||
|
16,
|
||||||
|
17,
|
||||||
|
18,
|
||||||
|
19,
|
||||||
|
20,
|
||||||
|
21,
|
||||||
|
22,
|
||||||
|
23,
|
||||||
|
24,
|
||||||
|
25,
|
||||||
|
26,
|
||||||
|
27,
|
||||||
|
28,
|
||||||
|
29,
|
||||||
|
30,
|
||||||
|
31,
|
||||||
|
},
|
||||||
|
tagSupport = {
|
||||||
|
valueSet = {},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
-- NOTE: custom java settings
|
||||||
|
-- https://github.com/ray-x/lsp_signature.nvim/issues/97
|
||||||
|
-- all options:
|
||||||
|
-- https://github.com/mfussenegger/nvim-jdtls
|
||||||
|
-- https://github.com/eclipse/eclipse.jdt.ls/wiki/Running-the-JAVA-LS-server-from-the-command-line#initialize-request
|
||||||
|
single_file_support = true,
|
||||||
|
settings = {
|
||||||
|
java = {
|
||||||
|
autobuild = { enabled = false },
|
||||||
|
server = { launchMode = 'Hybrid' },
|
||||||
|
eclipse = {
|
||||||
|
downloadSources = true,
|
||||||
|
},
|
||||||
|
maven = {
|
||||||
|
downloadSources = true,
|
||||||
|
},
|
||||||
|
import = {
|
||||||
|
gradle = {
|
||||||
|
enabled = true,
|
||||||
|
},
|
||||||
|
maven = {
|
||||||
|
enabled = true,
|
||||||
|
},
|
||||||
|
exclusions = {
|
||||||
|
'**/node_modules/**',
|
||||||
|
'**/.metadata/**',
|
||||||
|
'**/archetype-resources/**',
|
||||||
|
'**/META-INF/maven/**',
|
||||||
|
'/**/test/**',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
-- configuration = {
|
||||||
|
-- runtimes = {
|
||||||
|
-- {
|
||||||
|
-- name = 'JavaSE-1.8',
|
||||||
|
-- path = '~/.sdkman/candidates/java/8.0.402-tem',
|
||||||
|
-- },
|
||||||
|
-- {
|
||||||
|
-- name = 'JavaSE-11',
|
||||||
|
-- path = '~/.sdkman/candidates/java/11.0.22-tem',
|
||||||
|
-- },
|
||||||
|
-- {
|
||||||
|
-- name = 'JavaSE-17',
|
||||||
|
-- path = '~/.sdkman/candidates/java/17.0.10-tem',
|
||||||
|
-- },
|
||||||
|
-- {
|
||||||
|
-- name = 'JavaSE-21',
|
||||||
|
-- path = '~/.sdkman/candidates/java/21.0.3-tem',
|
||||||
|
-- },
|
||||||
|
-- },
|
||||||
|
-- },
|
||||||
|
references = {
|
||||||
|
includeDecompiledSources = true,
|
||||||
|
},
|
||||||
|
implementationsCodeLens = {
|
||||||
|
enabled = false,
|
||||||
|
},
|
||||||
|
referenceCodeLens = {
|
||||||
|
enabled = false,
|
||||||
|
},
|
||||||
|
-- https://github.com/eclipse-jdtls/eclipse.jdt.ls/issues/2948
|
||||||
|
inlayHints = {
|
||||||
|
parameterNames = {
|
||||||
|
---@type "none" | "literals" | "all"
|
||||||
|
enabled = 'all',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
signatureHelp = {
|
||||||
|
enabled = true,
|
||||||
|
description = {
|
||||||
|
enabled = true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
symbols = {
|
||||||
|
includeSourceMethodDeclarations = true,
|
||||||
|
},
|
||||||
|
-- https://stackoverflow.com/questions/74844019/neovim-setting-up-jdtls-with-lsp-zero-mason
|
||||||
|
rename = { enabled = true },
|
||||||
|
|
||||||
|
contentProvider = {
|
||||||
|
preferred = 'fernflower',
|
||||||
|
},
|
||||||
|
sources = {
|
||||||
|
organizeImports = {
|
||||||
|
starThreshold = 9999,
|
||||||
|
staticStarThreshold = 9999,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
redhat = { telemetry = { enabled = false } },
|
||||||
|
},
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
require('lspconfig').jdtls.setup { }
|
||||||
|
end,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
end,
|
end,
|
||||||
@ -905,6 +1063,7 @@ require('lazy').setup({
|
|||||||
-- Uncomment any of the lines below to enable them (you will need to restart nvim).
|
-- Uncomment any of the lines below to enable them (you will need to restart nvim).
|
||||||
--
|
--
|
||||||
-- require 'kickstart.plugins.debug',
|
-- require 'kickstart.plugins.debug',
|
||||||
|
require 'kickstart.plugins.debug',
|
||||||
-- require 'kickstart.plugins.indent_line',
|
-- require 'kickstart.plugins.indent_line',
|
||||||
-- require 'kickstart.plugins.lint',
|
-- require 'kickstart.plugins.lint',
|
||||||
-- require 'kickstart.plugins.autopairs',
|
-- require 'kickstart.plugins.autopairs',
|
||||||
@ -1156,10 +1315,11 @@ local on_attach = function(_, bufnr)
|
|||||||
nmap('gr', require('telescope.builtin').lsp_references, '[G]oto [R]eferences')
|
nmap('gr', require('telescope.builtin').lsp_references, '[G]oto [R]eferences')
|
||||||
nmap('gI', require('telescope.builtin').lsp_implementations, '[G]oto [I]mplementation')
|
nmap('gI', require('telescope.builtin').lsp_implementations, '[G]oto [I]mplementation')
|
||||||
nmap('<leader>D', vim.lsp.buf.type_definition, 'Type [D]efinition')
|
nmap('<leader>D', vim.lsp.buf.type_definition, 'Type [D]efinition')
|
||||||
-- Just show classes and functions
|
|
||||||
nmap('<leader>ds', function()
|
-- HACK: I can't get lsp_document_symbols to work for jdtls for some reason...
|
||||||
require('telescope.builtin').lsp_document_symbols { ignore_symbols = { 'variable', 'constant' } }
|
-- nmap('<leader>ds', function()
|
||||||
end, '[D]ocument [S]ymbols')
|
-- require('telescope.builtin').lsp_document_symbols { ignore_symbols = { 'variable', 'constant' } }
|
||||||
|
-- end, '[D]ocument [S]ymbols')
|
||||||
nmap('<leader>ws', require('telescope.builtin').lsp_dynamic_workspace_symbols, '[W]orkspace [S]ymbols')
|
nmap('<leader>ws', require('telescope.builtin').lsp_dynamic_workspace_symbols, '[W]orkspace [S]ymbols')
|
||||||
|
|
||||||
-- See `:help K` for why this keymap
|
-- See `:help K` for why this keymap
|
||||||
@ -1212,7 +1372,6 @@ local servers = {
|
|||||||
bashls = {},
|
bashls = {},
|
||||||
groovyls = {},
|
groovyls = {},
|
||||||
intelephense = {},
|
intelephense = {},
|
||||||
jdtls = {},
|
|
||||||
jsonls = {},
|
jsonls = {},
|
||||||
lua_ls = {
|
lua_ls = {
|
||||||
Lua = {
|
Lua = {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user