|
1 | | --- print 'Loaded ftplugin/java.lua' |
| 1 | +---- print 'Loaded ftplugin/java.lua' |
| 2 | +--local jdtls = require 'jdtls' |
| 3 | +-- |
| 4 | +--local root_dir = require('jdtls.setup').find_root { '.git', 'mvnw', 'gradlew', 'pom.xml', '.project' } |
| 5 | +--if root_dir == '' then |
| 6 | +-- root_dir = vim.fn.getcwd() |
| 7 | +--end |
| 8 | +-- |
| 9 | +---- print('JDTLS root_dir = ' .. root_dir) |
| 10 | +-- |
| 11 | +--local workspace_dir = vim.fn.stdpath 'data' .. '/jdtls-workspace/' .. vim.fn.fnamemodify(root_dir, ':p:h:t') |
| 12 | +-- |
| 13 | +--local config = { |
| 14 | +-- cmd = { vim.fn.stdpath 'data' .. '/mason/packages/jdtls/bin/jdtls' }, |
| 15 | +-- root_dir = root_dir, |
| 16 | +-- workspace_folder = workspace_dir, |
| 17 | +-- settings = { |
| 18 | +-- java = { |
| 19 | +-- project = { |
| 20 | +-- sourcePaths = { 'src' }, |
| 21 | +-- }, |
| 22 | +-- }, |
| 23 | +-- }, |
| 24 | +--} |
| 25 | +-- |
| 26 | +--jdtls.start_or_attach(config) |
2 | 27 | local jdtls = require 'jdtls' |
3 | 28 |
|
4 | | -local root_dir = require('jdtls.setup').find_root { '.git', 'mvnw', 'gradlew', 'pom.xml' } |
| 29 | +local root_dir = require('jdtls.setup').find_root { '.git', 'pom.xml', 'build.gradle' } |
5 | 30 | if root_dir == '' then |
6 | 31 | root_dir = vim.fn.getcwd() |
7 | 32 | end |
8 | 33 |
|
9 | | -print('JDTLS root_dir = ' .. root_dir) |
10 | | - |
11 | 34 | local workspace_dir = vim.fn.stdpath 'data' .. '/jdtls-workspace/' .. vim.fn.fnamemodify(root_dir, ':p:h:t') |
12 | 35 |
|
13 | 36 | local config = { |
14 | | - cmd = { vim.fn.stdpath 'data' .. '/mason/packages/jdtls/bin/jdtls' }, -- 👈 absolute path |
15 | | - root_dir = root_dir, |
16 | | - workspace_folder = workspace_dir, |
17 | | - settings = { |
18 | | - java = { |
19 | | - project = { |
20 | | - sourcePaths = { 'src' }, -- 👈 tells jdtls where sources begin |
21 | | - }, |
22 | | - }, |
| 37 | + cmd = { |
| 38 | + vim.fn.stdpath 'data' .. '/mason/packages/jdtls/bin/jdtls', |
| 39 | + '-data', |
| 40 | + workspace_dir, |
23 | 41 | }, |
| 42 | + root_dir = root_dir, |
24 | 43 | } |
25 | 44 |
|
26 | 45 | jdtls.start_or_attach(config) |
| 46 | + |
| 47 | +-- LSP keymaps (for rename, code actions, etc.) |
| 48 | +local opts = { buffer = true } |
| 49 | +vim.keymap.set('n', '<leader>rn', vim.lsp.buf.rename, vim.tbl_extend('force', opts, { desc = 'LSP: Rename' })) |
| 50 | +vim.keymap.set('n', '<leader>ca', vim.lsp.buf.code_action, vim.tbl_extend('force', opts, { desc = 'LSP: Code Action' })) |
| 51 | +vim.keymap.set('n', 'gd', vim.lsp.buf.definition, vim.tbl_extend('force', opts, { desc = 'LSP: Go to Definition' })) |
| 52 | +vim.keymap.set('n', 'gr', vim.lsp.buf.references, vim.tbl_extend('force', opts, { desc = 'LSP: Find References' })) |
| 53 | +vim.keymap.set('n', 'K', vim.lsp.buf.hover, vim.tbl_extend('force', opts, { desc = 'LSP: Hover Doc' })) |
0 commit comments