From 073aa72a2596e917f30e9288a5eaff2476afa734 Mon Sep 17 00:00:00 2001 From: Snoweuph Date: Wed, 26 Feb 2025 22:26:45 +0100 Subject: [PATCH] Add Java & Some Cleanup --- lua/core/keymap.lua | 5 ++ lua/editor/file_tree.lua | 5 ++ lua/editor/language_server.lua | 10 +++- lua/editor/search.lua | 105 +++++++++++++++++++-------------- lua/toolchain/init.lua | 1 + lua/toolchain/java.lua | 45 ++++++++++++++ 6 files changed, 126 insertions(+), 45 deletions(-) create mode 100644 lua/toolchain/java.lua diff --git a/lua/core/keymap.lua b/lua/core/keymap.lua index c93c0a7..fda71ac 100644 --- a/lua/core/keymap.lua +++ b/lua/core/keymap.lua @@ -99,6 +99,11 @@ K.SEARCH = { shortcut = 'fz', description = 'Fuzzy File', }, + SYMBOLS = { + mode = 'n', + shortcut = 'fs', + description = 'Find Symbols', + }, GLOBAL_FIND_FILE = { mode = 'n', shortcut = 'gff', diff --git a/lua/editor/file_tree.lua b/lua/editor/file_tree.lua index 294c11e..e617986 100644 --- a/lua/editor/file_tree.lua +++ b/lua/editor/file_tree.lua @@ -14,6 +14,8 @@ return { close_if_last_window = false, enable_git_status = true, enable_diagnostics = true, + enable_cursor_hijack = true, + hide_root_node = true, name = { trailing_slash = false, use_git_status_colors = true, @@ -39,7 +41,10 @@ return { }, filesystem = { hijack_netrw_behavior = 'open_default', + group_empty_dirs = true, + scan_mode = 'deep', }, + popup_border_style = 'rounded', -- Keybinding -- window = { mappings = { diff --git a/lua/editor/language_server.lua b/lua/editor/language_server.lua index 5de54d6..29fefd2 100644 --- a/lua/editor/language_server.lua +++ b/lua/editor/language_server.lua @@ -6,7 +6,12 @@ return { 'williamboman/mason.nvim', lazy = false, config = function() - require('mason').setup() + require('mason').setup({ + registries = { + 'github:nvim-java/mason-registry', + 'github:mason-org/mason-registry', + }, + }) end, }, { @@ -23,6 +28,9 @@ return { }, { 'neovim/nvim-lspconfig', + dependencies = { + 'nvim-java/nvim-java', -- Needs To Be Loaded before lspconfig + }, lazy = false, config = function() -- Setup -- diff --git a/lua/editor/search.lua b/lua/editor/search.lua index 9af3b92..8f69fa2 100644 --- a/lua/editor/search.lua +++ b/lua/editor/search.lua @@ -1,52 +1,69 @@ local K = require('core.keymap') return { - 'nvim-telescope/telescope.nvim', - tag = '0.1.5', - dependencies = { - 'nvim-lua/plenary.nvim', - 'nvim-telescope/telescope-ui-select.nvim', - }, - config = function() - -- Setup -- - require('telescope').setup({ - extensions = { - ['ui-select'] = { - require('telescope.themes').get_dropdown({}), + { + 'nvim-telescope/telescope.nvim', + tag = '0.1.5', + dependencies = { + 'nvim-lua/plenary.nvim', + 'nvim-telescope/telescope-ui-select.nvim', + }, + config = function() + -- Setup -- + require('telescope').setup({ + extensions = { + ['ui-select'] = { + require('telescope.themes').get_dropdown({}), + }, }, - }, - }) - require('telescope').load_extension('ui-select') + }) + require('telescope').load_extension('ui-select') - -- Keybinding -- - local function setTelescopeBinding(mapping, method, search_global) - local function binding() - local path = search_global and '~' - or require('neo-tree.sources.manager').get_state( - 'filesystem' - ).path - method({ search_dirs = { path } }) + -- Keybinding -- + local function setTelescopeBinding(mapping, method, search_global) + local function binding() + local path = search_global and '~' + or require('neo-tree.sources.manager').get_state( + 'filesystem' + ).path + method({ search_dirs = { path } }) + end + vim.keymap.set( + mapping.mode, + mapping.shortcut, + binding, + { desc = mapping.description } + ) end - vim.keymap.set( - mapping.mode, - mapping.shortcut, - binding, - { desc = mapping.description } + + local telescope = require('telescope.builtin') + + setTelescopeBinding(K.SEARCH.FIND_FILE, telescope.find_files, false) + setTelescopeBinding(K.SEARCH.FUZZY_FIND, telescope.live_grep, false) + setTelescopeBinding( + K.SEARCH.GLOBAL_FIND_FILE, + telescope.find_files, + true ) - end + setTelescopeBinding( + K.SEARCH.GLOBAL_FUZZY_FIND, + telescope.live_grep, + true + ) + end, + }, + { + 'ibhagwan/fzf-lua', + dependencies = { 'nvim-tree/nvim-web-devicons' }, + config = function() + local fzf = require('fzf-lua') + fzf.setup({}) - local telescope = require('telescope.builtin') - - setTelescopeBinding(K.SEARCH.FIND_FILE, telescope.find_files, false) - setTelescopeBinding(K.SEARCH.FUZZY_FIND, telescope.live_grep, false) - setTelescopeBinding( - K.SEARCH.GLOBAL_FIND_FILE, - telescope.find_files, - true - ) - setTelescopeBinding( - K.SEARCH.GLOBAL_FUZZY_FIND, - telescope.live_grep, - true - ) - end, + vim.keymap.set( + K.SEARCH.SYMBOLS.mode, + K.SEARCH.SYMBOLS.shortcut, + fzf.lsp_live_workspace_symbols, + { desc = K.SEARCH.SYMBOLS.description } + ) + end, + }, } diff --git a/lua/toolchain/init.lua b/lua/toolchain/init.lua index cdcf652..d665491 100644 --- a/lua/toolchain/init.lua +++ b/lua/toolchain/init.lua @@ -135,6 +135,7 @@ function TOOLCHAINS.init() require('toolchain.text').setup() require('toolchain.web').setup() require('toolchain.angular').setup() + require('toolchain.java').setup() end return TOOLCHAINS diff --git a/lua/toolchain/java.lua b/lua/toolchain/java.lua new file mode 100644 index 0000000..4b2b572 --- /dev/null +++ b/lua/toolchain/java.lua @@ -0,0 +1,45 @@ +local T = require('toolchain') +local M = {} + +function M.setup() + T.add_highlighter_autoinstalls('java', 'kotlin') + T.add_lsps(function(lspconfig, capabilities) + local paths = vim.fn.systemlist( + "update-alternatives --display java | grep '^/.*$' | cut -d ' ' -f 1" + ) + local runtimes = {} + for _, path in ipairs(paths) do + local version = vim.fn.matchstr(path, '\\v\\d+(\\.\\d+)*') + table.insert(runtimes, { + name = version, + path = path, + }) + end + lspconfig.jdtls.setup({ + capabilities = capabilities, + settings = { + java = { + configuration = { + runtimes = runtimes, + }, + }, + }, + }) + end) + + T.add_plugins({ + 'nvim-java/nvim-java', + config = function() + require('java').setup({ + notifications = { + dap = false, + }, + jdk = { + auto_install = false, + }, + }) + end, + }) +end + +return M