local colemak = true local lazypath = vim.fn.stdpath('data') .. '/lazy/lazy.nvim' if not vim.loop.fs_stat(lazypath) then vim.fn.system({ 'git', 'clone', '--filter=blob:none', 'https://github.com/folke/lazy.nvim.git', '--branch=stable', lazypath, }) end vim.opt.rtp:prepend(lazypath) -- Setup lazy.nvim require('lazy').setup({ { 'nvim-java/nvim-java', dir = '/workspaces/nvim-java', config = function() require('java').setup({ jdk = { auto_install = false, }, log = { use_console = false, level = 'debug', }, }) vim.lsp.config('jdtls', { handlers = { ['language/status'] = function(_, data) vim.notify(data.message, vim.log.levels.INFO) end, ['$/progress'] = function(_, data) vim.notify(data.value.message, vim.log.levels.INFO) end, }, }) vim.lsp.enable('jdtls') end, }, { 'ibhagwan/fzf-lua', -- optional for icon support dependencies = { 'nvim-tree/nvim-web-devicons' }, -- or if using mini.icons/mini.nvim -- dependencies = { "nvim-mini/mini.icons" }, ---@module "fzf-lua" ---@type fzf-lua.Config|{} ---@diagnostics disable: missing-fields opts = {}, ---@diagnostics enable: missing-fields }, }) -- Basic settings vim.g.mapleader = ' ' vim.opt.number = true vim.opt.relativenumber = true vim.opt.tabstop = 2 vim.opt.shiftwidth = 2 vim.opt.expandtab = false vim.opt.completeopt = { 'menu', 'menuone', 'noselect' } vim.opt.number = true vim.opt.relativenumber = true local k = vim.keymap.set k('n', '', 'q') if colemak then k('n', '', '') k('n', 'E', 'K') k('n', 'H', 'I') k('n', 'K', 'N') k('n', 'L', 'E') k('n', 'N', 'J') k('n', 'e', '') k('n', 'h', 'i') k('n', 'i', '') k('n', 'j', 'm') k('n', 'k', 'n') k('n', 'l', 'e') k('n', 'm', '') k('n', 'n', '') end vim.api.nvim_create_autocmd('LspAttach', { callback = function(args) vim.lsp.completion.enable(true, args.data.client_id, args.buf, { autotrigger = true }) k('i', '', function() vim.lsp.completion.get() end, { buffer = args.buf }) if colemak then k('i', '', '', { buffer = args.buf }) k('i', '', '', { buffer = args.buf }) end end, }) k('n', ']d', function() vim.diagnostic.jump({ count = 1, float = true }) end, { desc = 'Jump to next diagnostic' }) k('n', '[d', function() vim.diagnostic.jump({ count = -1, float = true }) end, { desc = 'Jump to previous diagnostic' }) k('n', 'ta', vim.lsp.buf.code_action, {}) -- DAP keymaps k('n', 'dd', function() require('dap').toggle_breakpoint() end, { desc = 'Toggle breakpoint' }) k('n', 'dc', function() require('dap').continue() end, { desc = 'Continue' }) k('n', 'dn', function() require('dap').step_over() end, { desc = 'Step over' }) k('n', 'di', function() require('dap').step_into() end, { desc = 'Step into' }) k('n', 'do', function() require('dap').step_out() end, { desc = 'Step out' }) k('n', 'dr', function() require('dap').repl.open() end, { desc = 'Open REPL' }) k('n', 'dl', function() require('dap').run_last() end, { desc = 'Run last' }) k('n', 'dt', function() require('dap').terminate() end, { desc = 'Terminate' }) k('n', 'gd', function() vim.lsp.buf.definition() end, { desc = 'Terminate' }) k('n', 'tt', function() require('fzf-lua').lsp_document_symbols() end) k('n', 'm', "vnewput = execute('messages')") k('n', 'nn', 'JavaRunnerRunMain', { desc = 'Run main' }) k('n', 'ne', 'JavaRunnerStopMain', { desc = 'Stop main' }) k('n', 'nt', 'JavaTestDebugCurrentClass', { desc = 'Debug test' }) k('n', 'ns', 'JavaTestRunCurrentClass', { desc = 'Run test' }) k('t', 'yy', '', { desc = 'Exit terminal mode' }) k('n', '', 'j', { desc = 'Window down' }) k('n', '', 'k', { desc = 'Window up' }) k('n', '', 'h', { desc = 'Window left' }) k('n', '', 'l', { desc = 'Window right' })