1
0
Fork 0

Compare commits

...

4 commits

28 changed files with 476 additions and 626 deletions

5
nvim/init.lua Normal file
View file

@ -0,0 +1,5 @@
require('user.plugins')
require('user.options')
require('user.lsp')
require('user.dap')
require('user.bindings')

View file

@ -1,55 +0,0 @@
filetype plugin on
syntax on
set number
set nowrap
set wildmode=longest,list
set colorcolumn=120
let $NVIM_TUI_ENABLE_TRUE_COLOR=1
let g:gruvbox_contrast_dark='hard'
let g:gruvbox_hls_cursor='red'
set tabpagemax=500
" Indentation
set smartindent
set tabstop=4
set softtabstop=4
set shiftwidth=4
set expandtab
set cursorcolumn
set cursorline
" Search
set incsearch
set hlsearch
set ignorecase
set smartcase
" Whitespaces
set listchars=tab:>-,trail
set list
" Terminal mode
:tnoremap <Esc> <C-\><C-n>
" File handling
set hidden
" Custom shortcuts
map gb :bn<cr>
map gB :bp<cr>
map g# :b#<cr>
" Close the completion preview window (docstring) automatically
autocmd CompleteDone * pclose
" LSP config
lua <<EOF
require("config.lazy")
vim.o.scrolloff = 4;
vim.diagnostic.config({
virtual_text = true,
severity_sort = true,
})
EOF

View file

@ -1,35 +0,0 @@
-- Bootstrap lazy.nvim
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
if not (vim.uv or vim.loop).fs_stat(lazypath) then
local lazyrepo = "https://github.com/folke/lazy.nvim.git"
local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath })
if vim.v.shell_error ~= 0 then
vim.api.nvim_echo({
{ "Failed to clone lazy.nvim:\n", "ErrorMsg" },
{ out, "WarningMsg" },
{ "\nPress any key to exit..." },
}, true, {})
vim.fn.getchar()
os.exit(1)
end
end
vim.opt.rtp:prepend(lazypath)
-- Make sure to setup `mapleader` and `maplocalleader` before
-- loading lazy.nvim so that mappings are correct.
-- This is also a good place to setup other settings (vim.opt)
vim.g.mapleader = " "
vim.g.maplocalleader = "\\"
-- Setup lazy.nvim
require("lazy").setup({
spec = {
-- import your plugins
{ import = "plugins" },
},
-- Configure any other settings here. See the documentation for more details.
-- colorscheme that will be used when installing plugins.
install = { colorscheme = { "habamax" } },
-- automatically check for plugin updates
checker = { enabled = false },
})

View file

@ -1,33 +1,22 @@
return {
"hrsh7th/nvim-cmp",
lazy = true,
event = "InsertEnter",
dependencies = {
"hrsh7th/cmp-buffer",
"hrsh7th/cmp-path",
},
config = function()
local cmp = require("cmp")
vim.pack.add({
gh("hrsh7th/nvim-cmp"),
gh("hrsh7th/cmp-nvim-lsp"),
gh("hrsh7th/cmp-buffer"),
gh("hrsh7th/cmp-path"),
})
cmp.setup({
mapping = cmp.mapping.preset.insert({
["<C-d>"] = cmp.mapping.scroll_docs(-4),
["<C-f>"] = cmp.mapping.scroll_docs(4),
["<C-Space>"] = cmp.mapping.complete(),
["<C-e>"] = cmp.mapping.close(),
-- Accept currently selected item. Set `select` to `false` to only confirm explicitly selected items.
['<CR>'] = cmp.mapping.confirm({ select = false }),
}),
sources = cmp.config.sources({
{ name = "nvim_lsp" },
{ name = "buffer" },
{ name = "path" },
}),
})
vim.cmd([[
set completeopt=menuone,noinsert,noselect
highlight! default link CmpItemKind CmpItemMenuDefault
]])
end,
}
local cmp = require("cmp")
cmp.setup({
mapping = cmp.mapping.preset.insert({
["<C-d>"] = cmp.mapping.scroll_docs(-4),
["<C-f>"] = cmp.mapping.scroll_docs(4),
["<C-Space>"] = cmp.mapping.complete(),
["<C-e>"] = cmp.mapping.close(),
['<CR>'] = cmp.mapping.confirm({ select = false }),
}),
sources = cmp.config.sources({
{ name = "nvim_lsp" },
{ name = "buffer" },
{ name = "path" },
}),
})

View file

@ -1,14 +0,0 @@
return {
{
"ellisonleao/gruvbox.nvim",
priority = 1000 ,
config = true,
init = function()
require("gruvbox").setup({
contrast = "hard",
hls_cursor = "red",
})
vim.cmd("colorscheme gruvbox")
end
}
}

View file

