mirror of
https://github.com/pojokcodeid/nvim-lazy.git
synced 2025-06-21 16:39:04 +02:00
enc: add java key mapping
This commit is contained in:
parent
292e79137f
commit
5ab63cdf43
1 changed files with 39 additions and 47 deletions
|
@ -18,10 +18,28 @@ end
|
||||||
M = {
|
M = {
|
||||||
{
|
{
|
||||||
"williamboman/mason-lspconfig.nvim",
|
"williamboman/mason-lspconfig.nvim",
|
||||||
|
-- stylua: ignore
|
||||||
opts = function(_, opts)
|
opts = function(_, opts)
|
||||||
opts.skip_config = opts.skip_config or {}
|
opts.skip_config = opts.skip_config or {}
|
||||||
vim.list_extend(opts.skip_config, { "jdtls" })
|
vim.list_extend(opts.skip_config, { "jdtls" })
|
||||||
|
-- Set vim motion for <Space> + l + h to show code documentation about the code the cursor is currently over if available
|
||||||
|
vim.keymap.set("n", "<leader>lh", vim.lsp.buf.hover, { desc = "Code Hover Documentation" })
|
||||||
|
-- Set vim motion for <Space> + l + d to go where the code/variable under the cursor was defined
|
||||||
|
vim.keymap.set("n", "<leader>ld", vim.lsp.buf.definition, { desc = "Code Goto Definition" })
|
||||||
|
-- Set vim motion for <Space> + l + a for display code action suggestions for code diagnostics in both normal and visual mode
|
||||||
|
vim.keymap.set({ "n", "v" }, "<leader>la", vim.lsp.buf.code_action, { desc = "Code Actions" })
|
||||||
|
-- Set vim motion for <Space> + l + r to display references to the code under the cursor
|
||||||
|
vim.keymap.set("n", "<leader>lr", require("telescope.builtin").lsp_references, { desc = "Code Goto References" })
|
||||||
|
-- Set vim motion for <Space> + l + i to display implementations to the code under the cursor
|
||||||
|
vim.keymap.set("n", "<leader>li", require("telescope.builtin").lsp_implementations, { desc = "Code Goto Implementations" })
|
||||||
|
-- Set a vim motion for <Space> + l + <Shift>R to smartly rename the code under the cursor
|
||||||
|
vim.keymap.set("n", "<leader>lR", vim.lsp.buf.rename, { desc = "Code Rename" })
|
||||||
|
-- Set a vim motion for <Space> + l + <Shift>D to go to where the code/object was declared in the project (class file)
|
||||||
|
vim.keymap.set("n", "<leader>lD", vim.lsp.buf.declaration, { desc = "Code Goto Declaration" })
|
||||||
end,
|
end,
|
||||||
|
keys = {
|
||||||
|
{ "<leader>l", "", desc = "LSP", mode = { "n", "v" } },
|
||||||
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"mfussenegger/nvim-jdtls",
|
"mfussenegger/nvim-jdtls",
|
||||||
|
@ -103,8 +121,6 @@ M = {
|
||||||
end
|
end
|
||||||
|
|
||||||
local function attach_jdtls()
|
local function attach_jdtls()
|
||||||
local fname = vim.api.nvim_buf_get_name(0)
|
|
||||||
|
|
||||||
-- Configuration can be augmented and overridden by opts.jdtls
|
-- Configuration can be augmented and overridden by opts.jdtls
|
||||||
local config = extend_or_override({
|
local config = extend_or_override({
|
||||||
cmd = opts.full_cmd(opts),
|
cmd = opts.full_cmd(opts),
|
||||||
|
@ -134,56 +150,32 @@ M = {
|
||||||
vim.api.nvim_create_autocmd("LspAttach", {
|
vim.api.nvim_create_autocmd("LspAttach", {
|
||||||
callback = function(args)
|
callback = function(args)
|
||||||
local client = vim.lsp.get_client_by_id(args.data.client_id)
|
local client = vim.lsp.get_client_by_id(args.data.client_id)
|
||||||
|
-- stylua: ignore
|
||||||
if client and client.name == "jdtls" then
|
if client and client.name == "jdtls" then
|
||||||
local wk = require("which-key")
|
-- add keymaps
|
||||||
wk.add({
|
vim.keymap.set('n', '<leader>J', "", { desc = "Java" })
|
||||||
{
|
-- Set a Vim motion to <Space> + <Shift>J + o to organize imports in normal mode
|
||||||
mode = "n",
|
vim.keymap.set('n', '<leader>Jo', "<Cmd> lua require('jdtls').organize_imports()<CR>", { desc = "Java Organize Imports" })
|
||||||
buffer = args.buf,
|
-- Set a Vim motion to <Space> + <Shift>J + v to extract the code under the cursor to a variable
|
||||||
{ "<leader>cx", group = "extract" },
|
vim.keymap.set('n', '<leader>Jv', "<Cmd> lua require('jdtls').extract_variable()<CR>", { desc = "Java Extract Variable" })
|
||||||
{ "<leader>cxv", require("jdtls").extract_variable_all, desc = "Extract Variable" },
|
-- Set a Vim motion to <Space> + <Shift>J + v to extract the code selected in visual mode to a variable
|
||||||
{ "<leader>cxc", require("jdtls").extract_constant, desc = "Extract Constant" },
|
vim.keymap.set('v', '<leader>Jv', "<Esc><Cmd> lua require('jdtls').extract_variable(true)<CR>", { desc = "Java Extract Variable" })
|
||||||
{ "gs", require("jdtls").super_implementation, desc = "Goto Super" },
|
-- Set a Vim motion to <Space> + <Shift>J + <Shift>C to extract the code under the cursor to a static variable
|
||||||
{ "<leader>co", require("jdtls").organize_imports, desc = "Organize Imports" },
|
vim.keymap.set('n', '<leader>JC', "<Cmd> lua require('jdtls').extract_constant()<CR>", { desc = "Java Extract Constant" })
|
||||||
},
|
-- Set a Vim motion to <Space> + <Shift>J + <Shift>C to extract the code selected in visual mode to a static variable
|
||||||
})
|
vim.keymap.set('v', '<leader>JC', "<Esc><Cmd> lua require('jdtls').extract_constant(true)<CR>", { desc = "Java Extract Constant" })
|
||||||
wk.add({
|
-- Set a Vim motion to <Space> + <Shift>J + t to run the test method currently under the cursor
|
||||||
{
|
vim.keymap.set('n', '<leader>Jt', "<Cmd> lua require('jdtls').test_nearest_method()<CR>", { desc = "Java Test Method" })
|
||||||
mode = "v",
|
-- Set a Vim motion to <Space> + <Shift>J + t to run the test method that is currently selected in visual mode
|
||||||
buffer = args.buf,
|
vim.keymap.set('v', '<leader>Jt', "<Esc><Cmd> lua require('jdtls').test_nearest_method(true)<CR>", { desc = "Java Test Method" })
|
||||||
{ "<leader>cx", group = "extract" },
|
-- Set a Vim motion to <Space> + <Shift>J + <Shift>T to run an entire test suite (class)
|
||||||
{
|
vim.keymap.set('n', '<leader>JT', "<Cmd> lua require('jdtls').test_class()<CR>", { desc = "Java Test Class" })
|
||||||
"<leader>cxm",
|
-- Set a Vim motion to <Space> + <Shift>J + u to update the project configuration
|
||||||
[[<ESC><CMD>lua require('jdtls').extract_method(true)<CR>]],
|
vim.keymap.set('n', '<leader>Ju', "<Cmd> JdtUpdateConfig<CR>", { desc = "Java Update Config" })
|
||||||
desc = "Extract Method",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"<leader>cxv",
|
|
||||||
[[<ESC><CMD>lua require('jdtls').extract_variable_all(true)<CR>]],
|
|
||||||
desc = "Extract Variable",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"<leader>cxc",
|
|
||||||
[[<ESC><CMD>lua require('jdtls').extract_constant(true)<CR>]],
|
|
||||||
desc = "Extract Constant",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
})
|
|
||||||
if opts.dap and mason_registry.is_installed("java-debug-adapter") then
|
if opts.dap and mason_registry.is_installed("java-debug-adapter") then
|
||||||
-- custom init for Java debugger
|
-- custom init for Java debugger
|
||||||
require("jdtls").setup_dap(opts.dap)
|
require("jdtls").setup_dap(opts.dap)
|
||||||
require("jdtls.dap").setup_dap_main_class_configs(opts.dap_main)
|
require("jdtls.dap").setup_dap_main_class_configs(opts.dap_main)
|
||||||
|
|
||||||
-- Java Test require Java debugger to work
|
|
||||||
-- if opts.test and mason_registry.is_installed("java-test") then
|
|
||||||
-- -- custom keymaps for Java test runner (not yet compatible with neotest)
|
|
||||||
-- wk.register({
|
|
||||||
-- ["<leader>t"] = { name = "+test" },
|
|
||||||
-- ["<leader>tt"] = { require("jdtls.dap").test_class, "Run All Test" },
|
|
||||||
-- ["<leader>tr"] = { require("jdtls.dap").test_nearest_method, "Run Nearest Test" },
|
|
||||||
-- ["<leader>tT"] = { require("jdtls.dap").pick_test, "Run Test" },
|
|
||||||
-- }, { mode = "n", buffer = args.buf })
|
|
||||||
-- end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
-- User can set additional keymaps in opts.on_attach
|
-- User can set additional keymaps in opts.on_attach
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue