Initial commit

This commit is contained in:
2025-10-14 19:12:58 +03:00
commit 03a71a5e16
83 changed files with 2457 additions and 0 deletions

4
dot_config/nvim/init.lua Normal file
View File

@ -0,0 +1,4 @@
require("config.lazy")
require("config.config")
require("config.options")
require("config.key_binds")

View File

@ -0,0 +1,29 @@
{
"Comment.nvim": { "branch": "master", "commit": "e30b7f2008e52442154b66f7c519bfd2f1e32acb" },
"catppuccin": { "branch": "main", "commit": "c89184526212e04feffbddda9d06b041a8fca416" },
"cmp-buffer": { "branch": "main", "commit": "b74fab3656eea9de20a9b8116afa3cfc4ec09657" },
"cmp-nvim-lsp": { "branch": "main", "commit": "bd5a7d6db125d4654b50eeae9f5217f24bb22fd3" },
"conform.nvim": { "branch": "master", "commit": "9d6f881a4047a51c7709223dcf24e967633c6523" },
"harpoon": { "branch": "master", "commit": "1bc17e3e42ea3c46b33c0bbad6a880792692a1b3" },
"indent-blankline.nvim": { "branch": "master", "commit": "005b56001b2cb30bfa61b7986bc50657816ba4ba" },
"lazy.nvim": { "branch": "main", "commit": "6c3bda4aca61a13a9c63f1c1d1b16b9d3be90d7a" },
"lualine.nvim": { "branch": "master", "commit": "b8c23159c0161f4b89196f74ee3a6d02cdc3a955" },
"mini.nvim": { "branch": "main", "commit": "126ce3328c78399dcff58272f6f540a373b62a75" },
"neo-tree.nvim": { "branch": "main", "commit": "9130e58424ad95bf2dd8b40afbb8cf04d648638c" },
"nui.nvim": { "branch": "main", "commit": "de740991c12411b663994b2860f1a4fd0937c130" },
"nvim-autopairs": { "branch": "master", "commit": "23320e75953ac82e559c610bec5a90d9c6dfa743" },
"nvim-cmp": { "branch": "main", "commit": "b5311ab3ed9c846b585c0c15b7559be131ec4be9" },
"nvim-dap": { "branch": "master", "commit": "7367cec8e8f7a0b1e4566af9a7ef5959d11206a7" },
"nvim-dap-python": { "branch": "master", "commit": "bfe572e4458e0ac876b9539a1e9f301c72db8ea0" },
"nvim-dap-ui": { "branch": "master", "commit": "cf91d5e2d07c72903d052f5207511bf7ecdb7122" },
"nvim-lspconfig": { "branch": "master", "commit": "db8fef885009fdec0daeff3e5dda92e1f539611e" },
"nvim-nio": { "branch": "master", "commit": "21f5324bfac14e22ba26553caf69ec76ae8a7662" },
"nvim-treesitter": { "branch": "master", "commit": "42fc28ba918343ebfd5565147a42a26580579482" },
"nvim-web-devicons": { "branch": "master", "commit": "b8221e42cf7287c4dcde81f232f58d7b947c210d" },
"plenary.nvim": { "branch": "master", "commit": "b9fd5226c2f76c951fc8ed5923d85e4de065e509" },
"render-markdown.nvim": { "branch": "main", "commit": "06c7598471911742e8816617a2afb9b2f29a808d" },
"telescope.nvim": { "branch": "master", "commit": "b4da76be54691e854d3e0e02c36b0245f945c2c7" },
"vim-fugitive": { "branch": "master", "commit": "61b51c09b7c9ce04e821f6cf76ea4f6f903e3cf4" },
"vim-suda": { "branch": "master", "commit": "9adda7d195222d4e2854efb2a88005a120296c47" },
"yanky.nvim": { "branch": "main", "commit": "04775cc6e10ef038c397c407bc17f00a2f52b378" }
}

View File

@ -0,0 +1,13 @@
do
local neovim_options = {
expandtab = true,
number = true,
shiftwidth = 2,
tabstop = 2,
termguicolors = true,
}
for k, v in pairs(neovim_options) do
vim.opt[k] = v
end
end