@ -1,11 +1,5 @@
return {
"leoluz/nvim-dap-go",
dependencies = {
"https://codeberg.org/mfussenegger/nvim-dap",
},
lazy = true,
ft = { "go" },
config = function()
require('dap-go').setup()
end,
}
vim.pack.add({
gh("leoluz/nvim-dap-go"),
})
require('dap-go').setup()

View file

@ -1,31 +0,0 @@
return {
"rcarriga/nvim-dap-ui",
dependencies = {
"nvim-neotest/nvim-nio",
{
"theHamsta/nvim-dap-virtual-text",
opts = {},
},
},
lazy = true,
ft = { "java", "go", "python" },
keys = {
{ "<leader>du", function() require("dapui").toggle({ }) end, desc = "Dap UI" },
{ "<leader>de", function() require("dapui").eval() end, desc = "Eval", mode = {"n", "v"} },
},
opts = {},
config = function(_, opts)
local dap = require("dap")
local dapui = require("dapui")
dapui.setup(opts)
dap.listeners.after.event_initialized["dapui_config"] = function()
dapui.open({})
end
dap.listeners.before.event_terminated["dapui_config"] = function()
dapui.close({})
end
dap.listeners.before.event_exited["dapui_config"] = function()
dapui.close({})
end
end,
}

View file

@ -1,37 +1,20 @@
return {
"https://codeberg.org/mfussenegger/nvim-dap",
lazy = true,
ft = { "java", "go", "python" },
dependencies = {
"rcarriga/nvim-dap-ui",
{
"theHamsta/nvim-dap-virtual-text",
opts = {},
},
},
keys = {
{ "<F11>", function() require("dap").continue() end, desc = "Continue" },
{ "<F6>", function() require("dap").step_over() end, desc = "Step over" },
{ "<F5>", function() require("dap").step_into() end, desc = "Step into" },
{ "<F12>", function() require("dap").step_out() end, desc = "Step out" },
{ "<space>b", function() require("dap").toggle_breakpoint() end, desc = "Toggle " },
{ "<leader>d", "", desc = "+debug", mode = {"n", "v"} },
{ "<leader>dB", function() require("dap").set_breakpoint(vim.fn.input('Breakpoint condition: ')) end, desc = "Breakpoint Condition" },
{ "<leader>db", function() require("dap").toggle_breakpoint() end, desc = "Toggle Breakpoint" },
{ "<leader>dc", function() require("dap").continue() end, desc = "Continue" },
{ "<leader>da", function() require("dap").continue({ before = get_args }) end, desc = "Run with Args" },
{ "<leader>dC", function() require("dap").run_to_cursor() end, desc = "Run to Cursor" },
{ "<leader>dg", function() require("dap").goto_() end, desc = "Go to Line (No Execute)" },
{ "<leader>di", function() require("dap").step_into() end, desc = "Step Into" },
{ "<leader>dj", function() require("dap").down() end, desc = "Down" },
{ "<leader>dk", function() require("dap").up() end, desc = "Up" },
{ "<leader>dl", function() require("dap").run_last() end, desc = "Run Last" },
{ "<leader>do", function() require("dap").step_out() end, desc = "Step Out" },
{ "<leader>dO", function() require("dap").step_over() end, desc = "Step Over" },
{ "<leader>dp", function() require("dap").pause() end, desc = "Pause" },
{ "<leader>dr", function() require("dap").repl.toggle() end, desc = "Toggle REPL" },
{ "<leader>ds", function() require("dap").session() end, desc = "Session" },
{ "<leader>dt", function() require("dap").terminate() end, desc = "Terminate" },
{ "<leader>dw", function() require("dap.ui.widgets").hover() end, desc = "Widgets" },
},
}
vim.pack.add({
cb("mfussenegger/nvim-dap"),
gh("rcarriga/nvim-dap-ui"),
gh("theHamsta/nvim-dap-virtual-text"),
gh("rcarriga/nvim-dap-ui"),
gh("nvim-neotest/nvim-nio"),
})
local dap = require("dap")
local dapui = require("dapui")
dapui.setup(opts)
dap.listeners.after.event_initialized["dapui_config"] = function()
dapui.open({})
end
dap.listeners.before.event_terminated["dapui_config"] = function()
dapui.close({})
end
dap.listeners.before.event_exited["dapui_config"] = function()
dapui.close({})
end

View file

@ -1,6 +1,5 @@
return {
"lewis6991/gitsigns.nvim",
config = function()
require("gitsigns").setup()
end
}
vim.pack.add({
gh("lewis6991/gitsigns.nvim"),
})
require("gitsigns").setup()

View file

@ -0,0 +1,8 @@
vim.pack.add({
gh("ellisonleao/gruvbox.nvim"),
})
require("gruvbox").setup({
contrast = "hard",
hls_cursor = "red",
})

View file

