feat: adding dap
This commit is contained in:
85
ftplugin/java.lua
Normal file
85
ftplugin/java.lua
Normal file
@@ -0,0 +1,85 @@
|
|||||||
|
local home = os.getenv("HOME")
|
||||||
|
local workspace_path = home .. "/.local/share/nvim/jdtls-workspace/"
|
||||||
|
local project_name = vim.fn.fnamemodify(vim.fn.getcwd(), ":p:h:t")
|
||||||
|
local workspace_dir = workspace_path .. project_name
|
||||||
|
local keymap = vim.keymap.set
|
||||||
|
|
||||||
|
local status, jdtls = pcall(require, "jdtls")
|
||||||
|
local dap = require("dap")
|
||||||
|
|
||||||
|
if not status then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
local extendedClientCapabilities = jdtls.extendedClientCapabilities
|
||||||
|
|
||||||
|
local bundles = {
|
||||||
|
vim.fn.glob(
|
||||||
|
home
|
||||||
|
.. "/.local/share/nvim/mason/packages/java-debug/com.microsoft.java.debug.plugin/target/com.microsoft.java.debug.plugin-*.jar"
|
||||||
|
),
|
||||||
|
}
|
||||||
|
vim.list_extend(
|
||||||
|
bundles,
|
||||||
|
vim.split(vim.fn.glob(home .. "/.local/share/nvim/mason/packages/vscode-java-test/server/*.jar", true), "\n")
|
||||||
|
)
|
||||||
|
|
||||||
|
local config = {
|
||||||
|
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",
|
||||||
|
"-Xmx1g",
|
||||||
|
"--add-modules=ALL-SYSTEM",
|
||||||
|
"--add-opens",
|
||||||
|
"java.base/java.util=ALL-UNNAMED",
|
||||||
|
"--add-opens",
|
||||||
|
"java.base/java.lang=ALL-UNNAMED",
|
||||||
|
"-javaagent:" .. home .. "/.local/share/nvim/mason/packages/jdtls/lombok.jar",
|
||||||
|
"-jar",
|
||||||
|
vim.fn.glob(home .. "/.local/share/nvim/mason/packages/jdtls/plugins/org.eclipse.equinox.launcher_*.jar"),
|
||||||
|
"-configuration",
|
||||||
|
home .. "/.local/share/nvim/mason/packages/jdtls/config_mac",
|
||||||
|
"-data",
|
||||||
|
workspace_dir,
|
||||||
|
},
|
||||||
|
root_dir = require("jdtls.setup").find_root({ ".git", "mvnw", "gradlew", "pom.xml", "build.gradle" }),
|
||||||
|
|
||||||
|
settings = {
|
||||||
|
java = {
|
||||||
|
signatureHelp = { enabled = true },
|
||||||
|
extendedClientCapabilities = extendedClientCapabilities,
|
||||||
|
maven = {
|
||||||
|
downloadSources = true,
|
||||||
|
},
|
||||||
|
referencesCodeLens = {
|
||||||
|
enabled = true,
|
||||||
|
},
|
||||||
|
references = {
|
||||||
|
includeDecompiledSources = true,
|
||||||
|
},
|
||||||
|
inlayHints = {
|
||||||
|
parameterNames = {
|
||||||
|
enabled = "all", -- literals, all, none
|
||||||
|
},
|
||||||
|
},
|
||||||
|
format = {
|
||||||
|
enabled = false,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
init_options = {
|
||||||
|
bundles = {},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
require("jdtls").start_or_attach(config)
|
||||||
|
|
||||||
|
keymap("n", "<leader>co", "<Cmd>lua require'jdtls'.organize_imports()<CR>", { desc = "Organize Imports" })
|
||||||
|
keymap("n", "<leader>crv", "<Cmd>lua require('jdtls').extract_variable()<CR>", { desc = "Extract Variable" })
|
||||||
|
keymap("v", "<leader>crv", "<Esc><Cmd>lua require('jdtls').extract_variable(true)<CR>", { desc = "Extract Variable" })
|
||||||
|
keymap("n", "<leader>crc", "<Cmd>lua require('jdtls').extract_constant()<CR>", { desc = "Extract Constant" })
|
||||||
|
keymap("v", "<leader>crc", "<Esc><Cmd>lua require('jdtls').extract_constant(true)<CR>", { desc = "Extract Constant" })
|
||||||
|
keymap("v", "<leader>crm", "<Esc><Cmd>lua require('jdtls').extract_method(true)<CR>", { desc = "Extract Method" })
|
||||||
@@ -37,34 +37,61 @@ return {
|
|||||||
|
|
||||||
-- Keymaps for debugging
|
-- Keymaps for debugging
|
||||||
local keymap = vim.keymap.set
|
local keymap = vim.keymap.set
|
||||||
keymap("n", "<F5>", function()
|
keymap("n", "<leader>dc", "<Cmd>lua require'dap'.continue()<CR>", { desc = "Start Debugging" })
|
||||||
dap.continue()
|
|
||||||
end, { desc = "Start Debugging" })
|
keymap("n", "<leader>do", function()
|
||||||
keymap("n", "<F10>", function()
|
|
||||||
dap.step_over()
|
dap.step_over()
|
||||||
end, { desc = "Step Over" })
|
end, { desc = "Step Over" })
|
||||||
keymap("n", "<F11>", function()
|
|
||||||
|
keymap("n", "<leader>di", function()
|
||||||
dap.step_into()
|
dap.step_into()
|
||||||
end, { desc = "Step Into" })
|
end, { desc = "Step Into" })
|
||||||
keymap("n", "<F12>", function()
|
|
||||||
|
keymap("n", "<leader>dot", function()
|
||||||
dap.step_out()
|
dap.step_out()
|
||||||
end, { desc = "Step Out" })
|
end, { desc = "Step Out" })
|
||||||
|
|
||||||
keymap("n", "<leader>db", function()
|
keymap("n", "<leader>db", function()
|
||||||
dap.toggle_breakpoint()
|
dap.toggle_breakpoint()
|
||||||
end, { desc = "Toggle Breakpoint" })
|
end, { desc = "Toggle Breakpoint" })
|
||||||
|
|
||||||
keymap("n", "<leader>dB", function()
|
keymap("n", "<leader>dB", function()
|
||||||
dap.set_breakpoint(vim.fn.input("Breakpoint condition: "))
|
dap.set_breakpoint(vim.fn.input("Breakpoint condition: "))
|
||||||
end, { desc = "Conditional Breakpoint" })
|
end, { desc = "Conditional Breakpoint" })
|
||||||
|
|
||||||
keymap("n", "<leader>dr", function()
|
keymap("n", "<leader>dr", function()
|
||||||
dap.repl.open()
|
dap.repl.open()
|
||||||
end, { desc = "Open REPL" })
|
end, { desc = "Open REPL" })
|
||||||
|
|
||||||
keymap("n", "<leader>dl", function()
|
keymap("n", "<leader>dl", function()
|
||||||
dap.run_last()
|
dap.run_last()
|
||||||
end, { desc = "Run Last Debug Session" })
|
end, { desc = "Run Last Debug Session" })
|
||||||
|
|
||||||
keymap("n", "<leader>du", function()
|
keymap("n", "<leader>du", function()
|
||||||
dapui.toggle()
|
dapui.toggle()
|
||||||
end, { desc = "Toggle DAP UI" })
|
end, { desc = "Toggle DAP UI" })
|
||||||
|
|
||||||
|
keymap("n", "<leader>dq", "<Cmd>lua require'dap'.terminate()<CR>", { desc = "Stop Debugging" })
|
||||||
|
|
||||||
|
-- Java DAP Configuration
|
||||||
|
dap.adapters.java = function(callback)
|
||||||
|
callback({
|
||||||
|
type = "server",
|
||||||
|
host = "127.0.0.1",
|
||||||
|
port = { port }, -- Port JDTLS uses for debugging
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
dap.configurations.java = {
|
||||||
|
{
|
||||||
|
name = "Attach to running Java process",
|
||||||
|
type = "java",
|
||||||
|
request = "attach",
|
||||||
|
hostName = "127.0.0.1",
|
||||||
|
port = { port },
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
-- Node.js Adapter Configuration for NestJS
|
-- Node.js Adapter Configuration for NestJS
|
||||||
dap.adapters.node2 = {
|
dap.adapters.node2 = {
|
||||||
type = "executable",
|
type = "executable",
|
||||||
@@ -72,21 +99,20 @@ return {
|
|||||||
args = { os.getenv("HOME") .. "/.local/share/nvim/mason/packages/node-debug2-adapter/out/src/nodedebug.js" },
|
args = { os.getenv("HOME") .. "/.local/share/nvim/mason/packages/node-debug2-adapter/out/src/nodedebug.js" },
|
||||||
}
|
}
|
||||||
|
|
||||||
-- Debug Configuration for NestJS
|
|
||||||
dap.configurations.typescript = {
|
dap.configurations.typescript = {
|
||||||
{
|
{
|
||||||
name = "Launch NestJS",
|
name = "Launch NestJS",
|
||||||
type = "node2",
|
type = "node2",
|
||||||
request = "launch",
|
request = "launch",
|
||||||
program = "${workspaceFolder}/node_modules/.bin/nest",
|
program = "${workspaceFolder}/dist/main.js",
|
||||||
args = { "start", "--debug", "--watch" },
|
args = {},
|
||||||
console = "integratedTerminal",
|
console = "integratedTerminal",
|
||||||
outFiles = { "${workspaceFolder}/dist/**/*.js" },
|
outFiles = { "${workspaceFolder}/dist/**/*.js" },
|
||||||
sourceMaps = true,
|
sourceMaps = true,
|
||||||
protocol = "inspector",
|
protocol = "inspector",
|
||||||
cwd = vim.fn.getcwd(),
|
cwd = vim.fn.getcwd(),
|
||||||
|
runtimeArgs = { "--inspect-brk" }, -- 🚀 Ensures debugging starts properly
|
||||||
restart = true,
|
restart = true,
|
||||||
runtimeArgs = { "--nolazy" },
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name = "Attach to Process",
|
name = "Attach to Process",
|
||||||
@@ -95,5 +121,71 @@ return {
|
|||||||
processId = require("dap.utils").pick_process,
|
processId = require("dap.utils").pick_process,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
-- dap.configurations.typescript = {
|
||||||
|
-- {
|
||||||
|
-- name = "Launch NestJS",
|
||||||
|
-- type = "node2",
|
||||||
|
-- request = "launch",
|
||||||
|
-- program = "${workspaceFolder}/dist/main.js", -- ⚠️ Ensure this is correct!
|
||||||
|
-- args = {},
|
||||||
|
-- console = "integratedTerminal",
|
||||||
|
-- outFiles = { "${workspaceFolder}/dist/**/*.js" },
|
||||||
|
-- sourceMaps = true,
|
||||||
|
-- protocol = "inspector",
|
||||||
|
-- cwd = vim.fn.getcwd(),
|
||||||
|
-- runtimeArgs = { "--nolazy" },
|
||||||
|
-- },
|
||||||
|
-- {
|
||||||
|
-- name = "Attach to Process",
|
||||||
|
-- type = "node2",
|
||||||
|
-- request = "attach",
|
||||||
|
-- processId = require("dap.utils").pick_process,
|
||||||
|
-- },
|
||||||
|
-- }
|
||||||
|
|
||||||
|
dap.adapters.chrome = {
|
||||||
|
type = "executable",
|
||||||
|
command = "node",
|
||||||
|
args = { os.getenv("HOME") .. "/.local/share/nvim/mason/packages/chrome-debug-adapter/out/src/chromeDebug.js" },
|
||||||
|
}
|
||||||
|
|
||||||
|
dap.configurations.typescriptreact = {
|
||||||
|
{
|
||||||
|
name = "Attach to Chrome",
|
||||||
|
type = "chrome",
|
||||||
|
request = "attach",
|
||||||
|
program = "${file}",
|
||||||
|
cwd = vim.fn.getcwd(),
|
||||||
|
port = 9222, -- 🚀 Chrome debugging port
|
||||||
|
webRoot = "${workspaceFolder}",
|
||||||
|
sourceMaps = true,
|
||||||
|
skipFiles = { "<node_internals>/**", "webpack://_N_E/./node_modules/**" },
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name = "Launch Chrome with DevTools",
|
||||||
|
type = "chrome",
|
||||||
|
request = "launch",
|
||||||
|
url = "http://localhost:4000", -- Your React app runs on this port
|
||||||
|
webRoot = "${workspaceFolder}",
|
||||||
|
runtimeArgs = { "--remote-debugging-port=9222" },
|
||||||
|
sourceMaps = true,
|
||||||
|
skipFiles = { "<node_internals>/**", "webpack://_N_E/./node_modules/**" },
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
dap.configurations.javascript = {
|
||||||
|
{
|
||||||
|
name = "Attach to Chrome",
|
||||||
|
type = "chrome",
|
||||||
|
request = "attach",
|
||||||
|
program = "${file}",
|
||||||
|
cwd = vim.fn.getcwd(),
|
||||||
|
port = 9222, -- 🚀 Default Chrome Debug Port
|
||||||
|
webRoot = "${workspaceFolder}",
|
||||||
|
sourceMaps = true,
|
||||||
|
skipFiles = { "<node_internals>/**", "webpack://_N_E/./node_modules/**" },
|
||||||
|
},
|
||||||
|
}
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -37,6 +37,7 @@ return {
|
|||||||
"emmet_ls",
|
"emmet_ls",
|
||||||
"prismals",
|
"prismals",
|
||||||
"pyright",
|
"pyright",
|
||||||
|
"jdtls",
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
3
lua/cargdev/plugins/nvim-jdtls.lua
Normal file
3
lua/cargdev/plugins/nvim-jdtls.lua
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
return {
|
||||||
|
'mfussenegger/nvim-jdtls',
|
||||||
|
}
|
||||||
59
tree.log
Normal file
59
tree.log
Normal file
@@ -0,0 +1,59 @@
|
|||||||
|
.
|
||||||
|
├── README.md
|
||||||
|
├── ftplugin
|
||||||
|
│ └── java.lua
|
||||||
|
├── init.lua
|
||||||
|
├── keyboard_mappings.md
|
||||||
|
├── kkk
|
||||||
|
├── lazigitconfig.log
|
||||||
|
├── lazy-lock.json
|
||||||
|
├── lua
|
||||||
|
│ ├── cargdev
|
||||||
|
│ │ ├── core
|
||||||
|
│ │ │ ├── function
|
||||||
|
│ │ │ │ └── openTerminal.lua
|
||||||
|
│ │ │ ├── init.lua
|
||||||
|
│ │ │ ├── keymaps.lua
|
||||||
|
│ │ │ └── options.lua
|
||||||
|
│ │ ├── lazy.lua
|
||||||
|
│ │ └── plugins
|
||||||
|
│ │ ├── alpha.lua
|
||||||
|
│ │ ├── auto-session.lua
|
||||||
|
│ │ ├── autopairs.lua
|
||||||
|
│ │ ├── bufferline.lua
|
||||||
|
│ │ ├── buffertabs.lua
|
||||||
|
│ │ ├── colorscheme.lua
|
||||||
|
│ │ ├── comments.lua
|
||||||
|
│ │ ├── copilot.lua
|
||||||
|
│ │ ├── dap.lua
|
||||||
|
│ │ ├── dressing.lua
|
||||||
|
│ │ ├── formatting.lua
|
||||||
|
│ │ ├── gitsigns.lua
|
||||||
|
│ │ ├── indent-blankline.lua
|
||||||
|
│ │ ├── init.lua
|
||||||
|
│ │ ├── lazygit.lua
|
||||||
|
│ │ ├── linting.lua
|
||||||
|
│ │ ├── lsp
|
||||||
|
│ │ │ ├── jdtls.lua
|
||||||
|
│ │ │ ├── lspconfig.lua
|
||||||
|
│ │ │ └── mason.lua
|
||||||
|
│ │ ├── lualine.lua
|
||||||
|
│ │ ├── noice.lua
|
||||||
|
│ │ ├── nvim-cmp.lua
|
||||||
|
│ │ ├── nvim-jdtls.lua
|
||||||
|
│ │ ├── nvim-tree.lua
|
||||||
|
│ │ ├── nvim-treesitter-text-objects.lua
|
||||||
|
│ │ ├── substitute.lua
|
||||||
|
│ │ ├── surround.lua
|
||||||
|
│ │ ├── telescope.lua
|
||||||
|
│ │ ├── tmux.lua
|
||||||
|
│ │ ├── todo-comments.lua
|
||||||
|
│ │ ├── treesitter.lua
|
||||||
|
│ │ ├── trouble.lua
|
||||||
|
│ │ ├── vim-maximizer.lua
|
||||||
|
│ │ ├── wakatime.lua
|
||||||
|
│ │ └── which-key.lua
|
||||||
|
│ └── myconfig
|
||||||
|
└── tree.log
|
||||||
|
|
||||||
|
9 directories, 48 files
|
||||||
Reference in New Issue
Block a user