From a687926364cb78d9e05935addfba65b770281a21 Mon Sep 17 00:00:00 2001 From: gidgud Date: Fri, 27 Feb 2026 11:08:08 +0100 Subject: [PATCH] All my updated nvim configs --- ftplugin/java.lua | 69 +++++- init.lua | 612 +++------------------------------------------- 2 files changed, 103 insertions(+), 578 deletions(-) diff --git a/ftplugin/java.lua b/ftplugin/java.lua index e7a89bc0..a7faa296 100644 --- a/ftplugin/java.lua +++ b/ftplugin/java.lua @@ -6,16 +6,13 @@ local status, jdtls = pcall(require, 'jdtls') if not status then return end - -- Add nvim-cmp capabilities local capabilities = vim.lsp.protocol.make_client_capabilities() local cmp_status, cmp_nvim_lsp = pcall(require, 'cmp_nvim_lsp') if cmp_status then capabilities = cmp_nvim_lsp.default_capabilities(capabilities) end - local extendedClientCapabilities = jdtls.extendedClientCapabilities - local config = { cmd = { 'java', @@ -39,7 +36,7 @@ local config = { workspace_dir, }, root_dir = require('jdtls.setup').find_root { '.git', 'mvnw', 'gradlew', 'pom.xml', 'build.gradle' }, - capabilities = capabilities, -- Added this line + capabilities = capabilities, settings = { java = { signatureHelp = { enabled = true }, @@ -55,7 +52,7 @@ local config = { }, inlayHints = { parameterNames = { - enabled = 'all', -- literals, all, none + enabled = 'all', }, }, format = { @@ -67,12 +64,72 @@ local config = { bundles = {}, }, } - require('jdtls').start_or_attach(config) +-- Existing keymaps vim.keymap.set('n', 'co', "lua require'jdtls'.organize_imports()", { desc = 'Organize Imports' }) vim.keymap.set('n', 'crv', "lua require('jdtls').extract_variable()", { desc = 'Extract Variable' }) vim.keymap.set('v', 'crv', "lua require('jdtls').extract_variable(true)", { desc = 'Extract Variable' }) vim.keymap.set('n', 'crc', "lua require('jdtls').extract_constant()", { desc = 'Extract Constant' }) vim.keymap.set('v', 'crc', "lua require('jdtls').extract_constant(true)", { desc = 'Extract Constant' }) vim.keymap.set('v', 'crm', "lua require('jdtls').extract_method(true)", { desc = 'Extract Method' }) + +-- NEW: Generator keymaps for constructors, getters, and setters +-- This opens the selection dialog instead of auto-applying +vim.keymap.set('n', 'cgs', function() + require('jdtls').organize_imports() + vim.lsp.buf.code_action { + filter = function(action) + return string.match(action.title, 'Generate Getters and Setters') + end, + apply = false, -- Changed to false to show picker + } +end, { desc = 'Generate Getters and Setters' }) + +vim.keymap.set('n', 'cgg', function() + vim.lsp.buf.code_action { + filter = function(action) + return string.match(action.title, 'Generate Getter') + end, + apply = false, + } +end, { desc = 'Generate Getter' }) + +vim.keymap.set('n', 'cgS', function() + vim.lsp.buf.code_action { + filter = function(action) + return string.match(action.title, 'Generate Setter') + end, + apply = false, + } +end, { desc = 'Generate Setter' }) + +vim.keymap.set('n', 'cgc', function() + vim.lsp.buf.code_action { + filter = function(action) + return string.match(action.title, 'Generate Constructor') + end, + apply = false, + } +end, { desc = 'Generate Constructor' }) + +vim.keymap.set('n', 'cgt', function() + vim.lsp.buf.code_action { + filter = function(action) + return string.match(action.title, 'Generate toString') + end, + apply = false, + } +end, { desc = 'Generate toString()' }) + +vim.keymap.set('n', 'cgh', function() + vim.lsp.buf.code_action { + filter = function(action) + return string.match(action.title, 'Generate hashCode') + end, + apply = false, + } +end, { desc = 'Generate hashCode() and equals()' }) + +-- Alternative: Use general code action picker for all options +vim.keymap.set('n', 'ca', vim.lsp.buf.code_action, { desc = 'Code Actions' }) diff --git a/init.lua b/init.lua index fe5056d5..fd886ae6 100644 --- a/init.lua +++ b/init.lua @@ -165,8 +165,36 @@ rtp:prepend(lazypath) require('lazy').setup({ -- NOTE: Plugins can be added with a link (or for a github repo: 'owner/repo' link). 'NMAC427/guess-indent.nvim', -- Detect tabstop and shiftwidth automatically + + -- Catpuccin theme { 'catppuccin/nvim', name = 'catppuccin', priority = 1000 }, - -- In your lazy.nvim plugins file (usually ~/.config/nvim/lua/plugins/*.lua) + + -- Github Themes + { + 'projekt0n/github-nvim-theme', + name = 'github-theme', + lazy = false, -- make sure we load this during startup if it is your main colorscheme + priority = 1000, -- make sure to load this before all the other start plugins + config = function() + require('github-theme').setup { + -- ... + } + + vim.cmd 'colorscheme github_dark' + end, + }, + + { + 'nvim-tree/nvim-tree.lua', + version = '*', + lazy = false, + dependencies = { + 'nvim-tree/nvim-web-devicons', + }, + config = function() + require('nvim-tree').setup {} + end, + }, -- Completion engine { @@ -209,572 +237,6 @@ require('lazy').setup({ end, }, - { - 'folke/snacks.nvim', - priority = 1000, - lazy = false, - ---@type snacks.Config - opts = { - bigfile = { enabled = true }, - dashboard = { enabled = true }, - explorer = { enabled = true }, - indent = { enabled = true }, - input = { enabled = true }, - notifier = { - enabled = true, - timeout = 3000, - }, - picker = { enabled = true }, - quickfile = { enabled = true }, - scope = { enabled = true }, - scroll = { enabled = true }, - statuscolumn = { enabled = true }, - words = { enabled = true }, - styles = { - notification = { - -- wo = { wrap = true } -- Wrap notifications - }, - }, - }, - keys = { - -- Top Pickers & Explorer - { - '', - function() - Snacks.picker.smart() - end, - desc = 'Smart Find Files', - }, - { - ',', - function() - Snacks.picker.buffers() - end, - desc = 'Buffers', - }, - { - '/', - function() - Snacks.picker.grep() - end, - desc = 'Grep', - }, - { - ':', - function() - Snacks.picker.command_history() - end, - desc = 'Command History', - }, - { - 'n', - function() - Snacks.picker.notifications() - end, - desc = 'Notification History', - }, - { - 'e', - function() - Snacks.explorer() - end, - desc = 'File Explorer', - }, - -- find - { - 'fb', - function() - Snacks.picker.buffers() - end, - desc = 'Buffers', - }, - { - 'fc', - function() - Snacks.picker.files { cwd = vim.fn.stdpath 'config' } - end, - desc = 'Find Config File', - }, - { - 'ff', - function() - Snacks.picker.files() - end, - desc = 'Find Files', - }, - { - 'fg', - function() - Snacks.picker.git_files() - end, - desc = 'Find Git Files', - }, - { - 'fp', - function() - Snacks.picker.projects() - end, - desc = 'Projects', - }, - { - 'fr', - function() - Snacks.picker.recent() - end, - desc = 'Recent', - }, - -- git - { - 'gb', - function() - Snacks.picker.git_branches() - end, - desc = 'Git Branches', - }, - { - 'gl', - function() - Snacks.picker.git_log() - end, - desc = 'Git Log', - }, - { - 'gL', - function() - Snacks.picker.git_log_line() - end, - desc = 'Git Log Line', - }, - { - 'gs', - function() - Snacks.picker.git_status() - end, - desc = 'Git Status', - }, - { - 'gS', - function() - Snacks.picker.git_stash() - end, - desc = 'Git Stash', - }, - { - 'gd', - function() - Snacks.picker.git_diff() - end, - desc = 'Git Diff (Hunks)', - }, - { - 'gf', - function() - Snacks.picker.git_log_file() - end, - desc = 'Git Log File', - }, - -- Grep - { - 'sb', - function() - Snacks.picker.lines() - end, - desc = 'Buffer Lines', - }, - { - 'sB', - function() - Snacks.picker.grep_buffers() - end, - desc = 'Grep Open Buffers', - }, - { - 'sg', - function() - Snacks.picker.grep() - end, - desc = 'Grep', - }, - { - 'sw', - function() - Snacks.picker.grep_word() - end, - desc = 'Visual selection or word', - mode = { 'n', 'x' }, - }, - -- search - { - 's"', - function() - Snacks.picker.registers() - end, - desc = 'Registers', - }, - { - 's/', - function() - Snacks.picker.search_history() - end, - desc = 'Search History', - }, - { - 'sa', - function() - Snacks.picker.autocmds() - end, - desc = 'Autocmds', - }, - { - 'sb', - function() - Snacks.picker.lines() - end, - desc = 'Buffer Lines', - }, - { - 'sc', - function() - Snacks.picker.command_history() - end, - desc = 'Command History', - }, - { - 'sC', - function() - Snacks.picker.commands() - end, - desc = 'Commands', - }, - { - 'sd', - function() - Snacks.picker.diagnostics() - end, - desc = 'Diagnostics', - }, - { - 'sD', - function() - Snacks.picker.diagnostics_buffer() - end, - desc = 'Buffer Diagnostics', - }, - { - 'sh', - function() - Snacks.picker.help() - end, - desc = 'Help Pages', - }, - { - 'sH', - function() - Snacks.picker.highlights() - end, - desc = 'Highlights', - }, - { - 'si', - function() - Snacks.picker.icons() - end, - desc = 'Icons', - }, - { - 'sj', - function() - Snacks.picker.jumps() - end, - desc = 'Jumps', - }, - { - 'sk', - function() - Snacks.picker.keymaps() - end, - desc = 'Keymaps', - }, - { - 'sl', - function() - Snacks.picker.loclist() - end, - desc = 'Location List', - }, - { - 'sm', - function() - Snacks.picker.marks() - end, - desc = 'Marks', - }, - { - 'sM', - function() - Snacks.picker.man() - end, - desc = 'Man Pages', - }, - { - 'sp', - function() - Snacks.picker.lazy() - end, - desc = 'Search for Plugin Spec', - }, - { - 'sq', - function() - Snacks.picker.qflist() - end, - desc = 'Quickfix List', - }, - { - 'sR', - function() - Snacks.picker.resume() - end, - desc = 'Resume', - }, - { - 'su', - function() - Snacks.picker.undo() - end, - desc = 'Undo History', - }, - { - 'uC', - function() - Snacks.picker.colorschemes() - end, - desc = 'Colorschemes', - }, - -- LSP - { - 'gd', - function() - Snacks.picker.lsp_definitions() - end, - desc = 'Goto Definition', - }, - { - 'gD', - function() - Snacks.picker.lsp_declarations() - end, - desc = 'Goto Declaration', - }, - { - 'gr', - function() - Snacks.picker.lsp_references() - end, - nowait = true, - desc = 'References', - }, - { - 'gI', - function() - Snacks.picker.lsp_implementations() - end, - desc = 'Goto Implementation', - }, - { - 'gy', - function() - Snacks.picker.lsp_type_definitions() - end, - desc = 'Goto T[y]pe Definition', - }, - { - 'gai', - function() - Snacks.picker.lsp_incoming_calls() - end, - desc = 'C[a]lls Incoming', - }, - { - 'gao', - function() - Snacks.picker.lsp_outgoing_calls() - end, - desc = 'C[a]lls Outgoing', - }, - { - 'ss', - function() - Snacks.picker.lsp_symbols() - end, - desc = 'LSP Symbols', - }, - { - 'sS', - function() - Snacks.picker.lsp_workspace_symbols() - end, - desc = 'LSP Workspace Symbols', - }, - -- Other - { - 'z', - function() - Snacks.zen() - end, - desc = 'Toggle Zen Mode', - }, - { - 'Z', - function() - Snacks.zen.zoom() - end, - desc = 'Toggle Zoom', - }, - { - '.', - function() - Snacks.scratch() - end, - desc = 'Toggle Scratch Buffer', - }, - { - 'S', - function() - Snacks.scratch.select() - end, - desc = 'Select Scratch Buffer', - }, - { - 'n', - function() - Snacks.notifier.show_history() - end, - desc = 'Notification History', - }, - { - 'bd', - function() - Snacks.bufdelete() - end, - desc = 'Delete Buffer', - }, - { - 'cR', - function() - Snacks.rename.rename_file() - end, - desc = 'Rename File', - }, - { - 'gB', - function() - Snacks.gitbrowse() - end, - desc = 'Git Browse', - mode = { 'n', 'v' }, - }, - { - 'gg', - function() - Snacks.lazygit() - end, - desc = 'Lazygit', - }, - { - 'un', - function() - Snacks.notifier.hide() - end, - desc = 'Dismiss All Notifications', - }, - { - '', - function() - Snacks.terminal() - end, - desc = 'Toggle Terminal', - }, - { - '', - function() - Snacks.terminal() - end, - desc = 'which_key_ignore', - }, - { - ']]', - function() - Snacks.words.jump(vim.v.count1) - end, - desc = 'Next Reference', - mode = { 'n', 't' }, - }, - { - '[[', - function() - Snacks.words.jump(-vim.v.count1) - end, - desc = 'Prev Reference', - mode = { 'n', 't' }, - }, - { - 'N', - desc = 'Neovim News', - function() - Snacks.win { - file = vim.api.nvim_get_runtime_file('doc/news.txt', false)[1], - width = 0.6, - height = 0.6, - wo = { - spell = false, - wrap = false, - signcolumn = 'yes', - statuscolumn = ' ', - conceallevel = 3, - }, - } - end, - }, - }, - init = function() - vim.api.nvim_create_autocmd('User', { - pattern = 'VeryLazy', - callback = function() - -- Setup some globals for debugging (lazy-loaded) - _G.dd = function(...) - Snacks.debug.inspect(...) - end - _G.bt = function() - Snacks.debug.backtrace() - end - - -- Override print to use snacks for `:=` command - if vim.fn.has 'nvim-0.11' == 1 then - vim._print = function(_, ...) - dd(...) - end - else - vim.print = _G.dd - end - - -- Create some toggle mappings - Snacks.toggle.option('spell', { name = 'Spelling' }):map 'us' - Snacks.toggle.option('wrap', { name = 'Wrap' }):map 'uw' - Snacks.toggle.option('relativenumber', { name = 'Relative Number' }):map 'uL' - Snacks.toggle.diagnostics():map 'ud' - Snacks.toggle.line_number():map 'ul' - Snacks.toggle.option('conceallevel', { off = 0, on = vim.o.conceallevel > 0 and vim.o.conceallevel or 2 }):map 'uc' - Snacks.toggle.treesitter():map 'uT' - Snacks.toggle.option('background', { off = 'light', on = 'dark', name = 'Dark Background' }):map 'ub' - Snacks.toggle.inlay_hints():map 'uh' - Snacks.toggle.indent():map 'ug' - Snacks.toggle.dim():map 'uD' - end, - }) - end, - }, - -- NOTE: Plugins can also be added by using a table, -- with the first argument being the link and the following -- keys can be used to configure plugin behavior/loading/etc. @@ -933,11 +395,17 @@ require('lazy').setup({ -- You can put your default mappings / updates / etc. in here -- All the info you're looking for is in `:help telescope.setup()` -- - -- defaults = { - -- mappings = { - -- i = { [''] = 'to_fuzzy_refine' }, - -- }, - -- }, + defaults = { + file_ignore_patterns = { + 'target/', + '%.class', + 'node_modules/', + '.git/', + }, + mappings = { + i = { [''] = 'to_fuzzy_refine' }, + }, + }, -- pickers = {} extensions = { ['ui-select'] = {