@ -1,27 +1,3 @@
return {
"https://codeberg.org/mfussenegger/nvim-jdtls",
lazy = true,
ft = { "java" },
config = function()
local dap = require('dap')
dap.configurations.java = {{
type = 'java',
request = 'attach',
name = 'Debug (Attach) port 5005',
hostName = '127.0.0.1',
port = 5005,
},{
type = 'java',
request = 'attach',
name = 'Debug (Attach) port 5006',
hostName = '127.0.0.1',
port = 5006,
},{
type = 'java',
request = 'attach',
name = 'Debug (Attach) port 5105',
hostName = '127.0.0.1',
port = 5105,
}}
end,
}
vim.pack.add({
cb("mfussenegger/nvim-jdtls"),
})

View file

@ -1,127 +1,3 @@
return {
"neovim/nvim-lspconfig",
event = { "BufReadPre", "BufNewFile" },
dependencies = {
"hrsh7th/cmp-nvim-lsp",
},
keys = {
{ "<space>e", vim.diagnostic.open_float },
{ "[d", vim.diagnostic.goto_prev },
{ "]d", vim.diagnostic.goto_next },
{ "<space>q", vim.diagnostic.setloclist },
{ "gD", vim.lsp.buf.declaration },
{ "gd", vim.lsp.buf.definition },
{ "K", vim.lsp.buf.hover },
{ "gi", vim.lsp.buf.implementation },
{ "<C-k>", vim.lsp.buf.signature_help },
{ "<space>D", vim.lsp.buf.type_definition },
{ "<space>rn", vim.lsp.buf.rename },
{ "<space>ca", vim.lsp.buf.code_action },
{ "gr", vim.lsp.buf.references },
{
"<space>f",
function()
vim.lsp.buf.format { async = true }
end
},
},
config = function()
local on_attach = function(client, bufnr)
-- Format on save
if client.server_capabilities.documentFormattingProvider then
vim.api.nvim_create_autocmd("BufWritePre", {
group = vim.api.nvim_create_augroup("Format", { clear = true }),
buffer = bufnr,
callback = function()
vim.lsp.buf.format()
end,
})
end
end
-- Typos
vim.lsp.config("typos_lsp", {
settings = {
filetypes = {
'java',
'go'
},
},
init_options = {
diagnosticSeverity = "Hint",
}
})
-- HTML
vim.lsp.enable('html')
-- CSS
vim.lsp.enable('cssls')
-- JSON
vim.lsp.enable('jsonls')
-- Python
vim.lsp.enable('pylsp')
-- Go
vim.lsp.config("gopls", {
settings = {
gopls = {
gofumpt = true,
staticcheck = true,
analyses = {
unusedparams = true,
unusedresult = true,
unusedwrite = true,
unusedvariable = true,
useany = true,
fieldalignment = false,
nilness = true,
shadow = true,
},
hints = {
assignVariableTypes = true,
compositeLiteralFields = true,
compositeLiteralTypes = true,
constantValues = true,
functionTypeParameters = true,
parameterNames = true,
rangeVariableTypes = true,
},
codelenses = {
gc_details = true,
generate = true,
regenerate_cgo = true,
tidy = true,
upgrade_dependency = true,
vendor = true,
},
},
},
})
-- Organize imports and format code on save
vim.api.nvim_create_autocmd({"BufWritePre"}, {
pattern = "*.go",
callback = function()
local params = vim.lsp.util.make_range_params()
params.context = {only = {"source.organizeImports"}}
local result = vim.lsp.buf_request_sync(0, "textDocument/codeAction", params)
for cid, res in pairs(result or {}) do
for _, r in pairs(res.result or {}) do
if r.edit then
local enc = (vim.lsp.get_client_by_id(cid) or {}).offset_encoding or "utf-16"
vim.lsp.util.apply_workspace_edit(r.edit, enc)
end
end
end
vim.lsp.buf.format({async = false})
end
})
vim.lsp.enable('gopls')
-- PHP
vim.lsp.enable('phpactor')
end,
}
vim.pack.add({
gh("neovim/nvim-lspconfig"),
})

View file

@ -1,7 +1,5 @@
return {
"nvim-lualine/lualine.nvim",
dependencies = { "nvim-tree/nvim-web-devicons" },
config = function()
require("lualine").setup()
end,
}
vim.pack.add({
gh("nvim-lualine/lualine.nvim"),
})
require("lualine").setup()

View file

@ -1,21 +0,0 @@
return {
"nvim-neo-tree/neo-tree.nvim",
branch = "v3.x",
dependencies = {
"nvim-lua/plenary.nvim",
"nvim-tree/nvim-web-devicons",
"MunifTanjim/nui.nvim",
},
keys = {
{ "<leader>tt", "<cmd>Neotree toggle<cr>", desc = "NeoTree toggle" },
{ "<leader>tr", "<cmd>Neotree reveal<cr>", desc = "NeoTree reveal" },
},
config = function()
require("neo-tree").setup({
window = {
position = "left",
width = 50,
},
})
end
}

View file

