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" },
|
{ src = "https://github.com/JoosepAlviste/nvim-ts-context-commentstring" },
|
||||||
|
|
||||||
-- java support
|
-- 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({
|
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', {
|
vim.api.nvim_create_autocmd('TextYankPost', {
|
||||||
desc = 'Hightlight selection on yank',
|
desc = 'Hightlight selection on yank',
|
||||||
pattern = '*',
|
pattern = '*',
|
||||||
@@ -197,8 +255,12 @@ vim.api.nvim_create_autocmd('BufWritePre', {
|
|||||||
|
|
||||||
vim.filetype.add({ extension = { templ = "templ" } })
|
vim.filetype.add({ extension = { templ = "templ" } })
|
||||||
|
|
||||||
|
|
||||||
|
require('smear_cursor').setup({})
|
||||||
|
|
||||||
vim.g.mapleader = " "
|
vim.g.mapleader = " "
|
||||||
|
|
||||||
|
|
||||||
vim.keymap.set('i', '<C-n>', vim.lsp.completion.get, {})
|
vim.keymap.set('i', '<C-n>', vim.lsp.completion.get, {})
|
||||||
vim.keymap.set('i', '<C-z>', "<C-y>", {})
|
vim.keymap.set('i', '<C-z>', "<C-y>", {})
|
||||||
vim.keymap.set('n', 'gd', vim.lsp.buf.definition, {})
|
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', '<S-F6>', vim.lsp.buf.rename, {})
|
||||||
vim.keymap.set('n', '<F4>', vim.lsp.buf.code_action, {})
|
vim.keymap.set('n', '<F4>', vim.lsp.buf.code_action, {})
|
||||||
|
|
||||||
vim.keymap.set('n', '<leader>q', ':q<CR>', {})
|
vim.keymap.set('n', '<leader>q', ':q<CR>', { desc = "Quit current Buffer" })
|
||||||
vim.keymap.set('n', '<leader>w', ':w<CR>', {})
|
vim.keymap.set('n', '<leader>w', ':w<CR>', { desc = "Write current Buffer" })
|
||||||
vim.keymap.set('n', '<leader>c', ':noh<CR>', {})
|
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', '<F2>', vim.diagnostic.goto_next, {})
|
||||||
|
|
||||||
vim.keymap.set('n', '<leader>ff', ":Pick files<CR>", {})
|
vim.keymap.set("n", "<C-h>", "<C-w>h")
|
||||||
vim.keymap.set('n', '<leader>fg', ":Pick grep<CR><CR>", {})
|
-- Terminal is sending Backspace instead of <C-h>, so this needs to be different
|
||||||
-- vim.keymap.set('n', '<leader>fb', telescope.buffers, {})
|
vim.keymap.set("n", "<BS>", "<C-w>h")
|
||||||
vim.keymap.set('n', '<leader>fh', ":Pick help<CR>", {})
|
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", "-", "<CMD>Oil<CR>", { desc = "Open parent directory" })
|
||||||
|
|
||||||
|
|
||||||
vim.keymap.set("n", "<leader>oi", require 'jdtls'.organize_imports)
|
vim.keymap.set("n", "<leader>oi", require 'jdtls'.organize_imports, { desc = "Organize imports" })
|
||||||
vim.keymap.set("n", "<leader>ev", require 'jdtls'.extract_variable)
|
vim.keymap.set("n", "<leader>ev", require 'jdtls'.extract_variable, { desc = "Extract variable" })
|
||||||
vim.keymap.set("n", "<leader>ec", require 'jdtls'.extract_constant)
|
vim.keymap.set("n", "<leader>ec", require 'jdtls'.extract_constant, { desc = "Extract constant" })
|
||||||
vim.keymap.set("n", "<leader>em", require 'jdtls'.extract_method)
|
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>", { silent = true })
|
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
|
-- TODO: Snippets like new java class
|
||||||
|
--
|
||||||
|
|||||||
Reference in New Issue
Block a user