Public Access
139 lines
4.1 KiB
Lua
139 lines
4.1 KiB
Lua
-- VIM OPTIONS START --
|
|
|
|
local vim = vim
|
|
vim.o.number = true
|
|
vim.o.relativenumber = true
|
|
vim.o.tabstop = 4
|
|
vim.o.shiftwidth = 4
|
|
vim.o.expandtab = true
|
|
vim.o.signcolumn = "yes"
|
|
vim.o.swapfile = false
|
|
vim.g.mapleader = " "
|
|
vim.o.winborder = "single"
|
|
|
|
-- Make 'j' and 'k' navigate visual lines (not logical lines)
|
|
vim.keymap.set("n", "j", "gj", { noremap = true, silent = true })
|
|
vim.keymap.set("n", "k", "gk", { noremap = true, silent = true })
|
|
vim.keymap.set("v", "j", "gj", { noremap = true, silent = true })
|
|
vim.keymap.set("v", "k", "gk", { noremap = true, silent = true })
|
|
|
|
|
|
-- VIM OPTIONS END --
|
|
|
|
-- PLUGINS START --
|
|
|
|
vim.pack.add({
|
|
{ src = "https://github.com/ellisonleao/gruvbox.nvim" },
|
|
{ src = "https://github.com/stevearc/oil.nvim" },
|
|
{ src = "https://github.com/echasnovski/mini.pick" },
|
|
{ src = "https://github.com/neovim/nvim-lspconfig" },
|
|
{ src = "https://github.com/nvim-treesitter/nvim-treesitter" },
|
|
{ src = "https://github.com/Saghen/blink.cmp", version = "v1.6.0", },
|
|
{ src = "https://github.com/mason-org/mason.nvim" },
|
|
{ src = "https://github.com/dimitry-ishenko-neovim/lualine-nvim" },
|
|
{ src = "https://github.com/chomosuke/typst-preview.nvim" },
|
|
{ src = "https://github.com/kosayoda/nvim-lightbulb" },
|
|
{ src = "https://codeberg.org/mfussenegger/nvim-jdtls.git" },
|
|
{ src = "https://github.com/m4xshen/autoclose.nvim" },
|
|
})
|
|
|
|
vim.cmd("colorscheme gruvbox")
|
|
|
|
require("oil").setup()
|
|
require("mini.pick").setup()
|
|
require("blink.cmp").setup({
|
|
keymap = { preset = "super-tab" },
|
|
})
|
|
require("nvim-treesitter.configs").setup({
|
|
auto_install = true,
|
|
highlight = { enable = true },
|
|
indent = { enable = true },
|
|
})
|
|
require("mason").setup()
|
|
require("lualine").setup {
|
|
options = {
|
|
theme = "gruvbox_dark",
|
|
}
|
|
}
|
|
require("typst-preview").setup()
|
|
require("nvim-lightbulb").setup({ autocmd = { enabled = true } })
|
|
require("autoclose").setup()
|
|
|
|
-- PLUGINS END --
|
|
|
|
-- LSP START --
|
|
|
|
vim.lsp.enable({ "lua_ls", "ts_ls", "svelte", "tailwindcss", "cssls", "bashls", "rust_analyzer", "clangd", "clang-format",
|
|
"taplo",
|
|
"sourcekit", "lemminx", "tinymist", "jdtls" })
|
|
|
|
vim.lsp.config["tinymist"] = {
|
|
cmd = { "tinymist" },
|
|
filetypes = { "typst" },
|
|
settings = {
|
|
formatterMode = "typstyle",
|
|
},
|
|
}
|
|
|
|
vim.lsp.config("jdtls", {
|
|
root_dir = vim.fn.getcwd(),
|
|
settings = {
|
|
java = {
|
|
-- Custom eclipse.jdt.ls options go here
|
|
},
|
|
},
|
|
})
|
|
|
|
-- LSP END --
|
|
|
|
-- KEYMAP START --
|
|
|
|
vim.keymap.set("n", "<leader>gf", vim.lsp.buf.format)
|
|
vim.keymap.set("n", "<leader>gd", vim.lsp.buf.definition)
|
|
vim.keymap.set("n", "<leader>gD", vim.lsp.buf.declaration)
|
|
vim.keymap.set("n", "<leader>ca", vim.lsp.buf.code_action, { desc = "Code Action" })
|
|
vim.keymap.set("n", "<leader>rn", vim.lsp.buf.rename, { desc = "Rename symbol" })
|
|
|
|
vim.keymap.set("n", "<C-f>", ":Pick files<CR>")
|
|
vim.keymap.set("n", "<C-g>", ":Pick grep_live<CR>")
|
|
vim.keymap.set("n", "<C-h>", ":Pick help<CR>")
|
|
vim.keymap.set("n", "<C-e>", ":Oil<CR>")
|
|
|
|
vim.keymap.set("n", "<leader>dg", function()
|
|
vim.diagnostic.setqflist()
|
|
vim.cmd("copen")
|
|
end, { desc = "Show diagnostics in quickfix list" })
|
|
vim.keymap.set("n", "<leader>qf>", function()
|
|
local qf_win = vim.fn.getwininfo(vim.fn.getqflist({ winid = 0 }).winid)
|
|
if not qf_win or #qf_win == 0 then
|
|
vim.cmd("copen")
|
|
else
|
|
vim.cmd("cclose")
|
|
end
|
|
end, { desc = "Toggle quickfix list" })
|
|
|
|
-- KEYMAP END --
|
|
|
|
vim.diagnostic.config({
|
|
virtual_text = {
|
|
prefix = "●",
|
|
spacing = 2,
|
|
source = "if_many",
|
|
},
|
|
severity_sort = true,
|
|
})
|
|
|
|
-- Toggle spell check with <leader>sc
|
|
vim.keymap.set("n", "<leader>sc", function()
|
|
vim.wo.spell = not vim.wo.spell
|
|
print("Spell checking: " .. (vim.wo.spell and "ON" or "OFF"))
|
|
end, { desc = "Toggle spell checking" })
|
|
|
|
-- Switch between English and German with <leader>sl
|
|
vim.keymap.set("n", "<leader>sl", function()
|
|
local current = vim.opt.spelllang:get()[1] or ""
|
|
local new_lang = current == "en" and "de" or "en"
|
|
vim.opt.spelllang = new_lang
|
|
print("Spell language: " .. new_lang)
|
|
end, { desc = "Switch spell language" })
|