Compare commits

11 Commits

11 changed files with 155 additions and 41 deletions

View File

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

View File

@@ -13,6 +13,9 @@ vim.o.mouse = ""
vim.o.mousescroll = "ver:0,hor:0"
vim.o.writebackup = false
vim.o.undofile = true
vim.o.updatetime = 250
vim.o.timeout = true
vim.o.timeoutlen = 300
-- ui
vim.o.breakindent = true

View File

@@ -5,6 +5,7 @@ MiniDeps.now(function()
vim.g.gruvbox_material_background = "light"
vim.g.gruvbox_material_better_performance = 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_enable_bold = 1
vim.g.gruvbox_material_enable_italic = 1

View File

@@ -1,22 +1,79 @@
local now_if_args = vim.fn.argc(-1) > 0 and MiniDeps.now or MiniDeps.later
MiniDeps.later(function()
MiniDeps.add("zbirenbaum/copilot.lua")
-- TODO:(@janezicmatej) setup lsp nes
-- MiniDeps.add("copilotlsp-nvim/copilot-lsp")
now_if_args(function()
MiniDeps.add("github/copilot.vim")
local function no_attach_for_env()
if string.match(vim.fs.basename(vim.api.nvim_buf_get_name(0)), "^%.env.*") then
return false
end
return true
end
vim.g.copilot_filetypes = {
-- disable all and only allow specific filetyps
["*"] = false,
--
c = true,
cpp = true,
dockerfile = true,
go = true,
javascript = true,
lua = true,
nix = true,
python = true,
rust = true,
sh = true,
typescript = true,
local opts = {
panel = {
keymap = {
jump_prev = false,
jump_next = false,
accept = false,
refresh = false,
open = false,
},
},
suggestion = {
-- auto_trigger = true,
keymap = {
accept = false,
accept_word = false,
accept_line = false,
next = false,
prev = false,
dismiss = false,
},
},
filetypes = {
-- disable all and only allow specific filetyps
["*"] = false,
--
c = true,
cpp = true,
dockerfile = true,
go = true,
javascript = true,
lua = true,
nix = true,
python = true,
rust = true,
sh = no_attach_for_env,
bash = no_attach_for_env,
typescript = true,
},
}
require("copilot").setup(opts)
local suggestion = require("copilot.suggestion")
local function accept_if_visible()
vim.notify("is visible " .. (suggestion.is_visible() or "nil"))
if suggestion.is_visible() ~= nil then
suggestion.accept()
else
return "<Tab>"
end
end
local function close_pum_if_open(func)
return function()
if vim.fn.pumvisible() == 1 then vim.fn.complete(vim.fn.col("."), {}) end
return func()
end
end
-- stylua: ignore start
vim.keymap.set({ "i" }, "<Tab>", accept_if_visible, { desc = "copilot: accept suggestion", expr = true })
vim.keymap.set({ "n", "i" }, "<M-j>", suggestion.accept_line, { desc = "copilot: accept line" })
vim.keymap.set({ "n", "i" }, "<M-l>", close_pum_if_open(suggestion.next), { desc = "copilot: next suggestion" })
vim.keymap.set({ "n", "i" }, "<M-h>", close_pum_if_open(suggestion.prev), { desc = "copilot: previous suggestion" })
-- stylua: ignore start
end)

View File

@@ -1,11 +0,0 @@
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

@@ -9,4 +9,12 @@ MiniDeps.later(function()
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)

View File

@@ -58,6 +58,36 @@ MiniDeps.later(function()
"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
if client and client.server_capabilities.inlayHintProvider then
vim.lsp.inlay_hint.enable(true, { bufnr = bufnr })

View File

@@ -0,0 +1,12 @@
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,10 +1,24 @@
MiniDeps.later(
function()
require("mini.indentscope").setup({
draw = {
delay = 0,
animation = require("mini.indentscope").gen_animation.none(),
},
})
MiniDeps.later(function()
require("mini.indentscope").setup({
draw = {
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
)
vim.api.nvim_create_autocmd("TermOpen", { callback = term_disable })
vim.api.nvim_create_autocmd("Filetype", { callback = ft_disable })
end)

View File

@@ -27,6 +27,7 @@ MiniDeps.now(function()
{ name = "update dependencies", action = "DepsUpdate", section = "dependencies" },
{ name = "snap dependencies", action = "DepsSnapSave", section = "dependencies" },
{ name = "load dependencies", action = "DepsSnapLoad", section = "dependencies" },
{ name = "clean dependencies", action = "DepsClean", section = "dependencies" },
-- debug
{ name = "reinstall treesitter parsers", action = reinstall_treesitter, section = "debug" },
--stylua: ignore end

View File

@@ -1,7 +1,6 @@
return {
["copilot.vim"] = "da369d90cfd6c396b1d0ec259836a1c7222fb2ea",
["copilot.lua"] = "3123983d00ae6859f8bc987d14ebb524bb41b618",
["fzf-lua"] = "db3ccffe79480543d8e0f7b0cac0d9b220f9486e",
["git-blame.nvim"] = "54da04264ec5313d602aebea7c5dc90141696ad7",
["gitlinker.nvim"] = "cc59f732f3d043b626c8702cb725c82e54d35c25",
["gitsigns.nvim"] = "1ee5c1fd068c81f9dd06483e639c2aa4587dc197",
["gruvbox-material"] = "834dbf21836862300ced7444db4262b796330ab7",