View File

@ -0,0 +1,16 @@
vim.cmd([[
tnoremap <C-h> <C-\\><C-o><C-w>h
tnoremap <C-k> <C-\\><C-o><C-w>k
tnoremap <C-l> <C-\\><C-o><C-w>l
tnoremap <C-j> <C-\\><C-o><C-w>j
nnoremap <C-h> <C-w>h
nnoremap <C-k> <C-w>k
nnoremap <C-l> <C-w>l
nnoremap <C-j> <C-w>j
nnoremap <Space> @q
nnoremap <C-Space> 
vnoremap <C-Space> 
vnoremap <leader>e :!sh<CR>
]])

View File

@ -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 = false },
})

View File

@ -0,0 +1,8 @@
vim.opt.clipboard = "unnamedplus"
vim.opt.fixeol = true
vim.opt.list = true
vim.opt.listchars = {
trail = "·",
tab = " ",
}

View File

@ -0,0 +1,47 @@
-- source https://github.com/neovim/nvim-lspconfig/issues/500#issuecomment-877293306
local export = {}
local function shorten_path(path)
if not path or #path <= 1 then
return path or "/"
end
local last_slash = path:match(".*/()")
if last_slash and last_slash > 1 then
return path:sub(1, last_slash - 2)
else
return "/"
end
end
function export.get_python_path()
local util = require("lspconfig/util")
local path = util.path
workspace = vim.fn.expand("%:p")
-- Use activated virtualenv.
if vim.env.VIRTUAL_ENV then
return path.join(vim.env.VIRTUAL_ENV, "bin", "python")
end
-- Find and use virtualenv via poetry in workspace directory.
while workspace ~= "" do
if workspace ~= "" then
local match = vim.fn.glob(path.join(workspace, "poetry.lock"))
if match ~= "" then
vim.api.nvim_set_current_dir(workspace)
local venv = vim.fn.trim(vim.fn.system("poetry env info -p 2> /dev/null"))
if venv ~= "" then
return path.join(venv, "bin", "python")
end
end
end
workspace = shorten_path(workspace)
end
-- Fallback to system Python.
return vim.fn.exepath("python3") or vim.fn.exepath("python") or "python"
end
return export

View File

@ -0,0 +1,7 @@
return {
"windwp/nvim-autopairs",
event = "InsertEnter",
config = function()
require("nvim-autopairs").setup({})
end,
}

View File

@ -0,0 +1,27 @@
return {
"lukas-reineke/indent-blankline.nvim",
config = function()
local highlight = {
-- "RainbowRed",
"RainbowYellow",
"RainbowBlue",
"RainbowOrange",
"RainbowGreen",
"RainbowViolet",
"RainbowCyan",
}
local hooks = require("ibl.hooks")
hooks.register(hooks.type.HIGHLIGHT_SETUP, function()
-- vim.api.nvim_set_hl(0, "RainbowRed", { fg = "#E06C75" })
vim.api.nvim_set_hl(0, "RainbowYellow", { fg = "#E5C07B" })
vim.api.nvim_set_hl(0, "RainbowBlue", { fg = "#61AFEF" })
vim.api.nvim_set_hl(0, "RainbowOrange", { fg = "#D19A66" })
vim.api.nvim_set_hl(0, "RainbowGreen", { fg = "#98C379" })
vim.api.nvim_set_hl(0, "RainbowViolet", { fg = "#C678DD" })
vim.api.nvim_set_hl(0, "RainbowCyan", { fg = "#56B6C2" })
end)
require("ibl").setup({ indent = { highlight = highlight } })
end,
}

View File

@ -0,0 +1,17 @@
return {
"catppuccin/nvim",
name = "catppuccin",
priority = 1000,
config = function()
require("catppuccin").setup({
flavour = "auto", -- latte, frappe, macchiato, mocha
background = { -- :h background
light = "latte",
dark = "mocha",
},
transparent_background = true,
})
vim.cmd.colorscheme("catppuccin")
end,
}

View File

