Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 33 additions & 0 deletions nvim/ftplugin/java.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
local markers = { '.git', 'mvnw', 'gradlew', 'pom.xml', 'build.gradle', 'build.gradle.kts', 'settings.gradle', 'settings.gradle.kts' }
local file_path = vim.api.nvim_buf_get_name(0)
local root_dir = vim.fs.root(0, markers) or vim.fs.dirname(file_path)

if not root_dir then
vim.notify('JDTLS was not started: the current buffer has no file path.', vim.log.levels.WARN)
return
end

local jdtls_cmd = vim.fn.exepath('jdtls')
if jdtls_cmd == '' then
vim.notify('JDTLS was not started: install jdtls and make it available on PATH.', vim.log.levels.WARN)
return
end

local workspace_dir = vim.fn.stdpath('data') .. '/jdtls-workspaces/' .. vim.fn.sha256(root_dir)
vim.fn.mkdir(workspace_dir, 'p')

local handlers = require('user.lsp.handlers')
local config = {
cmd = { jdtls_cmd, '-data', workspace_dir },
root_dir = root_dir,
capabilities = handlers.capabilities,
on_attach = function(client, bufnr)
handlers.on_attach(client, bufnr)
local opts = { buffer = bufnr, silent = true }
vim.keymap.set('n', '<leader>oi', require('jdtls').organize_imports, opts)
end,
init_options = { bundles = {} },
settings = { java = {} },
}

