Add java lsp and neogit
This commit is contained in:
parent
c6dbd5bb6f
commit
3fd39057dd
|
@ -0,0 +1,72 @@
|
||||||
|
local home = os.getenv 'HOME'
|
||||||
|
local share = '/AppData/Local/nvim-data'
|
||||||
|
local workspace_path = home .. share .. '/jdtls-workspace/'
|
||||||
|
local project_name = vim.fn.fnamemodify(vim.fn.getcwd(), ':p:h:t')
|
||||||
|
local workspace_dir = workspace_path .. project_name
|
||||||
|
|
||||||
|
local status, jdtls = pcall(require, 'jdtls')
|
||||||
|
if not status then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
local extendedClientCapabilities = jdtls.extendedClientCapabilities
|
||||||
|
|
||||||
|
local config = {
|
||||||
|
cmd = {
|
||||||
|
'java',
|
||||||
|
'-Declipse.application=org.eclipse.jdt.ls.core.id1',
|
||||||
|
'-Dosgi.bundles.defaultStartLevel=4',
|
||||||
|
'-Declipse.product=org.eclipse.jdt.ls.core.product',
|
||||||
|
'-Dlog.protocol=true',
|
||||||
|
'-Dlog.level=ALL',
|
||||||
|
'-Xmx1g',
|
||||||
|
'--add-modules=ALL-SYSTEM',
|
||||||
|
'--add-opens',
|
||||||
|
'java.base/java.util=ALL-UNNAMED',
|
||||||
|
'--add-opens',
|
||||||
|
'java.base/java.lang=ALL-UNNAMED',
|
||||||
|
'-javaagent:' .. home .. share .. '/mason/packages/jdtls/lombok.jar',
|
||||||
|
'-jar',
|
||||||
|
vim.fn.glob(home .. share .. '/mason/packages/jdtls/plugins/org.eclipse.equinox.launcher_*.jar'),
|
||||||
|
'-configuration',
|
||||||
|
home .. share .. '/mason/packages/jdtls/config_win',
|
||||||
|
'-data',
|
||||||
|
workspace_dir,
|
||||||
|
},
|
||||||
|
root_dir = require('jdtls.setup').find_root { '.git', 'mvnw', 'gradlew', 'pom.xml', 'build.gradle' },
|
||||||
|
|
||||||
|
settings = {
|
||||||
|
java = {
|
||||||
|
signatureHelp = { enabled = true },
|
||||||
|
extendedClientCapabilities = extendedClientCapabilities,
|
||||||
|
maven = {
|
||||||
|
downloadSources = true,
|
||||||
|
},
|
||||||
|
referencesCodeLens = {
|
||||||
|
enabled = true,
|
||||||
|
},
|
||||||
|
references = {
|
||||||
|
includeDecompiledSources = true,
|
||||||
|
},
|
||||||
|
inlayHints = {
|
||||||
|
parameterNames = {
|
||||||
|
enabled = 'all', -- literals, all, none
|
||||||
|
},
|
||||||
|
},
|
||||||
|
format = {
|
||||||
|
enabled = false,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
init_options = {
|
||||||
|
bundles = {},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
require('jdtls').start_or_attach(config)
|
||||||
|
|
||||||
|
vim.keymap.set('n', '<leader>co', "<Cmd>lua require'jdtls'.organize_imports()<CR>", { desc = 'Organize Imports' })
|
||||||
|
vim.keymap.set('n', '<leader>crv', "<Cmd>lua require('jdtls').extract_variable()<CR>", { desc = 'Extract Variable' })
|
||||||
|
vim.keymap.set('v', '<leader>crv', "<Esc><Cmd>lua require('jdtls').extract_variable(true)<CR>", { desc = 'Extract Variable' })
|
||||||
|
vim.keymap.set('n', '<leader>crc', "<Cmd>lua require('jdtls').extract_constant()<CR>", { desc = 'Extract Constant' })
|
||||||
|
vim.keymap.set('v', '<leader>crc', "<Esc><Cmd>lua require('jdtls').extract_constant(true)<CR>", { desc = 'Extract Constant' })
|
||||||
|
vim.keymap.set('v', '<leader>crm', "<Esc><Cmd>lua require('jdtls').extract_method(true)<CR>", { desc = 'Extract Method' })
|
6
init.lua
6
init.lua
|
@ -414,6 +414,8 @@ require('lazy').setup({
|
||||||
end,
|
end,
|
||||||
},
|
},
|
||||||
|
|
||||||
|
{ 'mfussenegger/nvim-jdtls' },
|
||||||
|
|
||||||
{ -- LSP Configuration & Plugins
|
{ -- LSP Configuration & Plugins
|
||||||
'neovim/nvim-lspconfig',
|
'neovim/nvim-lspconfig',
|
||||||
dependencies = {
|
dependencies = {
|
||||||
|
@ -841,7 +843,7 @@ require('lazy').setup({
|
||||||
'nvim-treesitter/nvim-treesitter',
|
'nvim-treesitter/nvim-treesitter',
|
||||||
build = ':TSUpdate',
|
build = ':TSUpdate',
|
||||||
opts = {
|
opts = {
|
||||||
ensure_installed = { 'bash', 'c', 'diff', 'html', 'lua', 'luadoc', 'markdown', 'vim', 'vimdoc' },
|
ensure_installed = { 'bash', 'c', 'diff', 'html', 'lua', 'luadoc', 'markdown', 'vim', 'vimdoc', 'java' },
|
||||||
-- Autoinstall languages that are not installed
|
-- Autoinstall languages that are not installed
|
||||||
auto_install = true,
|
auto_install = true,
|
||||||
highlight = {
|
highlight = {
|
||||||
|
@ -891,7 +893,7 @@ require('lazy').setup({
|
||||||
--
|
--
|
||||||
-- Uncomment the following line and add your plugins to `lua/custom/plugins/*.lua` to get going.
|
-- Uncomment the following line and add your plugins to `lua/custom/plugins/*.lua` to get going.
|
||||||
-- For additional information, see `:help lazy.nvim-lazy.nvim-structuring-your-plugins`
|
-- For additional information, see `:help lazy.nvim-lazy.nvim-structuring-your-plugins`
|
||||||
{ import = 'dacekonn.plugins'},
|
{ import = 'dacekonn.plugins' },
|
||||||
}, {
|
}, {
|
||||||
ui = {
|
ui = {
|
||||||
-- If you are using a Nerd Font: set icons to an empty table which will use the
|
-- If you are using a Nerd Font: set icons to an empty table which will use the
|
||||||
|
|
|
@ -0,0 +1,313 @@
|
||||||
|
return {
|
||||||
|
'NeogitOrg/neogit',
|
||||||
|
dependencies = {
|
||||||
|
'nvim-lua/plenary.nvim', -- required
|
||||||
|
'sindrets/diffview.nvim', -- optional - Diff integration
|
||||||
|
|
||||||
|
-- Only one of these is needed, not both.
|
||||||
|
'nvim-telescope/telescope.nvim', -- optional
|
||||||
|
'ibhagwan/fzf-lua', -- optional
|
||||||
|
},
|
||||||
|
config = function()
|
||||||
|
local neogit = require 'neogit'
|
||||||
|
|
||||||
|
neogit.setup {
|
||||||
|
-- Hides the hints at the top of the status buffer
|
||||||
|
disable_hint = false,
|
||||||
|
-- Disables changing the buffer highlights based on where the cursor is.
|
||||||
|
disable_context_highlighting = false,
|
||||||
|
-- Disables signs for sections/items/hunks
|
||||||
|
disable_signs = false,
|
||||||
|
-- Changes what mode the Commit Editor starts in. `true` will leave nvim in normal mode, `false` will change nvim to
|
||||||
|
-- insert mode, and `"auto"` will change nvim to insert mode IF the commit message is empty, otherwise leaving it in
|
||||||
|
-- normal mode.
|
||||||
|
disable_insert_on_commit = 'auto',
|
||||||
|
-- When enabled, will watch the `.git/` directory for changes and refresh the status buffer in response to filesystem
|
||||||
|
-- events.
|
||||||
|
filewatcher = {
|
||||||
|
interval = 1000,
|
||||||
|
enabled = true,
|
||||||
|
},
|
||||||
|
-- "ascii" is the graph the git CLI generates
|
||||||
|
-- "unicode" is the graph like https://github.com/rbong/vim-flog
|
||||||
|
graph_style = 'ascii',
|
||||||
|
-- Used to generate URL's for branch popup action "pull request".
|
||||||
|
git_services = {
|
||||||
|
['github.com'] = 'https://github.com/${owner}/${repository}/compare/${branch_name}?expand=1',
|
||||||
|
['bitbucket.org'] = 'https://bitbucket.org/${owner}/${repository}/pull-requests/new?source=${branch_name}&t=1',
|
||||||
|
['gitlab.com'] = 'https://gitlab.com/${owner}/${repository}/merge_requests/new?merge_request[source_branch]=${branch_name}',
|
||||||
|
['azure.com'] = 'https://dev.azure.com/${owner}/_git/${repository}/pullrequestcreate?sourceRef=${branch_name}&targetRef=${target}',
|
||||||
|
},
|
||||||
|
-- Allows a different telescope sorter. Defaults to 'fuzzy_with_index_bias'. The example below will use the native fzf
|
||||||
|
-- sorter instead. By default, this function returns `nil`.
|
||||||
|
telescope_sorter = function()
|
||||||
|
return require('telescope').extensions.fzf.native_fzf_sorter()
|
||||||
|
end,
|
||||||
|
-- Persist the values of switches/options within and across sessions
|
||||||
|
remember_settings = true,
|
||||||
|
-- Scope persisted settings on a per-project basis
|
||||||
|
use_per_project_settings = true,
|
||||||
|
-- Table of settings to never persist. Uses format "Filetype--cli-value"
|
||||||
|
ignored_settings = {
|
||||||
|
'NeogitPushPopup--force-with-lease',
|
||||||
|
'NeogitPushPopup--force',
|
||||||
|
'NeogitPullPopup--rebase',
|
||||||
|
'NeogitCommitPopup--allow-empty',
|
||||||
|
'NeogitRevertPopup--no-edit',
|
||||||
|
},
|
||||||
|
-- Configure highlight group features
|
||||||
|
highlight = {
|
||||||
|
italic = true,
|
||||||
|
bold = true,
|
||||||
|
underline = true,
|
||||||
|
},
|
||||||
|
-- Set to false if you want to be responsible for creating _ALL_ keymappings
|
||||||
|
use_default_keymaps = true,
|
||||||
|
-- Neogit refreshes its internal state after specific events, which can be expensive depending on the repository size.
|
||||||
|
-- Disabling `auto_refresh` will make it so you have to manually refresh the status after you open it.
|
||||||
|
auto_refresh = true,
|
||||||
|
-- Value used for `--sort` option for `git branch` command
|
||||||
|
-- By default, branches will be sorted by commit date descending
|
||||||
|
-- Flag description: https://git-scm.com/docs/git-branch#Documentation/git-branch.txt---sortltkeygt
|
||||||
|
-- Sorting keys: https://git-scm.com/docs/git-for-each-ref#_options
|
||||||
|
sort_branches = '-committerdate',
|
||||||
|
-- Change the default way of opening neogit
|
||||||
|
kind = 'tab',
|
||||||
|
-- Disable line numbers and relative line numbers
|
||||||
|
disable_line_numbers = true,
|
||||||
|
-- The time after which an output console is shown for slow running commands
|
||||||
|
console_timeout = 2000,
|
||||||
|
-- Automatically show console if a command takes more than console_timeout milliseconds
|
||||||
|
auto_show_console = true,
|
||||||
|
-- Automatically close the console if the process exits with a 0 (success) status
|
||||||
|
auto_close_console = true,
|
||||||
|
status = {
|
||||||
|
show_head_commit_hash = true,
|
||||||
|
recent_commit_count = 10,
|
||||||
|
HEAD_padding = 10,
|
||||||
|
HEAD_folded = false,
|
||||||
|
mode_padding = 3,
|
||||||
|
mode_text = {
|
||||||
|
M = 'modified',
|
||||||
|
N = 'new file',
|
||||||
|
A = 'added',
|
||||||
|
D = 'deleted',
|
||||||
|
C = 'copied',
|
||||||
|
U = 'updated',
|
||||||
|
R = 'renamed',
|
||||||
|
DD = 'unmerged',
|
||||||
|
AU = 'unmerged',
|
||||||
|
UD = 'unmerged',
|
||||||
|
UA = 'unmerged',
|
||||||
|
DU = 'unmerged',
|
||||||
|
AA = 'unmerged',
|
||||||
|
UU = 'unmerged',
|
||||||
|
['?'] = '',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
commit_editor = {
|
||||||
|
kind = 'tab',
|
||||||
|
show_staged_diff = true,
|
||||||
|
-- Accepted values:
|
||||||
|
-- "split" to show the staged diff below the commit editor
|
||||||
|
-- "vsplit" to show it to the right
|
||||||
|
-- "split_above" Like :top split
|
||||||
|
-- "vsplit_left" like :vsplit, but open to the left
|
||||||
|
-- "auto" "vsplit" if window would have 80 cols, otherwise "split"
|
||||||
|
staged_diff_split_kind = 'split',
|
||||||
|
},
|
||||||
|
commit_select_view = {
|
||||||
|
kind = 'tab',
|
||||||
|
},
|
||||||
|
commit_view = {
|
||||||
|
kind = 'vsplit',
|
||||||
|
verify_commit = vim.fn.executable 'gpg' == 1, -- Can be set to true or false, otherwise we try to find the binary
|
||||||
|
},
|
||||||
|
log_view = {
|
||||||
|
kind = 'tab',
|
||||||
|
},
|
||||||
|
rebase_editor = {
|
||||||
|
kind = 'auto',
|
||||||
|
},
|
||||||
|
reflog_view = {
|
||||||
|
kind = 'tab',
|
||||||
|
},
|
||||||
|
merge_editor = {
|
||||||
|
kind = 'auto',
|
||||||
|
},
|
||||||
|
tag_editor = {
|
||||||
|
kind = 'auto',
|
||||||
|
},
|
||||||
|
preview_buffer = {
|
||||||
|
kind = 'split',
|
||||||
|
},
|
||||||
|
popup = {
|
||||||
|
kind = 'split',
|
||||||
|
},
|
||||||
|
signs = {
|
||||||
|
-- { CLOSED, OPENED }
|
||||||
|
hunk = { '', '' },
|
||||||
|
item = { '>', 'v' },
|
||||||
|
section = { '>', 'v' },
|
||||||
|
},
|
||||||
|
-- Each Integration is auto-detected through plugin presence, however, it can be disabled by setting to `false`
|
||||||
|
integrations = {
|
||||||
|
-- If enabled, use telescope for menu selection rather than vim.ui.select.
|
||||||
|
-- Allows multi-select and some things that vim.ui.select doesn't.
|
||||||
|
telescope = nil,
|
||||||
|
-- Neogit only provides inline diffs. If you want a more traditional way to look at diffs, you can use `diffview`.
|
||||||
|
-- The diffview integration enables the diff popup.
|
||||||
|
--
|
||||||
|
-- Requires you to have `sindrets/diffview.nvim` installed.
|
||||||
|
diffview = nil,
|
||||||
|
|
||||||
|
-- If enabled, uses fzf-lua for menu selection. If the telescope integration
|
||||||
|
-- is also selected then telescope is used instead
|
||||||
|
-- Requires you to have `ibhagwan/fzf-lua` installed.
|
||||||
|
fzf_lua = nil,
|
||||||
|
},
|
||||||
|
sections = {
|
||||||
|
-- Reverting/Cherry Picking
|
||||||
|
sequencer = {
|
||||||
|
folded = false,
|
||||||
|
hidden = false,
|
||||||
|
},
|
||||||
|
untracked = {
|
||||||
|
folded = false,
|
||||||
|
hidden = false,
|
||||||
|
},
|
||||||
|
unstaged = {
|
||||||
|
folded = false,
|
||||||
|
hidden = false,
|
||||||
|
},
|
||||||
|
staged = {
|
||||||
|
folded = false,
|
||||||
|
hidden = false,
|
||||||
|
},
|
||||||
|
stashes = {
|
||||||
|
folded = true,
|
||||||
|
hidden = false,
|
||||||
|
},
|
||||||
|
unpulled_upstream = {
|
||||||
|
folded = true,
|
||||||
|
hidden = false,
|
||||||
|
},
|
||||||
|
unmerged_upstream = {
|
||||||
|
folded = false,
|
||||||
|
hidden = false,
|
||||||
|
},
|
||||||
|
unpulled_pushRemote = {
|
||||||
|
folded = true,
|
||||||
|
hidden = false,
|
||||||
|
},
|
||||||
|
unmerged_pushRemote = {
|
||||||
|
folded = false,
|
||||||
|
hidden = false,
|
||||||
|
},
|
||||||
|
recent = {
|
||||||
|
folded = true,
|
||||||
|
hidden = false,
|
||||||
|
},
|
||||||
|
rebase = {
|
||||||
|
folded = true,
|
||||||
|
hidden = false,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
mappings = {
|
||||||
|
commit_editor = {
|
||||||
|
['q'] = 'Close',
|
||||||
|
['<c-c><c-c>'] = 'Submit',
|
||||||
|
['<c-c><c-k>'] = 'Abort',
|
||||||
|
},
|
||||||
|
commit_editor_I = {
|
||||||
|
['<c-c><c-c>'] = 'Submit',
|
||||||
|
['<c-c><c-k>'] = 'Abort',
|
||||||
|
},
|
||||||
|
rebase_editor = {
|
||||||
|
['p'] = 'Pick',
|
||||||
|
['r'] = 'Reword',
|
||||||
|
['e'] = 'Edit',
|
||||||
|
['s'] = 'Squash',
|
||||||
|
['f'] = 'Fixup',
|
||||||
|
['x'] = 'Execute',
|
||||||
|
['d'] = 'Drop',
|
||||||
|
['b'] = 'Break',
|
||||||
|
['q'] = 'Close',
|
||||||
|
['<cr>'] = 'OpenCommit',
|
||||||
|
['gk'] = 'MoveUp',
|
||||||
|
['gj'] = 'MoveDown',
|
||||||
|
['<c-c><c-c>'] = 'Submit',
|
||||||
|
['<c-c><c-k>'] = 'Abort',
|
||||||
|
['[c'] = 'OpenOrScrollUp',
|
||||||
|
[']c'] = 'OpenOrScrollDown',
|
||||||
|
},
|
||||||
|
rebase_editor_I = {
|
||||||
|
['<c-c><c-c>'] = 'Submit',
|
||||||
|
['<c-c><c-k>'] = 'Abort',
|
||||||
|
},
|
||||||
|
finder = {
|
||||||
|
['<cr>'] = 'Select',
|
||||||
|
['<c-c>'] = 'Close',
|
||||||
|
['<esc>'] = 'Close',
|
||||||
|
['<c-n>'] = 'Next',
|
||||||
|
['<c-p>'] = 'Previous',
|
||||||
|
['<down>'] = 'Next',
|
||||||
|
['<up>'] = 'Previous',
|
||||||
|
['<tab>'] = 'MultiselectToggleNext',
|
||||||
|
['<s-tab>'] = 'MultiselectTogglePrevious',
|
||||||
|
['<c-j>'] = 'NOP',
|
||||||
|
},
|
||||||
|
-- Setting any of these to `false` will disable the mapping.
|
||||||
|
popup = {
|
||||||
|
['?'] = 'HelpPopup',
|
||||||
|
['A'] = 'CherryPickPopup',
|
||||||
|
['D'] = 'DiffPopup',
|
||||||
|
['M'] = 'RemotePopup',
|
||||||
|
['P'] = 'PushPopup',
|
||||||
|
['X'] = 'ResetPopup',
|
||||||
|
['Z'] = 'StashPopup',
|
||||||
|
['b'] = 'BranchPopup',
|
||||||
|
['B'] = 'BisectPopup',
|
||||||
|
['c'] = 'CommitPopup',
|
||||||
|
['f'] = 'FetchPopup',
|
||||||
|
['l'] = 'LogPopup',
|
||||||
|
['m'] = 'MergePopup',
|
||||||
|
['p'] = 'PullPopup',
|
||||||
|
['r'] = 'RebasePopup',
|
||||||
|
['v'] = 'RevertPopup',
|
||||||
|
['w'] = 'WorktreePopup',
|
||||||
|
},
|
||||||
|
status = {
|
||||||
|
['k'] = 'MoveUp',
|
||||||
|
['j'] = 'MoveDown',
|
||||||
|
['q'] = 'Close',
|
||||||
|
['o'] = 'OpenTree',
|
||||||
|
['I'] = 'InitRepo',
|
||||||
|
['1'] = 'Depth1',
|
||||||
|
['2'] = 'Depth2',
|
||||||
|
['3'] = 'Depth3',
|
||||||
|
['4'] = 'Depth4',
|
||||||
|
['<tab>'] = 'Toggle',
|
||||||
|
['x'] = 'Discard',
|
||||||
|
['s'] = 'Stage',
|
||||||
|
['S'] = 'StageUnstaged',
|
||||||
|
['<c-s>'] = 'StageAll',
|
||||||
|
['K'] = 'Untrack',
|
||||||
|
['u'] = 'Unstage',
|
||||||
|
['U'] = 'UnstageStaged',
|
||||||
|
['$'] = 'CommandHistory',
|
||||||
|
['Y'] = 'YankSelected',
|
||||||
|
['<c-r>'] = 'RefreshBuffer',
|
||||||
|
['<enter>'] = 'GoToFile',
|
||||||
|
['<c-v>'] = 'VSplitOpen',
|
||||||
|
['<c-x>'] = 'SplitOpen',
|
||||||
|
['<c-t>'] = 'TabOpen',
|
||||||
|
['{'] = 'GoToPreviousHunkHeader',
|
||||||
|
['}'] = 'GoToNextHunkHeader',
|
||||||
|
['[c'] = 'OpenOrScrollUp',
|
||||||
|
[']c'] = 'OpenOrScrollDown',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
end,
|
||||||
|
}
|
Loading…
Reference in New Issue