@ -0,0 +1,34 @@
-- completion engine plugin for neovim
return {
"hrsh7th/nvim-cmp",
dependencies = {
"hrsh7th/cmp-nvim-lsp",
"hrsh7th/cmp-buffer",
},
config = function()
local cmp = require("cmp")
cmp.setup({
mapping = {
["<A-d>"] = cmp.mapping(function(fallback)
if cmp.visible_docs() then
cmp.close_docs()
elseif cmp.visible() then
cmp.open_docs()
else
fallback()
end
end),
["<A-j>"] = cmp.mapping(cmp.mapping.select_next_item(), { "i", "s" }),
["<A-k>"] = cmp.mapping(cmp.mapping.select_prev_item(), { "i", "s" }),
["<C-Space>"] = cmp.mapping.complete(),
["<Tab>"] = cmp.mapping.confirm({ select = true }),
},
snippet = {
expand = function(args)
vim.snippet.expand(args.body)
end,
},
sources = { { name = "nvim_lsp" }, { name = "buffer" } },
})
end,
}

View File

@ -0,0 +1,9 @@
return {
"numToStr/Comment.nvim",
config = function()
local comment = require("Comment")
comment.setup({
opleader = { line = "|" },
})
end,
}

View File

@ -0,0 +1,54 @@
return {
"stevearc/conform.nvim",
event = { "BufWritePre" },
cmd = { "ConformInfo" },
keys = {
{
-- Customize or remove this keymap to your liking
"<leader>F",
function()
require("conform").format({ async = true, lsp_fallback = true })
end,
mode = "",
desc = "Format buffer",
},
},
-- Everything in opts will be passed to setup()
opts = {
-- Define your formatters
formatters_by_ft = {
lua = { "stylua" },
python = { "ruff_organize_imports_only" },
javascript = { "prettierd", "prettier", stop_after_first = true },
sh = { "shfmt" },
json = { "prettierd", "prettier", stop_after_first = true },
jsonc = { "prettierd", "prettier", stop_after_first = true },
css = { "prettierd", "prettier", stop_after_first = true },
html = { "prettierd", "prettier", stop_after_first = true },
-- go = { "goimports", "gofmt" },
-- typescript = { "prettierd", "prettier", stop_after_first = true },
},
-- Custom formatters
formatters = {
ruff_organize_imports_only = {
command = "ruff",
args = {
"check",
"--select",
"I001",
"--fix",
"--stdin-filename",
"$FILENAME",
"-",
},
stdin = true,
},
},
-- Set up format-on-save
format_on_save = { timeout_ms = 500, lsp_fallback = true },
},
init = function()
-- If you want the formatexpr, here is the place to set it
vim.o.formatexpr = "v:lua.require'conform'.formatexpr()"
end,
}

View File

@ -0,0 +1,43 @@
return {
{
"mfussenegger/nvim-dap",
config = function()
local dap = require("dap")
vim.keymap.set("n", "<F5>", dap.continue, opts)
vim.keymap.set("n", "<s-F5>", dap.stop, opts)
vim.keymap.set("n", "<F9>", dap.toggle_breakpoint, opts)
end,
},
{
"rcarriga/nvim-dap-ui",
dependencies = { "mfussenegger/nvim-dap", "nvim-neotest/nvim-nio" },
config = function()
local dap, dapui = require("dap"), require("dapui")
dapui.setup()
dap.listeners.before.attach.dapui_config = function()
dapui.open()
end
dap.listeners.before.launch.dapui_config = function()
dapui.open()
end
dap.listeners.before.event_terminated.dapui_config = function()
dapui.close()
end
dap.listeners.before.event_exited.dapui_config = function()
dapui.close()
end
end,
},
{
"mfussenegger/nvim-dap-python",
dependencies = {
"mfussenegger/nvim-dap",
},
config = function()
local python_utils = require("functions.python")
local python_path = python_utils.get_python_path()
require("dap-python").setup(python_path)
end,
},
}

View File

