aboutsummaryrefslogtreecommitdiff
path: root/modules/home-manager/neovim/lua
diff options
context:
space:
mode:
authorschererleander <leander@schererleander.de>2025-04-29 16:59:25 +0200
committerschererleander <leander@schererleander.de>2025-04-29 16:59:25 +0200
commitdb88d50e8924cba8b424c0ea7546b81baccd9c5c (patch)
tree44b2b1082c587b47fb1f08d620ee707ddd4adf27 /modules/home-manager/neovim/lua
parent539b3e2836e4e7177e65b3df10a4bfe68f9f4d23 (diff)
initial commit
Diffstat (limited to 'modules/home-manager/neovim/lua')
-rw-r--r--modules/home-manager/neovim/lua/autocmds.lua8
-rw-r--r--modules/home-manager/neovim/lua/keymaps.lua0
-rw-r--r--modules/home-manager/neovim/lua/options.lua45
-rw-r--r--modules/home-manager/neovim/lua/plugins.lua268
4 files changed, 321 insertions, 0 deletions
diff --git a/modules/home-manager/neovim/lua/autocmds.lua b/modules/home-manager/neovim/lua/autocmds.lua
new file mode 100644
index 0000000..f7e6923
--- /dev/null
+++ b/modules/home-manager/neovim/lua/autocmds.lua
@@ -0,0 +1,8 @@
+vim.cmd('highlight WinSeparator guibg=None ctermbg=None')
+vim.cmd('highlight VertSplit guibg=NONE ctermbg=NONE')
+-- hide background lsp coloum
+vim.cmd('highlight SignColumn guibg=NONE ctermbg=None')
+
+-- transparent background
+vim.cmd('highlight Normal guibg=NONE ctermbg=NONE')
+vim.cmd('highlight NormalNC guibg=NONE ctermbg=NONE')
diff --git a/modules/home-manager/neovim/lua/keymaps.lua b/modules/home-manager/neovim/lua/keymaps.lua
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/modules/home-manager/neovim/lua/keymaps.lua
diff --git a/modules/home-manager/neovim/lua/options.lua b/modules/home-manager/neovim/lua/options.lua
new file mode 100644
index 0000000..891668f
--- /dev/null
+++ b/modules/home-manager/neovim/lua/options.lua
@@ -0,0 +1,45 @@
+local options = {
+ list = false,
+ backup = false, -- creates a backup file
+ clipboard = "unnamedplus", -- allows neovim to access the system clipboard
+ conceallevel = 2, -- so that `` is visible in markdown files
+ fileencoding = "utf-8", -- the encoding written to a file
+ hidden = true, -- required to keep multiple buffers and open multiple buffers
+ hlsearch = true, -- highlight all matches on previous search pattern
+ ignorecase = true, -- ignore case in search patterns
+ mouse = "a", -- allow the mouse to be used in neovim
+ laststatus = 3,
+ showmode = false, -- we don't need to see things like -- INSERT -- anymore
+ smartcase = true, -- smart case
+ smartindent = true, -- make indenting smarter again
+ splitbelow = true, -- force all horizontal splits to go below current window ↕️
+ splitright = true, -- force all vertical splits to go to the right of current window ↔️
+ swapfile = false, -- creates a swapfile
+ termguicolors = true, -- set term gui colors (most terminals support this)
+ timeoutlen = 100, -- time to wait for a mapped sequence to complete (in milliseconds)
+ undofile = true, -- enable persistent undo
+ updatetime = 300, -- faster completion (4000ms default) ⚡
+ writebackup = false, -- if a file is being edited by another program, it is not allowed to be edited
+ expandtab = true, -- use tabs instead of spaces ␣
+ pumheight = 10,
+ cmdheight = 2,
+ shiftwidth = 2, -- the number of spaces inserted for each indentation
+ tabstop = 2, -- insert 2 spaces for a tab ⇥
+ cursorline = false, -- highlight the current line (disabled for now)
+ number = false, -- set numbered lines
+ relativenumber = false, -- set relative numbered lines
+ numberwidth = 4, -- set number column width to 2 (default 4)
+ wrap = false, -- display lines as one long lines
+}
+
+vim.opt.shortmess:append 'c'
+
+for k, v in pairs(options) do
+ vim.opt[k] = v
+end
+
+vim.wo.list = false
+vim.cmd 'set whichwrap+=<,>,[,],h,l'
+
+-- lazy load
+vim.loader.enable()
diff --git a/modules/home-manager/neovim/lua/plugins.lua b/modules/home-manager/neovim/lua/plugins.lua
new file mode 100644
index 0000000..7c2d956
--- /dev/null
+++ b/modules/home-manager/neovim/lua/plugins.lua
@@ -0,0 +1,268 @@
+require("lazy").setup({
+ {
+ "ellisonleao/gruvbox.nvim",
+ priority = 1000,
+ config = function ()
+ require("gruvbox").setup({})
+ vim.cmd("colorscheme gruvbox")
+ end
+ },
+
+ {
+ "hrsh7th/nvim-cmp",
+ dependencies = {
+ "neovim/nvim-lspconfig",
+ "hrsh7th/cmp-nvim-lsp",
+ "hrsh7th/cmp-buffer",
+ "hrsh7th/cmp-path",
+ "hrsh7th/cmp-cmdline",
+ "L3MON4D3/LuaSnip",
+ "onsails/lspkind-nvim"
+ },
+ config = function()
+ local signs = {
+ Error = " ",
+ Warn = " ",
+ Hint = " ",
+ Info = " ",
+ }
+ for type, icon in pairs(signs) do
+ local hl = "DiagnosticSign" .. type
+ vim.fn.sign_define(hl, { text = icon, texthl = hl, numhl = hl })
+ end
+
+ local capabilities = require("cmp_nvim_lsp").default_capabilities()
+
+ local on_attach = function(client, bufnr)
+ local opts = { noremap = true, silent = true, buffer = bufnr }
+ vim.keymap.set("n", "gd", vim.lsp.buf.definition, opts)
+ vim.keymap.set("n", "K", vim.lsp.buf.hover, opts)
+ vim.keymap.set("n", "gi", vim.lsp.buf.implementation, opts)
+ vim.keymap.set("n", "<C-k>", vim.lsp.buf.signature_help, opts)
+ vim.keymap.set("n", "<leader>wa", vim.lsp.buf.add_workspace_folder, opts)
+ vim.keymap.set("n", "<leader>wr", vim.lsp.buf.remove_workspace_folder, opts)
+ vim.keymap.set("n", "<leader>wl", function()
+ print(vim.inspect(vim.lsp.buf.list_workspace_folders()))
+ end, opts)
+ vim.keymap.set("n", "<leader>D", vim.lsp.buf.type_definition, opts)
+ vim.keymap.set("n", "<leader>rn", vim.lsp.buf.rename, opts)
+ vim.keymap.set("n", "<leader>ca", vim.lsp.buf.code_action, opts)
+ vim.keymap.set("n", "gr", vim.lsp.buf.references, opts)
+ vim.keymap.set("n", "<leader>e", vim.diagnostic.open_float, opts)
+ vim.keymap.set("n", "[d", vim.diagnostic.goto_prev, opts)
+ vim.keymap.set("n", "]d", vim.diagnostic.goto_next, opts)
+ vim.keymap.set("n", "<leader>q", vim.diagnostic.setloclist, opts)
+ end
+
+ local lspconfig = require("lspconfig")
+
+ lspconfig.lua_ls.setup({
+ capabilities = capabilities,
+ on_attach = on_attach,
+ settings = {
+ Lua = {
+ diagnostics = {
+ globals = { "vim" },
+ },
+ workspace = {
+ library = vim.api.nvim_get_runtime_file("", true),
+ },
+ telemetry = {
+ enable = false,
+ },
+ },
+ },
+ })
+
+ local cmp = require("cmp")
+ local luasnip = require("luasnip")
+ local lspkind = require("lspkind")
+ require("luasnip.loaders.from_vscode").lazy_load()
+
+ cmp.setup({
+ snippet = {
+ expand = function(args)
+ luasnip.lsp_expand(args.body)
+ end,
+ },
+ 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({
+ behavior = cmp.ConfirmBehavior.Replace,
+ select = true,
+ }),
+ ["<Tab>"] = cmp.mapping(function(fallback)
+ if cmp.visible() then
+ cmp.select_next_item()
+ elseif luasnip.expand_or_jumpable() then
+ luasnip.expand_or_jump()
+ else
+ fallback()
+ end
+ end, { "i", "s" }),
+ ["<S-Tab>"] = cmp.mapping(function(fallback)
+ if cmp.visible() then
+ cmp.select_prev_item()
+ elseif luasnip.jumpable(-1) then
+ luasnip.jump(-1)
+ else
+ fallback()
+ end
+ end, { "i", "s" }),
+ }),
+ formatting = {
+ format = lspkind.cmp_format({
+ mode = "symbol_text",
+ maxwidth = 50,
+ ellipsis_char = "..."
+ }),
+ },
+ sources = {
+ { name = "nvim_lsp" },
+ { name = "luasnip" },
+ { name = "buffer" },
+ { name = "path" },
+ },
+ })
+
+ cmp.setup.filetype('gitcommit', {
+ sources = cmp.config.sources({
+ { name = 'buffer' },
+ })
+ })
+
+ cmp.setup.cmdline(':', {
+ mapping = cmp.mapping.preset.cmdline(),
+ sources = cmp.config.sources({
+ { name = 'path' }
+ }, {
+ { name = 'cmdline' }
+ })
+ })
+ end,
+ },
+
+ {
+ "nvim-treesitter/nvim-treesitter",
+ build = ":TSUpdate",
+ event = "BufRead",
+ config = function()
+ require("nvim-treesitter.configs").setup({
+ auto_install = true,
+ ensure_installed = { "c", "lua", "vim", "python", "java", "javascript", "typescript", "css", "html" },
+ highlight = { enable = true, use_languagetree = true },
+ indent = { enable = true },
+ })
+ end,
+ },
+
+ {
+ "nvim-tree/nvim-tree.lua",
+ enabled = false,
+ config = function()
+ require("nvim-tree").setup({
+ view = { width = 20, side = "left" },
+ disable_netrw = true,
+ hijack_cursor = true,
+ update_cwd = true,
+ hijack_directories = { auto_open = true },
+ renderer = {
+ root_folder_label = false,
+ indent_markers = {
+ enable = true,
+ icons = { corner = "└ ", edge = "│ ", none = " " },
+ },
+ },
+ })
+ end,
+ },
+
+ {
+ "nvim-telescope/telescope.nvim",
+ dependencies = { "nvim-lua/plenary.nvim" },
+ keys = {
+ { "<C-s>", ":silent Telescope current_buffer_fuzzy_find<CR>", desc = "Open Telescope" },
+ },
+ config = function()
+ require("telescope").setup({
+ defaults = { mapping = {} },
+ pickers = {},
+ extensions = {},
+ })
+ end,
+ },
+
+ {
+ "lewis6991/gitsigns.nvim",
+ config = function()
+ require("gitsigns").setup()
+ end,
+ },
+
+ {
+ "echasnovski/mini.nvim",
+ version = false,
+ dependencies = { "nvim-tree/nvim-web-devicons" },
+ config = function()
+ require("mini.starter").setup({
+ header = table.concat({
+ " /l、 ",
+ "(゚、 。 7 ",
+ " l ~ ヽ ",
+ " じしf_,)ノ ",
+ }, "\n"),
+ footer = "",
+ content_hooks = {
+ require("mini.starter").gen_hook.adding_bullet("» "),
+ require("mini.starter").gen_hook.aligning("center", "center"),
+ },
+ })
+ end,
+ },
+
+ {
+ "windwp/nvim-autopairs",
+ event = "InsertEnter",
+ config = function()
+ require("nvim-autopairs").setup {}
+ end,
+ },
+
+ {
+ "tamton-aquib/staline.nvim",
+ dependencies = { "nvim-tree/nvim-web-devicons" },
+ config = function()
+ require("staline").setup {
+ sections = {
+ left = { 'file_name', 'branch' },
+ mid = { 'lsp' },
+ right = { 'line_column' },
+ },
+ special_table = {
+ NvimTree = { 'NvimTree', ' ' },
+ packer = { 'Packer', ' ' },
+ starter = { '', '' },
+ lazy = { '', '' },
+ mason = { '', '' },
+ },
+ lsp_symbols = {
+ Error = " ",
+ Info = " ",
+ Warn = " ",
+ Hint = "",
+ },
+ defaults = {
+ true_colors = true,
+ line_column = ' ☰ %l/%L %c',
+ branch_symbol = " ",
+ exclude_fts = { 'NvimTree' },
+ },
+ }
+ vim.cmd('highlight Statusline guibg=none')
+ vim.cmd('highlight StatuslineNC guibg=none')
+ end,
+ },
+})