Compare commits

2 Commits

28 changed files with 99 additions and 196 deletions

View File

@@ -1,6 +1,6 @@
repos: repos:
- repo: https://github.com/JohnnyMorganz/StyLua - repo: https://github.com/JohnnyMorganz/StyLua
rev: v2.5.2 rev: v2.3.0
hooks: hooks:
- id: stylua-system - id: stylua-system
args: [--check, --respect-ignores] args: [--check, --respect-ignores]

View File

@@ -1,6 +1,6 @@
MIT License MIT License
Copyright (c) 2025 Matej Janežič Copyright (c) Matej Janežič
Permission is hereby granted, free of charge, to any person obtaining a copy Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal of this software and associated documentation files (the "Software"), to deal

View File

@@ -2,4 +2,4 @@ vim.keymap.set("n", "<leader><leader>x", "<cmd>source %<CR>")
vim.keymap.set("n", "<leader>x", ":.lua<CR>") vim.keymap.set("n", "<leader>x", ":.lua<CR>")
vim.keymap.set("v", "<leader>x", ":lua<CR>") vim.keymap.set("v", "<leader>x", ":lua<CR>")
vim.opt_local.colorcolumn = "81" vim.opt_local.colorcolumn = { 81 }

View File

@@ -1 +1 @@
vim.opt_local.colorcolumn = "80,81,89" vim.opt_local.colorcolumn = { 80, 81, 89 }

View File

@@ -1 +1 @@
vim.opt_local.colorcolumn = "80,100" vim.opt_local.colorcolumn = { 80, 100 }

View File

@@ -1,5 +1,7 @@
return { return {
init_options = { settings = {
telemetry = "off", initializationOptions = {
telemetry = "off",
},
}, },
} }

View File

