all repos

init.lua @ 2784223dfc20ca4022b4f4c2079c5fa036547abd

my nvim config

init.lua/ftplugin/java.lua(view raw)

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
local function jdtls_on_attach(client, bufnr)
  require "lsp.attach"(client, bufnr)
  -- stylua: ignore start
  vim.api.nvim_buf_set_keymap(bufnr, "n", "<leader>lI", "<cmd>lua require('jdtls').organize_imports()<CR>", { silent = true, noremap = true })
  vim.api.nvim_buf_set_keymap(bufnr, "n", "<leader>Tc", "<cmd>lua require('jdtls').test_class()<CR>", { silent = true, noremap = true })
  vim.api.nvim_buf_set_keymap(bufnr, "n", "<leader>Tn", "<cmd>lua require('jdtls').test_nearest_method()<CR>", { silent = true, noremap = true })
  vim.api.nvim_buf_set_keymap(bufnr, "v", "<leader>lev", "<cmd>lua require('jdtls').extract_variable(true)<CR>", { silent = true, noremap = true })
  vim.api.nvim_buf_set_keymap(bufnr, "v", "<leader>lem", "<cmd>lua require('jdtls').extract_method(true)<CR>", { silent = true, noremap = true })
  -- stylua: ignore end
end

require("jdtls").start_or_attach {
  on_attach = jdtls_on_attach,
  root_dir = require("jdtls.setup").find_root { ".git", "build.xml", "pom.xml", "settings.gradle", "settings.gradle.kts" },
  flags = { allow_incremental_sync = true },
  capabilities = {
    workspace = { configuration = true },
    textDocument = { completion = { completionItem = { snippetSupport = true } } },
  },
  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",
    "-Xms1g",
    "--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/lsp_servers/jdtls/plugins/org.eclipse.equinox.launcher_*.jar",

    "-configuration",
    "$HOME/.local/share/nvim/lsp_servers/jdtls/config_linux",
  },
  settings = {
    java = {
      signatureHelp = { enabled = true },
      contentProvider = { preferred = "fernflower" },
      sources = { organizeImports = {
        starThreshold = 9999,
        staticStarThreshold = 9999,
      } },
      codeGeneration = {
        toString = { template = "${object.className}{${member.name()}=${member.value}, ${otherMembers}}" },
        useBlocks = true,
      },
      configuration = {
        runtimes = { { name = "JavaSE-11", path = "$HOME/.sdkman/candidates/java/11.0.11-open" } },
      },
    },
  },
}

local finders = require "telescope.finders"
local sorters = require "telescope.sorters"
local actions = require "telescope.actions"
local pickers = require "telescope.pickers"
local action_state = require "telescope.actions.state"

require("jdtls.ui").pick_one_async = function(items, prompt, label_fn, cb)
  local opts = {
    winblend = 15,
    layout_config = {
      prompt_position = "top",
      width = 80,
      height = 12,
    },
  }
  pickers.new(opts, {
    prompt_title = prompt,
    finder = finders.new_table {
      results = items,
      entry_maker = function(entry)
        return {
          value = entry,
          display = label_fn(entry),
          ordinal = label_fn(entry),
        }
      end,
    },
    sorter = sorters.get_generic_fuzzy_sorter(),
    attach_mappings = function(prompt_bufnr)
      actions.select_default:replace(function()
        local selection = action_state.get_selected_entry(prompt_bufnr)

        actions.close(prompt_bufnr)

        cb(selection.value)
      end)

      return true
    end,
  }):find()
end

vim.cmd "command! -buffer JdtCompile lua require('jdtls').compile()"
vim.cmd "command! -buffer JdtUpdateConfig lua require('jdtls').update_project_config()"
vim.cmd "command! -buffer JdtBytecode lua require('jdtls').javap()"