@ -0,0 +1,16 @@
vim.pack.add({
{
src = gh("nvim-neo-tree/neo-tree.nvim"),
version = vim.version.range("3")
},
gh("nvim-lua/plenary.nvim"),
gh("MunifTanjim/nui.nvim"),
gh("nvim-tree/nvim-web-devicons"),
})
require("neo-tree").setup({
window = {
position = "left",
width = 50,
},
})

View file

@ -1,38 +1,33 @@
return {
{
url = "https://gitlab.com/schrieveslaach/sonarlint.nvim",
lazy = true,
ft = {"java", "go", "html", "python", "php"},
config = function()
require('sonarlint').setup({
server = {
cmd = {
'sonarlint-ls',
'-stdio',
'-analyzers',
"/usr/share/java/sonarlint-ls/analyzers/sonarjava.jar",
"/usr/share/java/sonarlint-ls/analyzers/sonargo.jar",
"/usr/share/java/sonarlint-ls/analyzers/sonarhtml.jar",
"/usr/share/java/sonarlint-ls/analyzers/sonarpython.jar",
"/usr/share/java/sonarlint-ls/analyzers/sonarphp.jar",
},
settings = {
sonarlint = {
test = "test",
disableTelemetry = true,
focusOnNewCode = true,
showAnalyzerLogs = true,
},
},
},
filetypes = {
'java',
'go',
'html',
'python',
"php"
},
})
end
}
}
vim.pack.add({
gl("schrieveslaach/sonarlint.nvim"),
})
require('sonarlint').setup({
server = {
cmd = {
'sonarlint-ls',
'-stdio',
'-analyzers',
"/usr/share/java/sonarlint-ls/analyzers/sonarjava.jar",
"/usr/share/java/sonarlint-ls/analyzers/sonargo.jar",
"/usr/share/java/sonarlint-ls/analyzers/sonarhtml.jar",
"/usr/share/java/sonarlint-ls/analyzers/sonarpython.jar",
"/usr/share/java/sonarlint-ls/analyzers/sonarphp.jar",
},
settings = {
sonarlint = {
test = "test",
disableTelemetry = true,
focusOnNewCode = true,
showAnalyzerLogs = true,
},
},
},
filetypes = {
'java',
'go',
'html',
'python',
"php"
},
})

View file

@ -1,26 +1,12 @@
return {
'nvim-telescope/telescope.nvim',
branch = '0.1.x',
lazy = false,
dependencies = {
'nvim-lua/plenary.nvim',
'nvim-telescope/telescope-ui-select.nvim',
},
keys = {
{ "<C-p>", "<cmd>Telescope<cr>" },
{ "<C-b>", "<cmd>Telescope buffers<cr>", desc = "Find luffers" },
{ "<A-r>", "<cmd>Telescope git_files<CR>", desc = "Find files" },
{ "<C-l>", "<cmd>Telescope lsp_document_symbols<CR>", desc = "Find symbols" },
{ "<C-d>", "<cmd>lua require('telescope.builtin').diagnostics({severity_limit='WARN'})<CR>", desc = "Show errors and warnings" },
},
config = function()
local t = require("telescope")
t.setup({
defaults = {
preview = false,
},
})
vim.pack.add({
gh('nvim-telescope/telescope.nvim'),
gh('nvim-telescope/telescope-ui-select.nvim'),
gh("nvim-lua/plenary.nvim"),
})
t.load_extension("ui-select")
end
}
require("telescope").setup({
defaults = {
preview = false,
},
})
require("telescope").load_extension("ui-select")

View file

@ -1,8 +1,6 @@
return {
"folke/todo-comments.nvim",
dependencies = {
"nvim-lua/plenary.nvim",
},
opts = {
},
}
vim.pack.add({
gh("folke/todo-comments.nvim"),
gh("nvim-lua/plenary.nvim"),
})
require("todo-comments").setup()

View file