@@ -6,14 +6,13 @@ vim.g.loaded_netrw = 1
vim.g.loaded_netrwPlugin = 1 vim.g.loaded_netrwPlugin = 1
-- general -- general
vim.o.backup = false
vim.o.mouse = "" vim.o.mouse = ""
-- TODO:(janezicmatej) i think mouse scroll is binded to up/down and this -- TODO:(janezicmatej) i think mouse scroll is binded to up/down and this
-- deosn't always work -- deosn't always work
vim.o.mousescroll = "ver:0,hor:0" vim.o.mousescroll = "ver:0,hor:0"
vim.o.writebackup = false vim.o.writebackup = false
vim.o.undofile = true vim.o.undofile = true
vim.o.updatetime = 250
vim.o.timeoutlen = 300
-- ui -- ui
vim.o.breakindent = true vim.o.breakindent = true
@@ -28,18 +27,13 @@ vim.o.wrap = false
vim.o.winborder = "double" vim.o.winborder = "double"
-- editing -- editing
vim.o.autoindent = true
vim.o.expandtab = true vim.o.expandtab = true
vim.o.ignorecase = true vim.o.ignorecase = true
vim.o.smartcase = true vim.o.smartcase = true
-- diagnostic show virtual text -- diagnostic show virtual text
vim.diagnostic.config({ virtual_text = true }) vim.diagnostic.config({ virtual_text = true })
local function swap_diagnostic()
local virtext = vim.diagnostic.config().virtual_text
local virlines = vim.diagnostic.config().virtual_lines
vim.diagnostic.config({ virtual_text = not virtext, virtual_lines = not virlines })
end
vim.keymap.set("n", "<leader>dt", swap_diagnostic)
-- osc52 escape codes copy -- osc52 escape codes copy
local function ocs52_paste_fail() local function ocs52_paste_fail()
@@ -60,14 +54,11 @@ vim.g.clipboard = {
vim.o.completeopt = "menuone,noselect,fuzzy,nosort" vim.o.completeopt = "menuone,noselect,fuzzy,nosort"
-- default plus added dash
vim.o.iskeyword = "@,48-57,_,192-255,-"
vim.api.nvim_create_autocmd("TextYankPost", { vim.api.nvim_create_autocmd("TextYankPost", {
desc = "highlight when yanking text", desc = "highlight when yanking text",
group = vim.api.nvim_create_augroup("CustomHighlightYank", { clear = true }), group = vim.api.nvim_create_augroup("CustomHighlightYank", { clear = true }),
callback = function() vim.hl.hl_op() end, callback = function() vim.highlight.on_yank() end,
})
-- filetype overrides
vim.api.nvim_create_autocmd({ "BufRead", "BufNewFile" }, {
pattern = vim.fn.expand("~") .. "/.config/sway/**/*.conf",
callback = function() vim.bo.filetype = "swayconfig" end,
}) })

View File

@@ -1,6 +1,6 @@
-- bootstrap 'mini.nvim' manually in a way that it gets managed by 'mini.deps' -- bootstrap 'mini.nvim' manually in a way that it gets managed by 'mini.deps'
local mini_path = vim.fn.stdpath("data") .. "/site/pack/deps/start/mini.nvim" local mini_path = vim.fn.stdpath("data") .. "/site/pack/deps/start/mini.nvim"
if not vim.uv.fs_stat(mini_path) then if not vim.loop.fs_stat(mini_path) then
vim.cmd('echo "Installing `mini.nvim`" | redraw') vim.cmd('echo "Installing `mini.nvim`" | redraw')
local clone_cmd = { local clone_cmd = {
"git", "git",

View File

@@ -5,7 +5,6 @@ MiniDeps.now(function()
vim.g.gruvbox_material_background = "light" vim.g.gruvbox_material_background = "light"
vim.g.gruvbox_material_better_performance = 1 vim.g.gruvbox_material_better_performance = 1
vim.g.gruvbox_material_diagnostic_line_highlight = 1 vim.g.gruvbox_material_diagnostic_line_highlight = 1
vim.g.gruvbox_material_diagnostic_text_highlight = 1
vim.g.gruvbox_material_diagnostic_virtual_text = "colored" vim.g.gruvbox_material_diagnostic_virtual_text = "colored"
vim.g.gruvbox_material_enable_bold = 1 vim.g.gruvbox_material_enable_bold = 1
vim.g.gruvbox_material_enable_italic = 1 vim.g.gruvbox_material_enable_italic = 1

View File

@@ -16,13 +16,7 @@ now_if_args(function()
nix = true, nix = true,
python = true, python = true,
rust = true, rust = true,
sh = true,
typescript = true, typescript = true,
} }
-- remap default <M-\> to first close pumenu if open
local function suggest()
if vim.fn.pumvisible() == 1 then vim.fn.complete(vim.fn.col("."), {}) end
return vim.fn["copilot#Suggest"]()
end
vim.keymap.set("i", "<M-\\>", suggest)
end) end)

View File

@@ -1,11 +0,0 @@
MiniDeps.now(function()
MiniDeps.add("j-hui/fidget.nvim")
local opts = {
notification = {
override_vim_notify = true,
},
}
require("fidget").setup(opts)
end)

View File

@@ -1,8 +1,8 @@
MiniDeps.later(function() MiniDeps.later(function()
MiniDeps.add("ibhagwan/fzf-lua") MiniDeps.add("ibhagwan/fzf-lua")
local fzf_lua = require("fzf-lua") local fzf = require("fzf-lua")
fzf_lua.setup({ fzf.setup({
files = { files = {
no_ignore = true, no_ignore = true,
toggle_ignore_flag = "--no-ignore-vcs", toggle_ignore_flag = "--no-ignore-vcs",
@@ -13,12 +13,11 @@ MiniDeps.later(function()
}, },
}) })
vim.keymap.set("n", "<leader>sf", fzf_lua.files) vim.keymap.set("n", "<leader>sf", fzf.files)
vim.keymap.set("n", "<leader>sg", fzf_lua.live_grep) vim.keymap.set("n", "<leader>sg", fzf.live_grep)
vim.keymap.set("n", "<leader>sw", fzf_lua.grep_cword) vim.keymap.set("n", "<leader>sw", fzf.grep_cword)
vim.keymap.set("v", "<leader>sg", fzf_lua.grep_visual) vim.keymap.set("v", "<leader>sg", fzf.grep_visual)
vim.keymap.set("n", "<leader>sj", fzf_lua.jumps)
vim.keymap.set("n", "<leader>sh", fzf_lua.helptags) vim.keymap.set("n", "<leader>sr", fzf.resume)
vim.keymap.set("n", "<leader>sr", fzf_lua.resume) vim.keymap.set("n", "<leader>sb", fzf.builtin)
vim.keymap.set("n", "<leader>sb", fzf_lua.builtin)
end) end)

11
lua/plugins/git_blame.lua Normal file
View File

@@ -0,0 +1,11 @@
MiniDeps.later(function()
MiniDeps.add("f-person/git-blame.nvim")
require("gitblame").setup({
enabled = false,
message_template = " <sha>: <author> <date> <summary>",
date_format = "%Y-%m-%d",
})
vim.keymap.set("n", "<leader>gt", ":GitBlameToggle<CR>")
vim.keymap.set("n", "<leader>gs", ":GitBlameCopySHA<CR>")
end)

View File

@@ -1,8 +1,6 @@
MiniDeps.later(function() MiniDeps.later(function()
MiniDeps.add({ MiniDeps.add("nvim-lua/plenary.nvim")
source = "ruifm/gitlinker.nvim", MiniDeps.add("ruifm/gitlinker.nvim")
depends = { "nvim-lua/plenary.nvim" },
})
require("gitlinker").setup({ require("gitlinker").setup({
callbacks = { callbacks = {
["git.aflabs.org"] = require("gitlinker.hosts").get_gitlab_type_url, ["git.aflabs.org"] = require("gitlinker.hosts").get_gitlab_type_url,

View File

@@ -9,12 +9,4 @@ MiniDeps.later(function()
changedelete = { text = "~" }, changedelete = { text = "~" },
}, },
}) })
-- blame
vim.keymap.set({ "n", "v" }, "<leader>gb", ":Gitsigns blame<CR>")
vim.keymap.set({ "n", "v" }, "<leader>gt", ":Gitsigns blame_line<CR>")
-- hunks
vim.keymap.set({ "n", "v" }, "<leader>ga", ":Gitsigns stage_hunk<CR>")
vim.keymap.set({ "n", "v" }, "<leader>gr", ":Gitsigns reset_hunk<CR>")
end) end)

View File

@@ -58,36 +58,6 @@ MiniDeps.later(function()
"format" "format"
) )
local tD_dH = vim.lsp.protocol.Methods.textDocument_documentHighlight
if client and client:supports_method(tD_dH) then
local ag = vim.api.nvim_create_augroup
local ac = vim.api.nvim_create_autocmd
local g = ag("custom-lsp-tD_dH-highlight", { clear = false })
ac({ "CursorHold", "CursorHoldI" }, {
buffer = bufnr,
group = g,
callback = vim.lsp.buf.document_highlight,
})
ac({ "CursorMoved", "CursorMovedI" }, {
buffer = bufnr,
group = g,
callback = vim.lsp.buf.clear_references,
})
ac("LspDetach", {
group = ag("custom-lsp-detach", { clear = true }),
callback = function(e)
vim.lsp.buf.clear_references()
vim.api.nvim_clear_autocmds({
group = "custom-lsp-tD_dH-highlight",
buffer = e.buf,
})
end,
})
end
-- inlay hints -- inlay hints
if client and client.server_capabilities.inlayHintProvider then if client and client.server_capabilities.inlayHintProvider then
vim.lsp.inlay_hint.enable(true, { bufnr = bufnr }) vim.lsp.inlay_hint.enable(true, { bufnr = bufnr })

View File

@@ -1,12 +0,0 @@
MiniDeps.later(function()
require("mini.cursorword").setup()
local function disable(args)
local client = vim.lsp.get_client_by_id(args.data.client_id)
local tD_dH = vim.lsp.protocol.Methods.textDocument_documentHighlight
if client and not client:supports_method(tD_dH) then return end
vim.b[args.buf].minicursorword_disable = true
end
vim.api.nvim_create_autocmd("LspAttach", { callback = disable })
end)

View File

@@ -1,4 +1,5 @@
MiniDeps.now(function() MiniDeps.now(function()
require("mini.icons").setup() require("mini.icons").setup()
MiniIcons.mock_nvim_web_devicons()
MiniIcons.tweak_lsp_kind() MiniIcons.tweak_lsp_kind()
end) end)

View File

@@ -1,24 +1,10 @@
MiniDeps.later(function() MiniDeps.later(
require("mini.indentscope").setup({ function()
draw = { require("mini.indentscope").setup({
delay = 0, draw = {
animation = require("mini.indentscope").gen_animation.none(), delay = 0,
}, animation = require("mini.indentscope").gen_animation.none(),
}) },
})
local disable = {
"fzf",
"fzflua_backdrop",
"qf",
}
local function term_disable(args) vim.b[args.buf].miniindentscope_disable = true end
local function ft_disable(args)
local ft = vim.bo[args.buf].filetype
if not vim.tbl_contains(disable, ft) then return end
vim.b[args.buf].miniindentscope_disable = true
end end
)
vim.api.nvim_create_autocmd("TermOpen", { callback = term_disable })
vim.api.nvim_create_autocmd("Filetype", { callback = ft_disable })
end)

View File

@@ -0,0 +1,4 @@
MiniDeps.now(function()
require("mini.notify").setup()
vim.notify = MiniNotify.make_notify()
end)

View File

@@ -0,0 +1 @@
MiniDeps.later(function() require("mini.pairs").setup() end)

View File

@@ -1 +1,13 @@
MiniDeps.later(function() require("mini.snippets").setup() end) MiniDeps.later(function()
local gen_loader = require("mini.snippets").gen_loader
require("mini.snippets").setup({
snippets = {
-- Load custom file with global snippets first (adjust for Windows)
gen_loader.from_file("~/.config/nvim/snippets/global.json"),
-- Load snippets based on current language by reading files from
-- "snippets/" subdirectories from 'runtimepath' directories.
gen_loader.from_lang(),
},
})
end)

View File

@@ -2,7 +2,7 @@ local function default_header()
local hour = tonumber(vim.fn.strftime("%H")) local hour = tonumber(vim.fn.strftime("%H"))
local part_id = math.floor((hour + 4) / 8) + 1 local part_id = math.floor((hour + 4) / 8) + 1
local day_part = ({ "evening", "morning", "afternoon", "evening" })[part_id] local day_part = ({ "evening", "morning", "afternoon", "evening" })[part_id]
local username = vim.uv.os_get_passwd()["username"] or "USERNAME" local username = vim.loop.os_get_passwd()["username"] or "USERNAME"
return ("good %s, %s"):format(day_part, username) return ("good %s, %s"):format(day_part, username)
end end
@@ -12,60 +12,24 @@ local function reinstall_treesitter()
ts.install(ts.get_installed(), { force = true }) ts.install(ts.get_installed(), { force = true })
end end
local function deps_section()
local mini_deps = require("mini.deps")
local nr_deps = #vim.iter(mini_deps):enumerate():totable()
local items = {
{
name = "number of dependencies " .. nr_deps,
action = "",
section = "dependencies",
},
}
local function mk_dep_item(name, action)
return { name = name, action = action, section = "dependencies" }
end
local deps_actions = {
mk_dep_item("update dependencies", "DepsUpdate"),
mk_dep_item("snap dependencies", "DepsSnapSave"),
mk_dep_item("load dependencies", "DepsSnapLoad"),
mk_dep_item("clean dependencies", "DepsClean"),
}
if vim.fn.getcwd() == vim.fn.stdpath("config") then
for _, item in ipairs(deps_actions) do
table.insert(items, item)
end
end
return items
end
MiniDeps.now(function() MiniDeps.now(function()
local builtins = {
{ name = "edit new buffer", action = "enew", section = "builtin actions" },
{ name = "quit neovim", action = "qall", section = "builtin actions" },
}
require("mini.starter").setup({ require("mini.starter").setup({
query_updaters = "abcdefghijklmnopqrstuvwxyz0123456789_.", query_updaters = "abcdefghijklmnopqrstuvwxyz0123456789_.",
evaluate_single = true, evaluate_single = true,
header = default_header, header = default_header,
footer = "", footer = "",
items = { items = {
--stylua: ignore start
-- builtins -- builtins
builtins, { name = "edit new buffer", action = "enew", section = "builtin actions" },
{ name = "quit neovim", action = "qall", section = "builtin actions" },
-- dependencies -- dependencies
deps_section, { name = "update dependencies", action = "DepsUpdate", section = "dependencies" },
{ name = "snap dependencies", action = "DepsSnapSave", section = "dependencies" },
{ name = "load dependencies", action = "DepsSnapLoad", section = "dependencies" },
-- debug -- debug
{ { name = "reinstall treesitter parsers", action = reinstall_treesitter, section = "debug" },
name = "reinstall treesitter parsers", --stylua: ignore end
action = reinstall_treesitter,
section = "debug",
},
}, },
}) })
end) end)

View File

@@ -1,4 +0,0 @@
MiniDeps.later(function()
MiniDeps.add("windwp/nvim-autopairs")
require("nvim-autopairs").setup()
end)

View File

@@ -1,7 +1,5 @@
MiniDeps.now(function() MiniDeps.now(function()
MiniDeps.add({ MiniDeps.add("folke/todo-comments.nvim")
source = "folke/todo-comments.nvim", MiniDeps.add("nvim-lua/plenary.nvim")
depends = { "nvim-lua/plenary.nvim" },
})
require("todo-comments").setup() require("todo-comments").setup()
end) end)

View File

@@ -3,6 +3,7 @@ local now_if_args = vim.fn.argc(-1) > 0 and MiniDeps.now or MiniDeps.later
now_if_args(function() now_if_args(function()
MiniDeps.add({ MiniDeps.add({
source = "nvim-treesitter/nvim-treesitter", source = "nvim-treesitter/nvim-treesitter",
checkout = "main",
hooks = { post_checkout = function() vim.cmd("TSUpdate") end }, hooks = { post_checkout = function() vim.cmd("TSUpdate") end },
}) })

View File

@@ -1,17 +1,16 @@
return { return {
["copilot.vim"] = "a12fd5672110c8aa7e3c8419e28c96943ca179be", ["copilot.vim"] = "da369d90cfd6c396b1d0ec259836a1c7222fb2ea",
["fidget.nvim"] = "9e0201673e08e997e7cf52afca5565c70bd117f3", ["fzf-lua"] = "db3ccffe79480543d8e0f7b0cac0d9b220f9486e",
["fzf-lua"] = "13bb178a299f7493dd64427a58e61904c4b58ecb", ["git-blame.nvim"] = "54da04264ec5313d602aebea7c5dc90141696ad7",
["gitlinker.nvim"] = "cc59f732f3d043b626c8702cb725c82e54d35c25", ["gitlinker.nvim"] = "cc59f732f3d043b626c8702cb725c82e54d35c25",
["gitsigns.nvim"] = "8d79f2410c76e62b92e51c28c82e28c1c5a3daeb", ["gitsigns.nvim"] = "1ee5c1fd068c81f9dd06483e639c2aa4587dc197",
["gruvbox-material"] = "11d779b26a9ab2b3db8c22c6ac9fb6e8ed4fea79", ["gruvbox-material"] = "834dbf21836862300ced7444db4262b796330ab7",
["guess-indent.nvim"] = "84a4987ff36798c2fc1169cbaff67960aed9776f", ["guess-indent.nvim"] = "84a4987ff36798c2fc1169cbaff67960aed9776f",
["mini.nvim"] = "4389a4f31f854ce066949ea89c72dc71564f5c20", ["mini.nvim"] = "5e1dd6e3d5f758eccf6c51461559da785dba688c",
["nvim-autopairs"] = "430522f95fe4fb7c511ec64f8c1a90cc6a66c05c", ["nvim-lspconfig"] = "ac98db2f9f06a56498ec890a96928774eae412c3",
["nvim-lspconfig"] = "ffd261c09c3dabd0bf1a438f47a8ae3b22f3c3ff", ["nvim-treesitter"] = "0606c7a9dcaa5c5beee0b0f09043e9fdd1ba0a68",
["nvim-treesitter"] = "f603a2f4da48728f80257fb5fbb90145fd1dc173", ["oil.nvim"] = "919e155fdf38e9148cdb5304faaaf53c20d703ea",
["oil.nvim"] = "b73018b75affd13fa38e2fc94ef753b465f770d7", ["plenary.nvim"] = "b9fd5226c2f76c951fc8ed5923d85e4de065e509",
["plenary.nvim"] = "74b06c6c75e4eeb3108ec01852001636d85a932b", ["rainbow-delimiters.nvim"] = "3277ad5f96eb03c9d618c88e24f683e4364e578c",
["rainbow-delimiters.nvim"] = "3a0fc08dd39e8bf034a4cfef3f2845bd5f565a2e", ["todo-comments.nvim"] = "19d461ddd543e938eb22505fb03fa878800270b6"
["todo-comments.nvim"] = "31e3c38ce9b29781e4422fc0322eb0a21f4e8668"
} }

8
plugin/diagswap.lua Normal file
View File

@@ -0,0 +1,8 @@
local state = true
local function swap()
vim.diagnostic.config({ virtual_text = not state, virtual_lines = state })
state = not state
end
vim.keymap.set("n", "<leader>dt", swap)