From f95fcf3d9bc4fd6f426806ad8ee1bce9ba85185e Mon Sep 17 00:00:00 2001 From: Alexander Staschinski Date: Wed, 8 Apr 2026 11:16:58 +0200 Subject: [PATCH] added things --- init.lua | 38 ++++++++++++++++++++ lazy-lock.json | 15 ++++++++ lua/config/keymaps.lua | 27 ++++++++++++++ lua/config/lazy.lua | 35 ++++++++++++++++++ lua/plugins.lua | 5 +++ lua/plugins/autopairs.lua | 5 +++ lua/plugins/blink.lua | 26 ++++++++++++++ lua/plugins/harpoon.lua | 20 +++++++++++ lua/plugins/lsp.lua | 25 +++++++++++++ lua/plugins/telescope.lua | 74 +++++++++++++++++++++++++++++++++++++++ lua/plugins/undotree.lua | 9 +++++ 11 files changed, 279 insertions(+) create mode 100644 init.lua create mode 100644 lazy-lock.json create mode 100644 lua/config/keymaps.lua create mode 100644 lua/config/lazy.lua create mode 100644 lua/plugins.lua create mode 100644 lua/plugins/autopairs.lua create mode 100644 lua/plugins/blink.lua create mode 100644 lua/plugins/harpoon.lua create mode 100644 lua/plugins/lsp.lua create mode 100644 lua/plugins/telescope.lua create mode 100644 lua/plugins/undotree.lua diff --git a/init.lua b/init.lua new file mode 100644 index 0000000..bcb17ed --- /dev/null +++ b/init.lua @@ -0,0 +1,38 @@ +vim.opt.termguicolors = true + +vim.opt.number = true +vim.opt.relativenumber = true + +vim.opt.tabstop = 4 +vim.opt.softtabstop = 4 +vim.opt.shiftwidth = 4 +vim.opt.expandtab = true + +vim.opt.smartindent = true + +vim.opt.wrap = true + +vim.opt.swapfile = false +vim.opt.backup = false +vim.opt.undodir = os.getenv("HOME") .. "/.vim/undodir" +vim.opt.undofile = true + +vim.opt.hlsearch = false +vim.opt.incsearch = true + +vim.opt.scrolloff = 8 +vim.opt.signcolumn = "yes" +vim.opt.isfname:append("@-@") + +vim.opt.updatetime = 50 + +vim.cmd([[ +hi Normal guibg=NONE ctermbg=NONE +hi NonText guibg=NONE ctermbg=NONE +hi LineNr guibg=NONE ctermbg=NONE +]]) + +vim.g.mapleader = " " + +require("config.keymaps") +require("config.lazy") diff --git a/lazy-lock.json b/lazy-lock.json new file mode 100644 index 0000000..205dca7 --- /dev/null +++ b/lazy-lock.json @@ -0,0 +1,15 @@ +{ + "blink.cmp": { "branch": "main", "commit": "451168851e8e2466bc97ee3e026c3dcb9141ce07" }, + "harpoon": { "branch": "harpoon2", "commit": "87b1a3506211538f460786c23f98ec63ad9af4e5" }, + "lazy.nvim": { "branch": "main", "commit": "306a05526ada86a7b30af95c5cc81ffba93fef97" }, + "mason-lspconfig.nvim": { "branch": "main", "commit": "25f609e7fca78af7cede4f9fa3af8a94b1c4950b" }, + "mason.nvim": { "branch": "main", "commit": "44d1e90e1f66e077268191e3ee9d2ac97cc18e65" }, + "neoconf.nvim": { "branch": "main", "commit": "25b22d7f58ed15fdddb580e730966063f3c427e3" }, + "neodev.nvim": { "branch": "main", "commit": "46aa467dca16cf3dfe27098042402066d2ae242d" }, + "nvim-autopairs": { "branch": "master", "commit": "59bce2eef357189c3305e25bc6dd2d138c1683f5" }, + "plenary.nvim": { "branch": "master", "commit": "b9fd5226c2f76c951fc8ed5923d85e4de065e509" }, + "telescope-fzf-native.nvim": { "branch": "main", "commit": "6fea601bd2b694c6f2ae08a6c6fab14930c60e2c" }, + "telescope.nvim": { "branch": "master", "commit": "5255aa27c422de944791318024167ad5d40aad20" }, + "undotree": { "branch": "master", "commit": "6fa6b57cda8459e1e4b2ca34df702f55242f4e4d" }, + "which-key.nvim": { "branch": "main", "commit": "3aab2147e74890957785941f0c1ad87d0a44c15a" } +} diff --git a/lua/config/keymaps.lua b/lua/config/keymaps.lua new file mode 100644 index 0000000..f8a1c52 --- /dev/null +++ b/lua/config/keymaps.lua @@ -0,0 +1,27 @@ +vim.g.mapleader = " " + +-- move selected stuff with J and K +vim.keymap.set("v", "J", ":m '>+1gv=gv") +vim.keymap.set("v", "K", ":m '<-2gv=gv") + +-- make the cursor in the middle when scrolling fast +vim.keymap.set("n", "", "zz") +vim.keymap.set("n", "", "zz") + +-- clipboard remap +vim.keymap.set("n", "y", "\"+y") +vim.keymap.set("v", "y", "\"+y") +vim.keymap.set("n", "Y", "\"+Y") + +vim.api.nvim_create_autocmd("LspAttach", { + callback = function(args) + local map = vim.keymap.set + local opts = { buffer = args.buf } + + map("n", "gd", vim.lsp.buf.definition, opts) + map("n", "K", vim.lsp.buf.hover, opts) + map("n", "rn", vim.lsp.buf.rename, opts) + map("n", "ca", vim.lsp.buf.code_action, opts) + map("n", "gr", vim.lsp.buf.references, opts) + end, +}) diff --git a/lua/config/lazy.lua b/lua/config/lazy.lua new file mode 100644 index 0000000..f5ee74c --- /dev/null +++ b/lua/config/lazy.lua @@ -0,0 +1,35 @@ +-- 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 = true }, +}) diff --git a/lua/plugins.lua b/lua/plugins.lua new file mode 100644 index 0000000..8a37de2 --- /dev/null +++ b/lua/plugins.lua @@ -0,0 +1,5 @@ +return { + "folke/neodev.nvim", + "folke/which-key.nvim", + { "folke/neoconf.nvim", cmd = "Neoconf" }, +} diff --git a/lua/plugins/autopairs.lua b/lua/plugins/autopairs.lua new file mode 100644 index 0000000..87f3f43 --- /dev/null +++ b/lua/plugins/autopairs.lua @@ -0,0 +1,5 @@ +return { + "windwp/nvim-autopairs", + event = "InsertEnter", + config = true +} diff --git a/lua/plugins/blink.lua b/lua/plugins/blink.lua new file mode 100644 index 0000000..0bbe3b9 --- /dev/null +++ b/lua/plugins/blink.lua @@ -0,0 +1,26 @@ +return { + { + "saghen/blink.cmp", + lazy = false, + version = "*", + + opts = { + keymap = { + preset = "default", + -- accept completion + [""] = { "accept", "fallback" }, + -- navigate completion menu + [""] = { "select_next", "fallback" }, + [""] = { "select_prev", "fallback" }, + }, + + appearance = { + use_nvim_cmp_as_default = true, + }, + + sources = { + default = { "lsp", "path", "snippets", "buffer" }, + }, + }, + }, +} diff --git a/lua/plugins/harpoon.lua b/lua/plugins/harpoon.lua new file mode 100644 index 0000000..1fb4418 --- /dev/null +++ b/lua/plugins/harpoon.lua @@ -0,0 +1,20 @@ +return { + { + "ThePrimeagen/harpoon", + branch = "harpoon2", + dependencies = { "nvim-lua/plenary.nvim" }, + config = function() + local harpoon = require("harpoon") + + harpoon:setup() + + vim.keymap.set("n", "a", function() harpoon:list():add() end) + vim.keymap.set("n", "", function() harpoon.ui:toggle_quick_menu(harpoon:list()) end) + + vim.keymap.set("n", "", function() harpoon:list():select(1) end) + vim.keymap.set("n", "", function() harpoon:list():select(2) end) + vim.keymap.set("n", "", function() harpoon:list():select(3) end) + vim.keymap.set("n", "", function() harpoon:list():select(4) end) + end, + }, +} diff --git a/lua/plugins/lsp.lua b/lua/plugins/lsp.lua new file mode 100644 index 0000000..1c97683 --- /dev/null +++ b/lua/plugins/lsp.lua @@ -0,0 +1,25 @@ +return { + { + "williamboman/mason.nvim", + lazy = false, + config = function() + require("mason").setup() + end, + }, + + { + "williamboman/mason-lspconfig.nvim", + lazy = false, + config = function() + require("mason-lspconfig").setup({ + ensure_installed = { + "lua_ls", + "ts_ls", + "pyright", + }, + -- automatically call vim.lsp.enable() for installed servers + automatic_enable = true, + }) + end, + }, +} diff --git a/lua/plugins/telescope.lua b/lua/plugins/telescope.lua new file mode 100644 index 0000000..9aadd1d --- /dev/null +++ b/lua/plugins/telescope.lua @@ -0,0 +1,74 @@ +return { + -- Main Telescope plugin + { + "nvim-telescope/telescope.nvim", + version = "*", -- gets latest stable release; "*" is recommended now + -- alternatively pin to a specific tag if you prefer stability: + -- tag = "0.2.1", -- check https://github.com/nvim-telescope/telescope.nvim/tags for latest + + dependencies = { + "nvim-lua/plenary.nvim", -- required + + -- Strongly recommended: much faster fuzzy sorting & matching + { + "nvim-telescope/telescope-fzf-native.nvim", + build = "make", -- or "cmake -S. -Bbuild -DCMAKE_BUILD_TYPE=Release && cmake --build build --config Release" if you prefer + }, + + -- Optional nice-to-haves (uncomment if you want them) + -- "nvim-tree/nvim-web-devicons", -- for nicer icons (if you don't have it elsewhere) + -- "nvim-telescope/telescope-ui-select.nvim", -- use Telescope for vim.ui.select() + -- "nvim-telescope/telescope-file-browser.nvim", + }, + + config = function() + local telescope = require("telescope") + + telescope.setup({ + defaults = { + -- Some sensible defaults — feel free to customize + layout_strategy = "horizontal", -- or "vertical", "bottom_pane", "ivy", etc. + layout_config = { + horizontal = { preview_width = 0.55 }, + }, + mappings = { + i = { + [""] = "move_selection_next", + [""] = "move_selection_previous", + }, + }, + -- path_display = { "truncate" }, -- nicer path shortening + }, + + -- You can add picker-specific configs here too + pickers = { + find_files = { + hidden = true, -- show dotfiles + }, + }, + + extensions = { + -- If you add extensions above, configure/load them here + -- fzf = { fuzzy = true, override_generic_sorter = true, override_file_sorter = true }, + -- ["ui-select"] = { require("telescope.themes").get_dropdown({}) }, + }, + }) + + -- Load fzf extension (highly recommended for speed) + pcall(telescope.load_extension, "fzf") + + -- ADD KEYMAPS HERE + local builtin = require("telescope.builtin") + + vim.keymap.set("n", "ff", builtin.find_files, { desc = "Find files" }) + vim.keymap.set("n", "gf", builtin.git_files, { desc = "Find Git files" }) + vim.keymap.set("n", "ps", function() + builtin.grep_string({ search = vim.fn.input("Grep > ") }); + end) + + -- Optional: load other extensions if you added them + -- pcall(telescope.load_extension, "ui-select") + -- pcall(telescope.load_extension, "file_browser") + end, + }, +} diff --git a/lua/plugins/undotree.lua b/lua/plugins/undotree.lua new file mode 100644 index 0000000..ebceb5a --- /dev/null +++ b/lua/plugins/undotree.lua @@ -0,0 +1,9 @@ +return { + { + "mbbill/undotree", + lazy = false, + config = function() + vim.keymap.set("n", "u", vim.cmd.UndotreeToggle) + end, + }, +}