@ -1,57 +1,75 @@
return {
"nvim-treesitter/nvim-treesitter",
event = {
"BufReadPre",
"BufNewFile",
},
build = ":TSUpdate",
config = function()
local treesitter = require("nvim-treesitter.configs")
vim.pack.add({
gh("neovim-treesitter/nvim-treesitter"),
})
treesitter.setup({
highlight = {
enable = true,
additional_vim_regex_highlighting = false,
},
indent = {
enable = true
},
autotag = {
enable = true,
},
ensure_installed = {
"json",
"javascript",
"yaml",
"html",
"css",
"markdown",
"markdown_inline",
"bash",
"lua",
"vim",
"gitignore",
"go",
},
incremental_selection = {
enable = true,
keymaps = {
init_selection = "<C-space>",
node_incremental = "<C-space>",
scope_incremental = false,
node_decremental = "<bs>",
},
},
rainbow = {
enable = true,
disable = { "html" },
extended_mode = false,
max_file_lines = nil,
},
context_commentstring = {
enable = true,
enable_autocmd = false,
},
})
end,
--require("nvim-treesitter.configs").setup({
-- highlight = {
-- enable = true,
-- additional_vim_regex_highlighting = false,
-- },
-- indent = {
-- enable = true
-- },
-- autotag = {
-- enable = true,
-- },
-- ensure_installed = {
-- "json",
-- "javascript",
-- "yaml",
-- "html",
-- "http",
-- "css",
-- "markdown",
-- "markdown_inline",
-- "bash",
-- "lua",
-- "vim",
-- "gitignore",
-- "go",
-- },
-- incremental_selection = {
-- enable = true,
-- keymaps = {
-- init_selection = "<C-space>",
-- node_incremental = "<C-space>",
-- scope_incremental = false,
-- node_decremental = "<bs>",
-- },
-- },
-- rainbow = {
-- enable = true,
-- disable = { "html" },
-- extended_mode = false,
-- max_file_lines = nil,
-- },
-- context_commentstring = {
-- enable = true,
-- enable_autocmd = false,
-- },
--})
require("nvim-treesitter").install {
"fish",
"lua",
"gitcommit",
"gitignore",
"http",
"html",
"css",
"javascript",
"json",
"yaml",
"markdown",
"markdown_inline",
"go",
}
vim.api.nvim_create_autocmd("FileType", {
pattern = { "http", "html", "go" },
callback = function()
vim.treesitter.start()
--vim.wo.foldexpr = "v:lua.vim.treesitter.foldexpr()"
--vim.wo.foldmethod = "expr"
vim.bo.indentexpr = "v:lua.require'nvim-treesitter'.indentexpr()"
end,
})

View file

@ -1,87 +1,4 @@
return {
"folke/trouble.nvim",
opts = {}, -- for default options, refer to the configuration section for custom setup.
cmd = "Trouble",
keys = {
{
"<leader>xx",
"<cmd>Trouble diagnostics toggle<cr>",
desc = "Diagnostics (Trouble)",
},
{
"<leader>xX",
"<cmd>Trouble diagnostics toggle filter.buf=0<cr>",
desc = "Buffer Diagnostics (Trouble)",
},
{
"<leader>xe",
"<cmd>Trouble diagnostics filter.severity=vim.diagnostic.severity.ERROR<cr>",
desc = "Error Diagnostics (Trouble)",
},
{
"<leader>xE",
"<cmd>Trouble diagnostics filter.buf=0 filter.severity=vim.diagnostic.severity.ERROR<cr>",
desc = "Error Diagnostics (Trouble)",
},
{
"<leader>xw",
"<cmd>Trouble diagnostics filter.severity=vim.diagnostic.severity.WARN<cr>",
desc = "Warning Diagnostics (Trouble)",
},
{
"<leader>xW",
"<cmd>Trouble diagnostics filter.buf=0 filter.severity=vim.diagnostic.severity.WARN<cr>",
desc = "Warning Diagnostics (Trouble)",
},
{
"<leader>xi",
"<cmd>Trouble diagnostics filter.severity=vim.diagnostic.severity.INFO<cr>",
desc = "Info Diagnostics (Trouble)",
},
{
"<leader>xI",
"<cmd>Trouble diagnostics filter.buf=0 filter.severity=vim.diagnostic.severity.INFO<cr>",
desc = "Info Diagnostics (Trouble)",
},
{
"<leader>xh",
"<cmd>Trouble diagnostics filter.severity=vim.diagnostic.severity.HINT<cr>",
desc = "Info Diagnostics (Trouble)",
},
{
"<leader>xH",
"<cmd>Trouble diagnostics filter.buf=0 filter.severity=vim.diagnostic.severity.HINT<cr>",
desc = "Info Diagnostics (Trouble)",
},
{
"<leader>xt",
"<cmd>Trouble todo<cr>",
desc = "TODOs (Trouble)",
},
{
"<leader>xT",
"<cmd>Trouble todo filter.buf=0<cr>",
desc = "TODOs (Trouble)",
},
{
"<leader>cs",
"<cmd>Trouble symbols toggle focus=false<cr>",
desc = "Symbols (Trouble)",
},
{
"<leader>cl",
"<cmd>Trouble lsp toggle focus=false win.position=right<cr>",
desc = "LSP Definitions / references / ... (Trouble)",
},
{
"<leader>xL",
"<cmd>Trouble loclist toggle<cr>",
desc = "Location List (Trouble)",
},
{
"<leader>xQ",
"<cmd>Trouble qflist toggle<cr>",
desc = "Quickfix List (Trouble)",
},
},
}
vim.pack.add({
gh("folke/trouble.nvim"),
gh("nvim-tree/nvim-web-devicons"),
})

View file

@ -0,0 +1,11 @@
vim.lsp.config("typos_lsp", {
settings = {
filetypes = {
'java',
'go'
},
},
init_options = {
diagnosticSeverity = "Hint",
}
})

View file

@ -0,0 +1,77 @@
vim.g.mapleader = " "
-- Navigation
vim.keymap.set('n', 'gb', ':bn<CR>')
vim.keymap.set('n', 'gB', ':bp<CR>')
vim.keymap.set('n', 'g#', ':b#<CR>')
vim.keymap.set("n", "<leader>tt", "<cmd>Neotree toggle<cr>")
vim.keymap.set("n", "<leader>tr", "<cmd>Neotree reveal<cr>")
vim.keymap.set("n", "<C-p>", "<cmd>Telescope<cr>")
vim.keymap.set("n", "<C-b>", "<cmd>Telescope buffers<cr>")
vim.keymap.set("n", "<A-r>", "<cmd>Telescope git_files<CR>")
vim.keymap.set("n", "<C-l>", "<cmd>Telescope lsp_document_symbols<CR>")
vim.keymap.set("n", "<C-d>", "<cmd>lua require('telescope.builtin').diagnostics({severity_limit='WARN'})<CR>")
-- Terminal mode
vim.keymap.set('t', '<Esc>', '<C-\\><C-n>', { noremap = true})
-- LSP
vim.keymap.set("n", "<leader>e", vim.diagnostic.open_float)
vim.keymap.set("n", "[d", vim.diagnostic.goto_prev)
vim.keymap.set("n", "]d", vim.diagnostic.goto_next)
vim.keymap.set("n", "<leader>q", vim.diagnostic.setloclist)
vim.keymap.set("n", "gD", vim.lsp.buf.declaration)
vim.keymap.set("n", "gd", vim.lsp.buf.definition)
vim.keymap.set("n", "K", vim.lsp.buf.hover)
vim.keymap.set("n", "gi", vim.lsp.buf.implementation)
vim.keymap.set("n", "<C-k>", vim.lsp.buf.signature_help)
vim.keymap.set("n", "<leader>D", vim.lsp.buf.type_definition)
vim.keymap.set("n", "<leader>rn", vim.lsp.buf.rename)
vim.keymap.set("n", "<leader>ca", vim.lsp.buf.code_action)
vim.keymap.set("n", "gr", vim.lsp.buf.references)
vim.keymap.set("n", "<leader>f", function() vim.lsp.buf.format { async = true } end)
vim.keymap.set("n", "<leader>xx", function() require('trouble').toggle({mode="diagnostics"}) end)
vim.keymap.set("n", "<leader>xX", function() require('trouble').toggle({mode="diagnostics", filter={buf=0}}) end)
vim.keymap.set("n", "<leader>xe", function() require('trouble').toggle({mode="diagnostics", filter={severity=vim.diagnostic.severity.ERROR}}) end)
vim.keymap.set("n", "<leader>xE", function() require('trouble').toggle({mode="diagnostics", filter={severity=vim.diagnostic.severity.ERROR, buf=0}}) end)
vim.keymap.set("n", "<leader>xw", function() require('trouble').toggle({mode="diagnostics", filter={severity=vim.diagnostic.severity.WARN}}) end)
vim.keymap.set("n", "<leader>xW", function() require('trouble').toggle({mode="diagnostics", filter={severity=vim.diagnostic.severity.WARN, buf=0}}) end)
vim.keymap.set("n", "<leader>xi", function() require('trouble').toggle({mode="diagnostics", filter={severity=vim.diagnostic.severity.INFO}}) end)
vim.keymap.set("n", "<leader>xI", function() require('trouble').toggle({mode="diagnostics", filter={severity=vim.diagnostic.severity.INFO, buf=0}}) end)
vim.keymap.set("n", "<leader>xh", function() require('trouble').toggle({mode="diagnostics", filter={severity=vim.diagnostic.severity.HINT}}) end)
vim.keymap.set("n", "<leader>xH", function() require('trouble').toggle({mode="diagnostics", filter={severity=vim.diagnostic.severity.HINT, buf=0}}) end)
vim.keymap.set("n", "<leader>xt", function() require('trouble').toggle({mode="todo"}) end)
vim.keymap.set("n", "<leader>xT", function() require('trouble').toggle({mode="todo", filter={buf=0}}) end)
vim.keymap.set("n", "<leader>cs", function() require('trouble').toggle({mode="symbols"}) end)
vim.keymap.set("n", "<leader>cl", function() require('trouble').toggle({mode="lsp", win={position="right"}}) end)
vim.keymap.set("n", "<leader>xL", function() require('trouble').toggle({mode="loclist"}) end)
vim.keymap.set("n", "<leader>xQ", function() require('trouble').toggle({mode="qflist"}) end)
-- DAP
vim.keymap.set("n", "<F11>", function() require("dap").continue() end)
vim.keymap.set("n", "<F6>", function() require("dap").step_over() end)
vim.keymap.set("n", "<F5>", function() require("dap").step_into() end)
vim.keymap.set("n", "<F12>", function() require("dap").step_out() end)
vim.keymap.set("n", "<space>b", function() require("dap").toggle_breakpoint() end)
vim.keymap.set({"n", "v"}, "<leader>d", "")
vim.keymap.set("n", "<leader>dB", function() require("dap").set_breakpoint(vim.fn.input('Breakpoint condition: ')) end)
vim.keymap.set("n", "<leader>db", function() require("dap").toggle_breakpoint() end)
vim.keymap.set("n", "<leader>dc", function() require("dap").continue() end)
vim.keymap.set("n", "<leader>da", function() require("dap").continue({ before = get_args }) end)
vim.keymap.set("n", "<leader>dC", function() require("dap").run_to_cursor() end)
vim.keymap.set("n", "<leader>dg", function() require("dap").goto_() end)
vim.keymap.set("n", "<leader>di", function() require("dap").step_into() end)
vim.keymap.set("n", "<leader>dj", function() require("dap").down() end)
vim.keymap.set("n", "<leader>dk", function() require("dap").up() end)
vim.keymap.set("n", "<leader>dl", function() require("dap").run_last() end)
vim.keymap.set("n", "<leader>do", function() require("dap").step_out() end)
vim.keymap.set("n", "<leader>dO", function() require("dap").step_over() end)
vim.keymap.set("n", "<leader>dp", function() require("dap").pause() end)
vim.keymap.set("n", "<leader>dr", function() require("dap").repl.toggle() end)
vim.keymap.set("n", "<leader>ds", function() require("dap").session() end)
vim.keymap.set("n", "<leader>dt", function() require("dap").terminate() end)
vim.keymap.set("n", "<leader>dw", function() require("dap.ui.widgets").hover() end)
vim.keymap.set("n", "<leader>df", function() require('jdtls').test_class() end)
vim.keymap.set("n", "<leader>dn", function() require('jdtls').test_nearest_method() end)
vim.keymap.set("n", "<leader>du", function() require("dapui").toggle({ }) end)
vim.keymap.set({"n", "v"}, "<leader>de", function() require("dapui").eval() end)

21
nvim/lua/user/dap.lua Normal file
View file

@ -0,0 +1,21 @@
local dap = require("dap")
dap.configurations.java = {{
type = 'java',
request = 'attach',
name = 'Debug (Attach) port 5005',
hostName = '127.0.0.1',
port = 5005,
},{
type = 'java',
request = 'attach',
name = 'Debug (Attach) port 5006',
hostName = '127.0.0.1',
port = 5006,
},{
type = 'java',
request = 'attach',
name = 'Debug (Attach) port 5105',
hostName = '127.0.0.1',
port = 5105,
}}

69
nvim/lua/user/lsp.lua Normal file
View file

@ -0,0 +1,69 @@
--vim.lsp.inlay_hint.enable()
vim.diagnostic.config({
virtual_text = true,
--virtual_lines = true,
--virtual_lines = {
-- current_line = true,
--},
severity_sort = true,
})
vim.opt.completeopt = { "menuone", "noselect", "popup", "fuzzy" }
vim.lsp.enable('html')
vim.lsp.enable('cssls')
vim.lsp.enable('jsonls')
vim.lsp.enable('typos_lsp')
-- Go
vim.lsp.config("gopls", {
settings = {
gopls = {
gofumpt = true,
staticcheck = true,
analyses = {
unusedparams = true,
unusedresult = true,
unusedwrite = true,
unusedvariable = true,
useany = true,
fieldalignment = false,
nilness = true,
shadow = true,
},
hints = {
assignVariableTypes = true,
compositeLiteralFields = true,
compositeLiteralTypes = true,
constantValues = true,
functionTypeParameters = true,
parameterNames = true,
rangeVariableTypes = true,
},
codelenses = {
gc_details = true,
generate = true,
regenerate_cgo = true,
tidy = true,
upgrade_dependency = true,
vendor = true,
},
},
},
})
vim.api.nvim_create_autocmd({"BufWritePre"}, {
pattern = "*.go",
callback = function()
local params = vim.lsp.util.make_range_params()
params.context = {only = {"source.organizeImports"}}
local result = vim.lsp.buf_request_sync(0, "textDocument/codeAction", params)
for cid, res in pairs(result or {}) do
for _, r in pairs(res.result or {}) do
if r.edit then
local enc = (vim.lsp.get_client_by_id(cid) or {}).offset_encoding or "utf-16"
vim.lsp.util.apply_workspace_edit(r.edit, enc)
end
end
end
vim.lsp.buf.format({async = false})
end
})
vim.lsp.enable('gopls')

38
nvim/lua/user/options.lua Normal file
View file

@ -0,0 +1,38 @@
vim.o.wrap = false
vim.o.number = true
vim.o.wildmode = "longest,list"
vim.o.colorcolumn = "120"
vim.o.tabpagemax = 500
vim.o.scrolloff = 4;
-- Indentation
vim.o.smartindent = true
vim.o.tabstop = 4
vim.o.softtabstop = 4
vim.o.shiftwidth = 4
vim.o.expandtab = true
vim.o.cursorcolumn = true
vim.o.cursorline = true
-- Search
vim.o.incsearch = true
vim.o.hlsearch = true
vim.o.ignorecase = true
vim.o.smartcase = true
-- Whitespaces
vim.o.listchars = "tab:>-,trail:·"
vim.o.list = true
-- File handling
vim.o.hidden = true
vim.cmd("syntax enable")
vim.cmd("filetype plugin on")
-- Colorscheme
vim.cmd("colorscheme gruvbox")
-- REST
vim.g.rest_nvim = {
}

19
nvim/lua/user/plugins.lua Normal file
View file

@ -0,0 +1,19 @@
gh = function(x) return "https://github.com/" .. x end
gl = function(x) return "https://gitlab.com/" .. x end
cb = function(x) return "https://codeberg.org/" .. x end
require("plugins.gruvbox")
require("plugins.lualine")
require("plugins.neotree")
require("plugins.gitsigns")
require("plugins.telescope")
require("plugins.trouble")
require("plugins.todo-comments")
require("plugins.treesitter")
require("plugins.lspconfig")
require("plugins.typos")
require("plugins.jdtls")
require("plugins.sonarlint")
require("plugins.dap")
require("plugins.dap-go")
require("plugins.cmp")

View file

@ -106,10 +106,6 @@ bindsym Ctrl+Shift+space exec makoctl dismiss --all
# Passmenu
bindcode $mod+55 exec gopass ls --flat | bemenu -i -l 10 -m all -p Password: --fn "DejaVu Sans 12" | xargs --no-run-if-empty gopass show -c --nosync
# Timew
bindcode $mod+56 exec ~/.local/bin/timewmenu -i -l 10 -m all -p "Track:" --fn "DejaVu Sans 12"
bindcode $mod+Ctrl+56 exec timew stop
# Resizing containers
mode "resize" {
bindcode $left resize shrink width 80px
@ -154,6 +150,23 @@ mode "$mode_system" {
}
bindcode $mod+Shift+55 mode "$mode_system"
# Screenshot
set $mode_screenshot Screenshot (o) output, (a) active, (r) region, (Shift+o) copy output, (Shift+a) copy active, (Shift+r) copy region
mode "$mode_screenshot" {
bindsym o exec 'grimshot save output | xargs -I {} notify-send -t 10000 Screenshot "{}"', mode "default"
bindsym a exec 'grimshot save active | xargs -I {} notify-send -t 10000 Screenshot "{}"', mode "default"
bindsym r exec 'grimshot save area | xargs -I {} notify-send -t 10000 Screenshot "{}"', mode "default"
bindsym Shift+o exec 'grimshot copy output | xargs -I {} notify-send -t 10000 Screenshot "{}"', mode "default"
bindsym Shift+a exec 'grimshot copy active | xargs -I {} notify-send -t 10000 Screenshot "{}"', mode "default"
bindsym Shift+r exec 'grimshot copy area | xargs -I {} notify-send -t 10000 Screenshot "{}"', mode "default"
bindsym Return mode "default"
bindsym mod3+Return mode "default"
bindsym Escape mode "default"
bindsym mod3+Escape mode "default"
}
bindsym $mod+l mode "$mode_screenshot"
bindsym Print exec grimshot save output | xargs -I {} notify-send -t 10000 Screenshot "{}"
# Systemd environment
exec "systemctl --user import-environment; systemctl --user start sway-session.target"
exec dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP=sway

View file

@ -1,6 +1,8 @@
# Output configuration
output * bg "~/.config/sway/bg.png" fill
output DP-1 resolution 3840x2160 scale 1.5 position 0,0 color_profile icc "~/.config/sway/yuki.icc"
output DP-1 resolution 3840x2160 scale 1.5 position 1080,0 color_profile icc "~/.config/sway/yuki.icc"
output HDMI-A-1 resolution 1920x1080 scale 1.0 position 0,-300 transform 90
output HDMI-A-1 disable
# Input configuration
input type:pointer {
@ -9,12 +11,10 @@ input type:pointer {
}
# Monitor setup
set $mode_monitor Monitor (l) single left, (r) single right, (h) dual horizontal, ((v) dual vertical
set $mode_monitor Monitor (s) single, (d) dual
mode "$mode_monitor" {
bindsym l output HDMI-A-1 enable, output DP-1 disable, mode "default"
bindsym r output DP-1 enable position 0 0 transform normal, output HDMI-A-1 disable, mode "default"
bindsym h output HDMI-A-1 enable, output DP-1 enable position 1920 0 transform normal, mode "default"
bindsym v output HDMI-A-1 enable, output DP-1 enable position 1920 -500 transform 270, mode "default"
bindsym s output HDMI-A-1 disable, mode "default"
bindsym d output HDMI-A-1 enable, mode "default"
bindsym Return mode "default"
bindsym mod3+Return mode "default"
bindsym Escape mode "default"