require('jdtls').start_or_attach(config)
8 changes: 7 additions & 1 deletion nvim/lua/user/cmp.lua
Original file line number Diff line number Diff line change
Expand Up @@ -66,13 +66,19 @@ cmp.setup {
end,
},
window = {
documentation = cmp.config.window.bordered()
completion = cmp.config.window.bordered(),
documentation = cmp.config.window.bordered({
max_height = 10,
max_width = 80,
}),
},
mapping = {
['<C-k>'] = cmp.mapping.select_prev_item(),
['<C-j>'] = cmp.mapping.select_next_item(),
['<C-b>'] = cmp.mapping(cmp.mapping.scroll_docs(-1), { 'i', 'c' }),
['<C-f>'] = cmp.mapping(cmp.mapping.scroll_docs(1), { 'i', 'c' }),
['<C-u>'] = cmp.mapping(cmp.mapping.scroll_docs(-4), { 'i', 'c' }),
['<C-d>'] = cmp.mapping(cmp.mapping.scroll_docs(4), { 'i', 'c' }),
['<C-Space>'] = cmp.mapping(cmp.mapping.complete(), { 'i', 'c' }),
['<C-y>'] = cmp.config.disable, -- Specify `cmp.config.disable` if you want to remove the default `<C-y>` mapping.
['<C-e>'] = cmp.mapping {
Expand Down
2 changes: 1 addition & 1 deletion nvim/lua/user/lsp/handlers.lua
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ local function lsp_keymaps(bufnr)
vim.api.nvim_buf_set_keymap(bufnr, 'n', '<C-k>', "<cmd>lua vim.lsp.buf.signature_help()<CR>", opts)
-- vim.api.nvim_buf_set_keymap(bufnr, 'n', '<leader>rn', '<cmd>lua vim.lsp.buf.rename()<CR>', opts)
vim.api.nvim_buf_set_keymap(bufnr, 'n', 'gr', '<cmd>lua vim.lsp.buf.references()<CR>', opts)
-- vim.api.nvim_buf_set_keymap(bufnr, 'n', '<leader>ca', '<cmd>lua vim.lsp.buf.code_action()<CR>', opts)
vim.api.nvim_buf_set_keymap(bufnr, 'n', '<leader>ca', '<cmd>lua vim.lsp.buf.code_action()<CR>', opts)
-- vim.api.nvim_buf_set_keymap(bufnr, 'n', '<leader>f', '<cmd>lua vim.diagnostic.open_float()<CR>', opts)
vim.api.nvim_buf_set_keymap(bufnr, 'n', '[d', '<cmd>lua vim.diagnostic.goto_prev({ border = "rounded" })<CR>', opts)
vim.api.nvim_buf_set_keymap(bufnr, 'n', ']d', '<cmd>lua vim.diagnostic.goto_next({ border = "rounded" })<CR>', opts)
Expand Down
21 changes: 12 additions & 9 deletions nvim/lua/user/lsp/lsp_installer.lua
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@ local opts = {

-- lua_ls config
lspconfig.lua_ls.setup {
on_attach = opts.on_attach,
capabilities = opts.capabilities,
settings = {
Lua = {
runtime = {
Expand All @@ -41,53 +43,54 @@ lspconfig.lua_ls.setup {
-- python
local pyright_settings = require('user.lsp.settings.pyright').settings
lspconfig.pyright.setup {
attach = opts.on_attach,
on_attach = opts.on_attach,
capabilities = opts.capabilities,
settings = pyright_settings
}

local pylsp_settings = require('user.lsp.settings.pylsp').settings
lspconfig.pylsp.setup {
attach = opts.on_attach,
on_attach = opts.on_attach,
capabilities = opts.capabilities,
settings = pylsp_settings
}

-- json
local jsonls_settings = require('user.lsp.settings.jsonls').settings
lspconfig.jsonls.setup {
attach = opts.on_attach,
on_attach = opts.on_attach,
capabilities = opts.capabilities,
settings = jsonls_settings
}

-- ruby
lspconfig.solargraph.setup {
attach = opts.on_attach,
on_attach = opts.on_attach,
capabilities = opts.capabilities,
}

-- md
lspconfig.marksman.setup {
attach = opts.on_attach,
on_attach = opts.on_attach,
capabilities = opts.capabilities,
}

-- astro
lspconfig.astro.setup({
on_attach = opts.on_attach,
capabilities = require("cmp_nvim_lsp").default_capabilities(),
filetypes = { "astro" },
})

-- ts
lspconfig.ts_ls.setup {
attach = opts.on_attach,
on_attach = opts.on_attach,
capabilities = opts.capabilities,
}

-- eslint
lspconfig.eslint.setup {
attach = opts.on_attach,
on_attach = opts.on_attach,
capabilities = opts.capabilities,
}

Expand All @@ -101,13 +104,13 @@ lspconfig.gopls.setup {

-- css
lspconfig.cssls.setup {
attach = opts.on_attach,
on_attach = opts.on_attach,
capabilities = opts.capabilities,
}

-- bash
lspconfig.bashls.setup {
attach = opts.on_attach,
on_attach = opts.on_attach,
capabilities = opts.capabilities,
}

Expand Down
2 changes: 2 additions & 0 deletions nvim/lua/user/plugins.lua
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,7 @@ return packer.startup(function(use)
-- lsp
use 'neovim/nvim-lspconfig'
use 'williamboman/nvim-lsp-installer'
use 'mfussenegger/nvim-jdtls'
use ({
'nvimdev/lspsaga.nvim',
after = 'nvim-lspconfig',
Expand Down Expand Up @@ -240,6 +241,7 @@ return packer.startup(function(use)
use 'ThePrimeagen/vim-be-good'
use { 'echasnovski/mini.map', branch = 'stable' }
use "sbdchd/neoformat"
use 'stevearc/conform.nvim'

if PACKER_BOOTSTRAP then
require('packer').sync()
Expand Down
24 changes: 24 additions & 0 deletions nvim/lua/user/plugins_configs/conform.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
local ok, conform = pcall(require, 'conform')
if not ok then
return
end

conform.setup {
formatters = {
project_google_java_format = {
command = 'google-java-format',
condition = function()
return vim.fn.executable('google-java-format') == 1
end,
stdin = true,
},
},
formatters_by_ft = {
java = { 'project_google_java_format' },
},
format_on_save = function(bufnr)
if vim.bo[bufnr].filetype == 'java' then
return { timeout_ms = 3000, lsp_format = 'never' }
end
end,
}
2 changes: 1 addition & 1 deletion nvim/lua/user/plugins_configs/init.lua
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
require('user.plugins_configs.bufferline')
require('user.plugins_configs.conform')
require('user.plugins_configs.floaterm')
require('user.plugins_configs.gitsigns')
require('user.plugins_configs.blame')
Expand All @@ -24,4 +25,3 @@ require('user.plugins_configs.ts_autotag')
-- require('user.plugins_configs.solar_client')
-- winbar requires NeoVim nightly, aka 0.9.x
-- require('user.plugins.winbar')

1 change: 1 addition & 0 deletions nvim/lua/user/plugins_configs/treesitter.lua
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ configs.setup {
'ruby',
'python',
'go',
'java',
'sql',
'markdown',
'astro',
Expand Down