@ -0,0 +1,19 @@
return {
"ThePrimeagen/harpoon",
branch = "harpoon2",
dependencies = {
"nvim-lua/plenary.nvim",
},
config = function()
-- local harpoon = require("harpoon")
-- harpoon.setup({
-- save_on_toggle = false,
-- save_on_change = true,
-- enter_on_sendcmd = false,
-- tmux_autoclose_windows = false,
-- excluded_filetypes = { "harpoon" },
-- mark_branch = false,
-- })
-- require("harpoon"):setup()
end,
}

View File

@ -0,0 +1,14 @@
return {
"tpope/vim-fugitive",
config = function()
vim.keymap.set("n", "<leader>p", function()
vim.cmd.Git("pull --rebase")
end, opts)
vim.keymap.set("n", "<leader>P", function()
vim.cmd.Git("push")
end, opts)
vim.keymap.set("n", "<leader>G", function()
vim.cmd.Git()
end, opts)
end,
}

View File

@ -0,0 +1,44 @@
return {
"neovim/nvim-lspconfig",
config = function()
vim.keymap.set("n", "gd", function()
vim.lsp.buf.definition()
end, opts)
vim.keymap.set("n", "gr", function()
vim.lsp.buf.references()
end, opts)
vim.keymap.set("n", "<C-i>", function()
vim.diagnostic.open_float()
end, opts)
vim.keymap.set("n", "K", function()
vim.lsp.buf.hover()
end, 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("v", "<leader>ca", vim.lsp.buf.code_action, opts)
local python_utils = require("functions.python")
local python_path = python_utils.get_python_path()
vim.lsp.config("ruff", {
settings = { interpreter = python_path },
})
vim.lsp.enable("ruff")
vim.lsp.config("basedpyright", {
settings = {
python = { pythonPath = python_path },
basedpyright = {
analysis = {
typeCheckingMode = "strict",
},
},
},
})
vim.lsp.enable("basedpyright")
vim.lsp.config("bashls", {
cmd = { "bash-language-server", "start" },
filetypes = { "bash", "sh" },
})
vim.lsp.enable("bashls")
end,
}

View File

@ -0,0 +1,7 @@
return {
"nvim-lualine/lualine.nvim",
dependencies = { "nvim-tree/nvim-web-devicons" },
config = function()
require("lualine").setup()
end,
}

View File

@ -0,0 +1,27 @@
return {
"nvim-neo-tree/neo-tree.nvim",
dependencies = {
"nvim-lua/plenary.nvim",
"nvim-tree/nvim-web-devicons",
"MunifTanjim/nui.nvim",
},
config = function()
local tree = require("neo-tree")
tree.setup({
document_symbols = {
custom_kinds = {},
},
window = {
width = 30,
mappings = {
["l"] = "open",
["h"] = "close_node",
["<Right>"] = "open",
["<Left>"] = "close_node",
},
},
})
vim.keymap.set("n", "<F2>", "<CMD>Neotree toggle<CR>")
end,
}

View File

@ -0,0 +1,5 @@
return {
"MeanderingProgrammer/render-markdown.nvim",
dependencies = { "nvim-treesitter/nvim-treesitter", "echasnovski/mini.nvim" },
opts = {},
}

View File

@ -0,0 +1,19 @@
return {
"nvim-telescope/telescope.nvim",
dependencies = {
"nvim-lua/plenary.nvim",
"gbprod/yanky.nvim",
},
config = function()
local builtin = require("telescope.builtin")
vim.keymap.set("n", "<leader>ff", builtin.find_files, opts)
vim.keymap.set("n", "<leader>fg", builtin.live_grep, opts)
vim.keymap.set("n", "<leader>fb", builtin.buffers, opts)
require("yanky").setup()
require("telescope").load_extension("yank_history")
vim.keymap.set("n", "<leader>fy", function()
vim.cmd.Telescope("yank_history")
end, opts)
end,
}

View File

@ -0,0 +1,22 @@
return {
"nvim-treesitter/nvim-treesitter",
config = function()
require("nvim-treesitter.configs").setup({
ensure_installed = {
"lua",
"python",
"yaml",
"markdown",
"bash",
},
sync_install = false,
auto_install = true,
highlight = {
enable = true,
additional_vim_regex_highlighting = false,
},
})
end,
}

View File

@ -0,0 +1,3 @@
return {
"lambdalisue/vim-suda",
}