Compare commits
11 Commits
05cd9d2e6e
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
|
47d40e3ed7
|
|||
|
06d1928f29
|
|||
|
755ec71e01
|
|||
|
6865b4f655
|
|||
|
6e3ff2a8a9
|
|||
|
3e13b8fa64
|
|||
|
961a516fb2
|
|||
|
c24e370e0b
|
|||
|
25065f8e97
|
|||
|
248c1f1b21
|
|||
|
6222393fc5
|
203
init.lua
203
init.lua
@@ -18,15 +18,18 @@ vim.pack.add({
|
|||||||
{ src = "https://github.com/neovim/nvim-lspconfig" },
|
{ src = "https://github.com/neovim/nvim-lspconfig" },
|
||||||
{ src = "https://github.com/sainnhe/everforest" },
|
{ src = "https://github.com/sainnhe/everforest" },
|
||||||
{ src = "https://github.com/nvim-lualine/lualine.nvim" },
|
{ src = "https://github.com/nvim-lualine/lualine.nvim" },
|
||||||
-- currently not working, see https://github.com/laytan/tailwind-sorter.nvim/issues/114
|
{ src = "https://github.com/stevearc/conform.nvim" },
|
||||||
-- { src = "https://github.com/laytan/tailwind-sorter.nvim" },
|
|
||||||
-- { src = "https://github.com/nvim-lua/plenary.nvim" }, -- required by tailwind-sorter
|
|
||||||
|
|
||||||
-- autoclosing tags
|
-- autoclosing tags
|
||||||
{ src = "https://github.com/windwp/nvim-ts-autotag" },
|
{ src = "https://github.com/windwp/nvim-ts-autotag" },
|
||||||
{ src = "https://github.com/terrortylor/nvim-comment" },
|
{ src = "https://github.com/terrortylor/nvim-comment" },
|
||||||
-- required by nvim-comment
|
-- required by nvim-comment
|
||||||
{ src = "https://github.com/JoosepAlviste/nvim-ts-context-commentstring" },
|
{ src = "https://github.com/JoosepAlviste/nvim-ts-context-commentstring" },
|
||||||
|
|
||||||
|
-- java support
|
||||||
|
{ src = "https://github.com/mfussenegger/nvim-jdtls" },
|
||||||
|
|
||||||
|
{ src = "https://github.com/folke/which-key.nvim" },
|
||||||
})
|
})
|
||||||
|
|
||||||
require('nvim_comment').setup({
|
require('nvim_comment').setup({
|
||||||
@@ -64,12 +67,39 @@ require('mini.icons').setup()
|
|||||||
|
|
||||||
require('oil').setup({
|
require('oil').setup({
|
||||||
view_options = {
|
view_options = {
|
||||||
show_hidden = true,
|
show_hidden = false,
|
||||||
sort = {
|
sort = {
|
||||||
{ "type", "asc" },
|
{ "type", "asc" },
|
||||||
{ "name", "asc" },
|
{ "name", "asc" },
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
keymaps = {
|
||||||
|
["<leader>o"] = {
|
||||||
|
desc = "Recursively Open directores",
|
||||||
|
callback = function()
|
||||||
|
local oil = require("oil")
|
||||||
|
local dir = oil.get_current_dir()
|
||||||
|
local cursor = oil.get_cursor_entry()
|
||||||
|
|
||||||
|
local function openRecursively()
|
||||||
|
oil.open(dir .. cursor.name)
|
||||||
|
vim.wait(50)
|
||||||
|
|
||||||
|
dir = oil.get_current_dir()
|
||||||
|
cursor = oil.get_cursor_entry()
|
||||||
|
|
||||||
|
local bn = vim.fn.bufnr()
|
||||||
|
local lines = vim.api.nvim_buf_line_count(bn)
|
||||||
|
|
||||||
|
if lines == 1 and cursor ~= nil and cursor.type == "directory" then
|
||||||
|
openRecursively()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
openRecursively()
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
vim.api.nvim_create_autocmd('LspAttach', {
|
vim.api.nvim_create_autocmd('LspAttach', {
|
||||||
@@ -118,7 +148,42 @@ vim.lsp.config('lua_ls', {
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
vim.lsp.enable({ "lua_ls", "gopls", "templ", "tailwindcss" })
|
vim.lsp.config('jdtls', {
|
||||||
|
cmd = { "jdtls", "--jvm-arg=-javaagent:/usr/share/java/lombok/lombok.jar" },
|
||||||
|
settings = {
|
||||||
|
java = {
|
||||||
|
completion = {
|
||||||
|
favoriteStaticMembers = {
|
||||||
|
"org.assertj.core.api.Assertions.*",
|
||||||
|
"org.assertj.core.api.BDDAssertions.*",
|
||||||
|
"org.mockito.Mockito.*",
|
||||||
|
"org.mockito.ArgumentMatchers.*",
|
||||||
|
"org.mockito.BDDMockito.*",
|
||||||
|
"org.hamcrest.MatcherAssert.*",
|
||||||
|
"org.hamcrest.Matchers.*",
|
||||||
|
"java.util.Collections.*",
|
||||||
|
"java.util.Comparator.*",
|
||||||
|
"java.util.stream.Collectors.*",
|
||||||
|
"java.util.Arrays.*",
|
||||||
|
"java.lang.Math.*",
|
||||||
|
"org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*",
|
||||||
|
"org.springframework.test.web.servlet.result.MockMvcResultMatchers.*",
|
||||||
|
"org.springframework.test.web.servlet.setup.MockMvcBuilders.*",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
vim.lsp.enable({
|
||||||
|
"lua_ls",
|
||||||
|
"gopls",
|
||||||
|
"templ",
|
||||||
|
"ts_ls",
|
||||||
|
"tailwindcss",
|
||||||
|
"bashls",
|
||||||
|
"jdtls",
|
||||||
|
})
|
||||||
|
|
||||||
-- Enables filtered completions for tailwindcss class names, e.g. "mt-<C-n>".
|
-- Enables filtered completions for tailwindcss class names, e.g. "mt-<C-n>".
|
||||||
-- Otherwise the completion contains EVERYTHING
|
-- Otherwise the completion contains EVERYTHING
|
||||||
@@ -140,6 +205,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 = '*',
|
||||||
@@ -148,41 +268,74 @@ vim.api.nvim_create_autocmd('TextYankPost', {
|
|||||||
end,
|
end,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
require("conform").setup({
|
||||||
|
formatters_by_ft = {
|
||||||
|
html = { "prettier" },
|
||||||
|
svg = { "prettier" },
|
||||||
|
markdown = { "mdformat" },
|
||||||
|
},
|
||||||
|
formatters = {
|
||||||
|
mdformat = {
|
||||||
|
args = { "--wrap", "100", "-" },
|
||||||
|
}
|
||||||
|
},
|
||||||
|
default_format_opts = {
|
||||||
|
lsp_format = "fallback",
|
||||||
|
},
|
||||||
|
})
|
||||||
vim.api.nvim_create_autocmd('BufWritePre', {
|
vim.api.nvim_create_autocmd('BufWritePre', {
|
||||||
desc = 'Atuformat code on save',
|
desc = 'Autoformat code on save',
|
||||||
pattern = '*',
|
pattern = '*',
|
||||||
callback = function()
|
callback = function(args)
|
||||||
vim.lsp.buf.format()
|
require("conform").format({ bufnr = args.buf })
|
||||||
end,
|
end,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
-- require('tailwind-sorter').setup({
|
|
||||||
-- on_save_enabled = true,
|
|
||||||
-- on_save_pattern = { '*.html' },
|
|
||||||
-- trim_spaces = false,
|
|
||||||
-- })
|
|
||||||
|
|
||||||
vim.filetype.add({ extension = { templ = "templ" } })
|
vim.filetype.add({ extension = { templ = "templ" } })
|
||||||
|
|
||||||
|
|
||||||
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, {})
|
||||||
vim.keymap.set('n', 'gr', vim.lsp.buf.references, {})
|
vim.keymap.set('n', 'gr', vim.lsp.buf.references, {})
|
||||||
vim.keymap.set('n', '<F2>', 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', '<leader>en', vim.diagnostic.goto_next, {})
|
vim.keymap.set('n', '<F2>', vim.diagnostic.goto_next, {})
|
||||||
vim.keymap.set('n', '<leader>ep', vim.diagnostic.goto_prev, {})
|
|
||||||
|
|
||||||
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, { 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" }, "<leader>?", function() require("which-key").show({ global = false }) end,
|
||||||
|
{ desc = "Buffer Local Keymaps (which-key)" })
|
||||||
|
|
||||||
|
|
||||||
|
-- TODO: Snippets like new java class
|
||||||
|
|||||||
68
nvim-pack-lock.json
Normal file
68
nvim-pack-lock.json
Normal file
@@ -0,0 +1,68 @@
|
|||||||
|
{
|
||||||
|
"plugins": {
|
||||||
|
"conform.nvim": {
|
||||||
|
"rev": "cde4da5c1083d3527776fee69536107d98dae6c9",
|
||||||
|
"src": "https://github.com/stevearc/conform.nvim"
|
||||||
|
},
|
||||||
|
"everforest": {
|
||||||
|
"rev": "f40c2e6c8784c99c57c79edc94cd180e76450222",
|
||||||
|
"src": "https://github.com/sainnhe/everforest"
|
||||||
|
},
|
||||||
|
"lualine.nvim": {
|
||||||
|
"rev": "a94fc68960665e54408fe37dcf573193c4ce82c9",
|
||||||
|
"src": "https://github.com/nvim-lualine/lualine.nvim"
|
||||||
|
},
|
||||||
|
"mini.icons": {
|
||||||
|
"rev": "b8f6fa6f5a3fd0c56936252edcd691184e5aac0c",
|
||||||
|
"src": "https://github.com/echasnovski/mini.icons"
|
||||||
|
},
|
||||||
|
"mini.pick": {
|
||||||
|
"rev": "c8f4ff0251ccb8c6a993ee0dee4e06d9c21a4b99",
|
||||||
|
"src": "https://github.com/echasnovski/mini.pick"
|
||||||
|
},
|
||||||
|
"nvim-comment": {
|
||||||
|
"rev": "e9ac16ab056695cad6461173693069ec070d2b23",
|
||||||
|
"src": "https://github.com/terrortylor/nvim-comment"
|
||||||
|
},
|
||||||
|
"nvim-jdtls": {
|
||||||
|
"rev": "380ac148f989e1291aac002dc959ecc68c5243d0",
|
||||||
|
"src": "https://github.com/mfussenegger/nvim-jdtls"
|
||||||
|
},
|
||||||
|
"nvim-lspconfig": {
|
||||||
|
"rev": "4d3b3bb8815fbe37bcaf3dbdb12a22382bc11ebe",
|
||||||
|
"src": "https://github.com/neovim/nvim-lspconfig"
|
||||||
|
},
|
||||||
|
"nvim-treesitter": {
|
||||||
|
"rev": "42fc28ba918343ebfd5565147a42a26580579482",
|
||||||
|
"src": "https://github.com/nvim-treesitter/nvim-treesitter"
|
||||||
|
},
|
||||||
|
"nvim-ts-autotag": {
|
||||||
|
"rev": "a1d526af391f6aebb25a8795cbc05351ed3620b5",
|
||||||
|
"src": "https://github.com/windwp/nvim-ts-autotag"
|
||||||
|
},
|
||||||
|
"nvim-ts-context-commentstring": {
|
||||||
|
"rev": "1b212c2eee76d787bbea6aa5e92a2b534e7b4f8f",
|
||||||
|
"src": "https://github.com/JoosepAlviste/nvim-ts-context-commentstring"
|
||||||
|
},
|
||||||
|
"oil.nvim": {
|
||||||
|
"rev": "bbad9a76b2617ce1221d49619e4e4b659b3c61fc",
|
||||||
|
"src": "https://github.com/stevearc/oil.nvim"
|
||||||
|
},
|
||||||
|
"plenary.nvim": {
|
||||||
|
"rev": "b9fd5226c2f76c951fc8ed5923d85e4de065e509",
|
||||||
|
"src": "https://github.com/nvim-lua/plenary.nvim"
|
||||||
|
},
|
||||||
|
"smear-cursor.nvim": {
|
||||||
|
"rev": "abfa5835920b1d76c0e24e1465a618ad914be90a",
|
||||||
|
"src": "https://github.com/sphamba/smear-cursor.nvim"
|
||||||
|
},
|
||||||
|
"tailwind-sorter.nvim": {
|
||||||
|
"rev": "717e5c9761ed8334dadbb9357df7d826aae97b92",
|
||||||
|
"src": "https://github.com/laytan/tailwind-sorter.nvim"
|
||||||
|
},
|
||||||
|
"which-key.nvim": {
|
||||||
|
"rev": "3aab2147e74890957785941f0c1ad87d0a44c15a",
|
||||||
|
"src": "https://github.com/folke/which-key.nvim"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user