aboutsummaryrefslogtreecommitdiff
path: root/common/home/mosder/.config/nvim/lua/kickstart
diff options
context:
space:
mode:
authorMosder <xmosder12@gmail.com>2026-06-10 02:24:31 +0200
committerMosder <xmosder12@gmail.com>2026-06-10 02:24:31 +0200
commit1f2824b912b22a687fb0f1c56f82198128bef1ca (patch)
treea22c4425c43fcd111c441531b21e275b1fd97f3f /common/home/mosder/.config/nvim/lua/kickstart
parenta7fab53f802c8bacfce66fb3455145835e231460 (diff)
added and updated a lot of configs + refactored it to be more accessible
Diffstat (limited to 'common/home/mosder/.config/nvim/lua/kickstart')
-rw-r--r--common/home/mosder/.config/nvim/lua/kickstart/health.lua52
-rw-r--r--common/home/mosder/.config/nvim/lua/kickstart/plugins/autopairs.lua5
-rw-r--r--common/home/mosder/.config/nvim/lua/kickstart/plugins/debug.lua95
-rw-r--r--common/home/mosder/.config/nvim/lua/kickstart/plugins/gitsigns.lua57
-rw-r--r--common/home/mosder/.config/nvim/lua/kickstart/plugins/indent_line.lua6
-rw-r--r--common/home/mosder/.config/nvim/lua/kickstart/plugins/lint.lua53
-rw-r--r--common/home/mosder/.config/nvim/lua/kickstart/plugins/neo-tree.lua26
7 files changed, 294 insertions, 0 deletions
diff --git a/common/home/mosder/.config/nvim/lua/kickstart/health.lua b/common/home/mosder/.config/nvim/lua/kickstart/health.lua
new file mode 100644
index 0000000..9910238
--- /dev/null
+++ b/common/home/mosder/.config/nvim/lua/kickstart/health.lua
@@ -0,0 +1,52 @@
+--[[
+--
+-- This file is not required for your own configuration,
+-- but helps people determine if their system is setup correctly.
+--
+--]]
+
+local check_version = function()
+ local verstr = tostring(vim.version())
+ if not vim.version.ge then
+ vim.health.error(string.format("Neovim out of date: '%s'. Upgrade to latest stable or nightly", verstr))
+ return
+ end
+
+ if vim.version.ge(vim.version(), '0.12') then
+ vim.health.ok(string.format("Neovim version is: '%s'", verstr))
+ else
+ vim.health.error(string.format("Neovim out of date: '%s'. Upgrade to latest stable or nightly", verstr))
+ end
+end
+
+local check_external_reqs = function()
+ -- Basic utils: `git`, `make`, `unzip`
+ for _, exe in ipairs { 'git', 'make', 'unzip', 'rg' } do
+ local is_executable = vim.fn.executable(exe) == 1
+ if is_executable then
+ vim.health.ok(string.format("Found executable: '%s'", exe))
+ else
+ vim.health.warn(string.format("Could not find executable: '%s'", exe))
+ end
+ end
+
+ return true
+end
+
+return {
+ check = function()
+ vim.health.start 'kickstart.nvim'
+
+ vim.health.info [[NOTE: Not every warning is a 'must-fix' in `:checkhealth`
+
+ Fix only warnings for plugins and languages you intend to use.
+ Mason will give warnings for languages that are not installed.
+ You do not need to install, unless you want to use those languages!]]
+
+ local uv = vim.uv or vim.loop
+ vim.health.info('System Information: ' .. vim.inspect(uv.os_uname()))
+
+ check_version()
+ check_external_reqs()
+ end,
+}
diff --git a/common/home/mosder/.config/nvim/lua/kickstart/plugins/autopairs.lua b/common/home/mosder/.config/nvim/lua/kickstart/plugins/autopairs.lua
new file mode 100644
index 0000000..1d2cdab
--- /dev/null
+++ b/common/home/mosder/.config/nvim/lua/kickstart/plugins/autopairs.lua
@@ -0,0 +1,5 @@
+-- autopairs
+-- https://github.com/windwp/nvim-autopairs
+
+vim.pack.add { 'https://github.com/windwp/nvim-autopairs' }
+require('nvim-autopairs').setup {}
diff --git a/common/home/mosder/.config/nvim/lua/kickstart/plugins/debug.lua b/common/home/mosder/.config/nvim/lua/kickstart/plugins/debug.lua
new file mode 100644
index 0000000..db5448c
--- /dev/null
+++ b/common/home/mosder/.config/nvim/lua/kickstart/plugins/debug.lua
@@ -0,0 +1,95 @@
+-- debug.lua
+--
+-- Shows how to use the DAP plugin to debug your code.
+--
+-- Primarily focused on configuring the debugger for Go, but can
+-- be extended to other languages as well. That's why it's called
+-- kickstart.nvim and not kitchen-sink.nvim ;)
+
+vim.pack.add {
+ 'https://github.com/mfussenegger/nvim-dap',
+ 'https://github.com/rcarriga/nvim-dap-ui',
+ 'https://github.com/nvim-neotest/nvim-nio',
+ 'https://github.com/mason-org/mason.nvim',
+ 'https://github.com/jay-babu/mason-nvim-dap.nvim',
+ 'https://github.com/leoluz/nvim-dap-go',
+}
+
+-- Basic debugging keymaps, feel free to change to your liking!
+vim.keymap.set('n', '<F5>', function() require('dap').continue() end, { desc = 'Debug: Start/Continue' })
+vim.keymap.set('n', '<F1>', function() require('dap').step_into() end, { desc = 'Debug: Step Into' })
+vim.keymap.set('n', '<F2>', function() require('dap').step_over() end, { desc = 'Debug: Step Over' })
+vim.keymap.set('n', '<F3>', function() require('dap').step_out() end, { desc = 'Debug: Step Out' })
+vim.keymap.set('n', '<leader>b', function() require('dap').toggle_breakpoint() end, { desc = 'Debug: Toggle Breakpoint' })
+vim.keymap.set('n', '<leader>B', function() require('dap').set_breakpoint(vim.fn.input 'Breakpoint condition: ') end, { desc = 'Debug: Set Breakpoint' })
+-- Toggle to see last session result. Without this, you can't see session output in case of unhandled exception.
+vim.keymap.set('n', '<F7>', function() require('dapui').toggle() end, { desc = 'Debug: See last session result.' })
+
+local dap = require 'dap'
+local dapui = require 'dapui'
+
+require('mason-nvim-dap').setup {
+ -- Makes a best effort to setup the various debuggers with
+ -- reasonable debug configurations
+ automatic_installation = true,
+
+ -- You can provide additional configuration to the handlers,
+ -- see mason-nvim-dap README for more information
+ handlers = {},
+
+ -- You'll need to check that you have the required things installed
+ -- online, please don't ask me how to install them :)
+ ensure_installed = {
+ -- Update this to ensure that you have the debuggers for the langs you want
+ 'delve',
+ },
+}
+
+-- Dap UI setup
+-- For more information, see |:help nvim-dap-ui|
+---@diagnostic disable-next-line: missing-fields
+dapui.setup {
+ -- Set icons to characters that are more likely to work in every terminal.
+ -- Feel free to remove or use ones that you like more! :)
+ -- Don't feel like these are good choices.
+ icons = { expanded = '▾', collapsed = '▸', current_frame = '*' },
+ ---@diagnostic disable-next-line: missing-fields
+ controls = {
+ icons = {
+ pause = '⏸',
+ play = '▶',
+ step_into = '⏎',
+ step_over = '⏭',
+ step_out = '⏮',
+ step_back = 'b',
+ run_last = '▶▶',
+ terminate = '⏹',
+ disconnect = '⏏',
+ },
+ },
+}
+
+-- Change breakpoint icons
+-- vim.api.nvim_set_hl(0, 'DapBreak', { fg = '#e51400' })
+-- vim.api.nvim_set_hl(0, 'DapStop', { fg = '#ffcc00' })
+-- local breakpoint_icons = vim.g.have_nerd_font
+-- and { Breakpoint = '', BreakpointCondition = '', BreakpointRejected = '', LogPoint = '', Stopped = '' }
+-- or { Breakpoint = '●', BreakpointCondition = '⊜', BreakpointRejected = '⊘', LogPoint = '◆', Stopped = '⭔' }
+-- for type, icon in pairs(breakpoint_icons) do
+-- local tp = 'Dap' .. type
+-- local hl = (type == 'Stopped') and 'DapStop' or 'DapBreak'
+-- vim.fn.sign_define(tp, { text = icon, texthl = hl, numhl = hl })
+-- end
+
+dap.listeners.after.event_initialized['dapui_config'] = dapui.open
+dap.listeners.before.event_terminated['dapui_config'] = dapui.close
+dap.listeners.before.event_exited['dapui_config'] = dapui.close
+
+-- Install golang specific config
+require('dap-go').setup {
+ delve = {
+ -- On Windows delve must be run attached or it crashes.
+ -- See https://github.com/leoluz/nvim-dap-go/blob/main/README.md#configuring
+ detached = vim.fn.has 'win32' == 0,
+ },
+}
diff --git a/common/home/mosder/.config/nvim/lua/kickstart/plugins/gitsigns.lua b/common/home/mosder/.config/nvim/lua/kickstart/plugins/gitsigns.lua
new file mode 100644
index 0000000..b7e40a8
--- /dev/null
+++ b/common/home/mosder/.config/nvim/lua/kickstart/plugins/gitsigns.lua
@@ -0,0 +1,57 @@
+-- Adds git related signs to the gutter, as well as utilities for managing changes
+-- NOTE: gitsigns is already included in init.lua but contains only the base
+-- config. This will add also the recommended keymaps.
+
+vim.pack.add { 'https://github.com/lewis6991/gitsigns.nvim' }
+
+require('gitsigns').setup {
+ on_attach = function(bufnr)
+ local gitsigns = require 'gitsigns'
+
+ local function map(mode, l, r, opts)
+ opts = opts or {}
+ opts.buffer = bufnr
+ vim.keymap.set(mode, l, r, opts)
+ end
+
+ -- Navigation
+ map('n', ']c', function()
+ if vim.wo.diff then
+ vim.cmd.normal { ']c', bang = true }
+ else
+ gitsigns.nav_hunk 'next'
+ end
+ end, { desc = 'Jump to next git [c]hange' })
+
+ map('n', '[c', function()
+ if vim.wo.diff then
+ vim.cmd.normal { '[c', bang = true }
+ else
+ gitsigns.nav_hunk 'prev'
+ end
+ end, { desc = 'Jump to previous git [c]hange' })
+
+ -- Actions
+ -- visual mode
+ map('v', '<leader>hs', function() gitsigns.stage_hunk { vim.fn.line '.', vim.fn.line 'v' } end, { desc = 'git [s]tage hunk' })
+ map('v', '<leader>hr', function() gitsigns.reset_hunk { vim.fn.line '.', vim.fn.line 'v' } end, { desc = 'git [r]eset hunk' })
+ -- normal mode
+ map('n', '<leader>hs', gitsigns.stage_hunk, { desc = 'git [s]tage hunk' })
+ map('n', '<leader>hr', gitsigns.reset_hunk, { desc = 'git [r]eset hunk' })
+ map('n', '<leader>hS', gitsigns.stage_buffer, { desc = 'git [S]tage buffer' })
+ map('n', '<leader>hR', gitsigns.reset_buffer, { desc = 'git [R]eset buffer' })
+ map('n', '<leader>hp', gitsigns.preview_hunk, { desc = 'git [p]review hunk' })
+ map('n', '<leader>hi', gitsigns.preview_hunk_inline, { desc = 'git preview hunk [i]nline' })
+ map('n', '<leader>hb', function() gitsigns.blame_line { full = true } end, { desc = 'git [b]lame line' })
+ map('n', '<leader>hd', gitsigns.diffthis, { desc = 'git [d]iff against index' })
+ map('n', '<leader>hD', function() gitsigns.diffthis '@' end, { desc = 'git [D]iff against last commit' })
+ map('n', '<leader>hQ', function() gitsigns.setqflist 'all' end, { desc = 'git hunk [Q]uickfix list (all files in repo)' })
+ map('n', '<leader>hq', gitsigns.setqflist, { desc = 'git hunk [q]uickfix list (all changes in this file)' })
+ -- Toggles
+ map('n', '<leader>tb', gitsigns.toggle_current_line_blame, { desc = '[T]oggle git show [b]lame line' })
+ map('n', '<leader>tw', gitsigns.toggle_word_diff, { desc = '[T]oggle git intra-line [w]ord diff' })
+
+ -- Text object
+ map({ 'o', 'x' }, 'ih', gitsigns.select_hunk)
+ end,
+}
diff --git a/common/home/mosder/.config/nvim/lua/kickstart/plugins/indent_line.lua b/common/home/mosder/.config/nvim/lua/kickstart/plugins/indent_line.lua
new file mode 100644
index 0000000..7187365
--- /dev/null
+++ b/common/home/mosder/.config/nvim/lua/kickstart/plugins/indent_line.lua
@@ -0,0 +1,6 @@
+-- Add indentation guides even on blank lines
+
+-- Enable `lukas-reineke/indent-blankline.nvim`
+-- See `:help ibl`
+vim.pack.add { 'https://github.com/lukas-reineke/indent-blankline.nvim' }
+require('ibl').setup {}
diff --git a/common/home/mosder/.config/nvim/lua/kickstart/plugins/lint.lua b/common/home/mosder/.config/nvim/lua/kickstart/plugins/lint.lua
new file mode 100644
index 0000000..d630544
--- /dev/null
+++ b/common/home/mosder/.config/nvim/lua/kickstart/plugins/lint.lua
@@ -0,0 +1,53 @@
+-- Linting
+
+vim.pack.add { 'https://github.com/mfussenegger/nvim-lint' }
+
+local lint = require 'lint'
+lint.linters_by_ft = {
+ markdown = { 'markdownlint' }, -- Make sure to install `markdownlint` via mason / npm
+}
+
+-- To allow other plugins to add linters to require('lint').linters_by_ft,
+-- instead set linters_by_ft like this:
+-- lint.linters_by_ft = lint.linters_by_ft or {}
+-- lint.linters_by_ft['markdown'] = { 'markdownlint' }
+--
+-- However, note that this will enable a set of default linters,
+-- which will cause errors unless these tools are available:
+-- {
+-- clojure = { "clj-kondo" },
+-- dockerfile = { "hadolint" },
+-- inko = { "inko" },
+-- janet = { "janet" },
+-- json = { "jsonlint" },
+-- markdown = { "vale" },
+-- rst = { "vale" },
+-- ruby = { "ruby" },
+-- terraform = { "tflint" },
+-- text = { "vale" }
+-- }
+--
+-- You can disable the default linters by setting their filetypes to nil:
+-- lint.linters_by_ft['clojure'] = nil
+-- lint.linters_by_ft['dockerfile'] = nil
+-- lint.linters_by_ft['inko'] = nil
+-- lint.linters_by_ft['janet'] = nil
+-- lint.linters_by_ft['json'] = nil
+-- lint.linters_by_ft['markdown'] = nil
+-- lint.linters_by_ft['rst'] = nil
+-- lint.linters_by_ft['ruby'] = nil
+-- lint.linters_by_ft['terraform'] = nil
+-- lint.linters_by_ft['text'] = nil
+
+-- Create autocommand which carries out the actual linting
+-- on the specified events.
+local lint_augroup = vim.api.nvim_create_augroup('lint', { clear = true })
+vim.api.nvim_create_autocmd({ 'BufEnter', 'BufWritePost', 'InsertLeave' }, {
+ group = lint_augroup,
+ callback = function()
+ -- Only run the linter in buffers that you can modify in order to
+ -- avoid superfluous noise, notably within the handy LSP pop-ups that
+ -- describe the hovered symbol using Markdown.
+ if vim.bo.modifiable then lint.try_lint() end
+ end,
+})
diff --git a/common/home/mosder/.config/nvim/lua/kickstart/plugins/neo-tree.lua b/common/home/mosder/.config/nvim/lua/kickstart/plugins/neo-tree.lua
new file mode 100644
index 0000000..d9d6993
--- /dev/null
+++ b/common/home/mosder/.config/nvim/lua/kickstart/plugins/neo-tree.lua
@@ -0,0 +1,26 @@
+-- Neo-tree is a Neovim plugin to browse the file system
+-- https://github.com/nvim-neo-tree/neo-tree.nvim
+
+local plugins = {
+ { src = 'https://github.com/nvim-neo-tree/neo-tree.nvim', version = vim.version.range '*' },
+ 'https://github.com/nvim-lua/plenary.nvim',
+ 'https://github.com/MunifTanjim/nui.nvim',
+}
+
+if vim.g.have_nerd_font then
+ table.insert(plugins, 'https://github.com/nvim-tree/nvim-web-devicons') -- not strictly required, but recommended
+end
+
+vim.pack.add(plugins)
+
+vim.keymap.set('n', '\\', '<Cmd>Neotree reveal<CR>', { desc = 'NeoTree reveal', silent = true })
+
+require('neo-tree').setup {
+ filesystem = {
+ window = {
+ mappings = {
+ ['\\'] = 'close_window',
+ },
+ },
+ },
+}