feat: add 'run gradle tests' and add 2 more plugins
This commit is contained in:
105
init.lua
105
init.lua
@@ -29,7 +29,10 @@ vim.pack.add({
|
||||
{ src = "https://github.com/JoosepAlviste/nvim-ts-context-commentstring" },
|
||||
|
||||
-- java support
|
||||
{ src = "https://github.com/mfussenegger/nvim-jdtls" }
|
||||
{ src = "https://github.com/mfussenegger/nvim-jdtls" },
|
||||
|
||||
{ src = "https://github.com/folke/which-key.nvim" },
|
||||
{ src = "https://github.com/sphamba/smear-cursor.nvim" }
|
||||
})
|
||||
|
||||
require('nvim_comment').setup({
|
||||
@@ -173,6 +176,61 @@ require "nvim-treesitter.configs".setup({
|
||||
}
|
||||
})
|
||||
|
||||
-- Treesitter Java class + method lookup
|
||||
local ts = vim.treesitter
|
||||
|
||||
local function java_symbol_under_cursor()
|
||||
local parser = ts.get_parser(0, "java")
|
||||
if not parser then return nil, nil end
|
||||
|
||||
local tree = parser:parse()[1]
|
||||
local root = tree:root()
|
||||
|
||||
local cursor = vim.api.nvim_win_get_cursor(0)
|
||||
local row, col = cursor[1] - 1, cursor[2]
|
||||
|
||||
local node = root:named_descendant_for_range(row, col, row, col)
|
||||
if not node then return nil, nil end
|
||||
|
||||
local class_name = nil
|
||||
local method_name = nil
|
||||
|
||||
-- Walk up the syntax tree
|
||||
while node do
|
||||
local type = node:type()
|
||||
if type == "class_declaration" and not class_name then
|
||||
local name_node = node:field("name")[1]
|
||||
if name_node then
|
||||
class_name = ts.get_node_text(name_node, 0)
|
||||
end
|
||||
elseif type == "method_declaration" and not method_name then
|
||||
local name_node = node:field("name")[1]
|
||||
if name_node then
|
||||
method_name = ts.get_node_text(name_node, 0)
|
||||
end
|
||||
end
|
||||
node = node:parent()
|
||||
end
|
||||
|
||||
return class_name, method_name
|
||||
end
|
||||
|
||||
local function run_selected_gradle_tests()
|
||||
local class_name, method_name = java_symbol_under_cursor()
|
||||
if class_name and method_name then
|
||||
local cmd = string.format("./gradlew clean test --tests %s.%s", class_name, method_name)
|
||||
vim.cmd("vsplit | terminal " .. cmd)
|
||||
end
|
||||
end
|
||||
|
||||
local function run_all_gradle_tests()
|
||||
local cmd = string.format("./gradlew clean test")
|
||||
vim.cmd("vsplit | terminal " .. cmd)
|
||||
end
|
||||
|
||||
|
||||
-- Keymap to print class + method under cursor
|
||||
|
||||
vim.api.nvim_create_autocmd('TextYankPost', {
|
||||
desc = 'Hightlight selection on yank',
|
||||
pattern = '*',
|
||||
@@ -197,8 +255,12 @@ vim.api.nvim_create_autocmd('BufWritePre', {
|
||||
|
||||
vim.filetype.add({ extension = { templ = "templ" } })
|
||||
|
||||
|
||||
require('smear_cursor').setup({})
|
||||
|
||||
vim.g.mapleader = " "
|
||||
|
||||
|
||||
vim.keymap.set('i', '<C-n>', vim.lsp.completion.get, {})
|
||||
vim.keymap.set('i', '<C-z>', "<C-y>", {})
|
||||
vim.keymap.set('n', 'gd', vim.lsp.buf.definition, {})
|
||||
@@ -206,23 +268,40 @@ vim.keymap.set('n', 'gr', vim.lsp.buf.references, {})
|
||||
vim.keymap.set('n', '<S-F6>', vim.lsp.buf.rename, {})
|
||||
vim.keymap.set('n', '<F4>', vim.lsp.buf.code_action, {})
|
||||
|
||||
vim.keymap.set('n', '<leader>q', ':q<CR>', {})
|
||||
vim.keymap.set('n', '<leader>w', ':w<CR>', {})
|
||||
vim.keymap.set('n', '<leader>c', ':noh<CR>', {})
|
||||
vim.keymap.set('n', '<leader>q', ':q<CR>', { desc = "Quit current Buffer" })
|
||||
vim.keymap.set('n', '<leader>w', ':w<CR>', { desc = "Write current Buffer" })
|
||||
vim.keymap.set('n', '<leader>c', ':noh<CR>', { desc = "Clear search selection" })
|
||||
vim.keymap.set('n', '<F2>', vim.diagnostic.goto_next, {})
|
||||
|
||||
vim.keymap.set('n', '<leader>ff', ":Pick files<CR>", {})
|
||||
vim.keymap.set('n', '<leader>fg', ":Pick grep<CR><CR>", {})
|
||||
-- vim.keymap.set('n', '<leader>fb', telescope.buffers, {})
|
||||
vim.keymap.set('n', '<leader>fh', ":Pick help<CR>", {})
|
||||
vim.keymap.set("n", "<C-h>", "<C-w>h")
|
||||
-- Terminal is sending Backspace instead of <C-h>, so this needs to be different
|
||||
vim.keymap.set("n", "<BS>", "<C-w>h")
|
||||
vim.keymap.set("n", "<C-j>", "<C-w>j")
|
||||
vim.keymap.set("n", "<C-k>", "<C-w>k")
|
||||
vim.keymap.set("n", "<C-l>", "<C-w>l")
|
||||
|
||||
vim.keymap.set('n', '<leader>ff', ":Pick files<CR>", { desc = "Find files" })
|
||||
vim.keymap.set('n', '<leader>fg', ":Pick grep<CR><CR>", { desc = "Search in files" })
|
||||
-- vim.keymap.set('v', '<leader>fg', ":Pick grep<CR>'<,'><CR>", { desc = "Search in files" })
|
||||
vim.keymap.set('n', '<leader>fb', ":Pick buffers<CR>", { desc = "Find buffers" })
|
||||
vim.keymap.set('n', '<leader>fh', ":Pick help<CR>", { desc = "Search vim help" })
|
||||
|
||||
vim.keymap.set("n", "-", "<CMD>Oil<CR>", { desc = "Open parent directory" })
|
||||
|
||||
|
||||
vim.keymap.set("n", "<leader>oi", require 'jdtls'.organize_imports)
|
||||
vim.keymap.set("n", "<leader>ev", require 'jdtls'.extract_variable)
|
||||
vim.keymap.set("n", "<leader>ec", require 'jdtls'.extract_constant)
|
||||
vim.keymap.set("n", "<leader>em", require 'jdtls'.extract_method)
|
||||
vim.keymap.set("v", "<leader>em", ":lua require'jdtls'.extract_method(true)<CR>", { silent = true })
|
||||
vim.keymap.set("n", "<leader>oi", require 'jdtls'.organize_imports, { desc = "Organize imports" })
|
||||
vim.keymap.set("n", "<leader>ev", require 'jdtls'.extract_variable, { desc = "Extract variable" })
|
||||
vim.keymap.set("n", "<leader>ec", require 'jdtls'.extract_constant, { desc = "Extract constant" })
|
||||
vim.keymap.set("n", "<leader>em", require 'jdtls'.extract_method, { desc = "Extract method" })
|
||||
vim.keymap.set("v", "<leader>em", ":lua require'jdtls'.extract_method(true)<CR>",
|
||||
{ desc = "Extract method", silent = true })
|
||||
|
||||
vim.keymap.set("n", "<leader>rtc", run_selected_gradle_tests, { desc = "Run Gradle tests under cursor" })
|
||||
vim.keymap.set("n", "<leader>rta", run_all_gradle_tests, { desc = "Run all Gradle tests" })
|
||||
|
||||
vim.keymap.set({ "n", "v", "i" }, "<leader>?", function() require("which-key").show({ global = false }) end,
|
||||
{ desc = "Buffer Local Keymaps (which-key)" })
|
||||
|
||||
|
||||
-- TODO: Snippets like new java class
|
||||
--
|
||||
|
||||
Reference in New Issue
Block a user