Added my NeoVim config.

This commit is contained in:
duma97
2025-11-15 21:21:50 +04:00
parent 70d2ac3c4d
commit 992e6832ad
20 changed files with 712 additions and 0 deletions
+5
View File
@@ -0,0 +1,5 @@
{
"diagnostics.globals": [
"vim"
]
}
Executable
+19
View File
@@ -0,0 +1,19 @@
-- Path for lazy.nvim plugin manager
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
if not (vim.uv or vim.loop).fs_stat(lazypath) then
vim.fn.system({
"git",
"clone",
"--filter=blob:none",
"https://github.com/folke/lazy.nvim.git",
"--branch=stable", -- latest stable release
lazypath,
})
end
vim.opt.rtp:prepend(lazypath)
vim.cmd("set number")
require("vim-options")
-- Load pywal colors early
pcall(function() vim.cmd("source ~/.cache/wal/colors-wal.vim") end)
require("lazy").setup("plugins")
vim.opt.termguicolors = true
+32
View File
@@ -0,0 +1,32 @@
{
"LuaSnip": { "branch": "master", "commit": "3732756842a2f7e0e76a7b0487e9692072857277" },
"alpha-nvim": { "branch": "main", "commit": "3979b01cb05734331c7873049001d3f2bb8477f4" },
"cmp-buffer": { "branch": "main", "commit": "b74fab3656eea9de20a9b8116afa3cfc4ec09657" },
"cmp-cmdline": { "branch": "main", "commit": "d126061b624e0af6c3a556428712dd4d4194ec6d" },
"cmp-nvim-lsp": { "branch": "main", "commit": "cbc7b02bb99fae35cb42f514762b89b5126651ef" },
"cmp-path": { "branch": "main", "commit": "c642487086dbd9a93160e1679a1327be111cbc25" },
"cmp_luasnip": { "branch": "master", "commit": "98d9cb5c2c38532bd9bdb481067b20fea8f32e90" },
"friendly-snippets": { "branch": "main", "commit": "572f5660cf05f8cd8834e096d7b4c921ba18e175" },
"gitsigns.nvim": { "branch": "main", "commit": "20ad4419564d6e22b189f6738116b38871082332" },
"lazy.nvim": { "branch": "main", "commit": "85c7ff3711b730b4030d03144f6db6375044ae82" },
"lualine.nvim": { "branch": "master", "commit": "3946f0122255bc377d14a59b27b609fb3ab25768" },
"markview.nvim": { "branch": "main", "commit": "8e6a30b728374eb244761a8027306f96c58eef8f" },
"mini.icons": { "branch": "main", "commit": "ff2e4f1d29f659cc2bad0f9256f2f6195c6b2428" },
"neo-tree.nvim": { "branch": "v3.x", "commit": "f3df514fff2bdd4318127c40470984137f87b62e" },
"noice.nvim": { "branch": "main", "commit": "7bfd942445fb63089b59f97ca487d605e715f155" },
"nui.nvim": { "branch": "main", "commit": "de740991c12411b663994b2860f1a4fd0937c130" },
"nvim-autopairs": { "branch": "master", "commit": "7a2c97cccd60abc559344042fefb1d5a85b3e33b" },
"nvim-cmp": { "branch": "main", "commit": "d78fb3b64eedb701c9939f97361c06483af575e0" },
"nvim-colorizer.lua": { "branch": "master", "commit": "a065833f35a3a7cc3ef137ac88b5381da2ba302e" },
"nvim-notify": { "branch": "master", "commit": "8701bece920b38ea289b457f902e2ad184131a5d" },
"nvim-treesitter": { "branch": "master", "commit": "42fc28ba918343ebfd5565147a42a26580579482" },
"nvim-web-devicons": { "branch": "master", "commit": "8dcb311b0c92d460fac00eac706abd43d94d68af" },
"plenary.nvim": { "branch": "master", "commit": "b9fd5226c2f76c951fc8ed5923d85e4de065e509" },
"pywal.nvim": { "branch": "main", "commit": "d11b673c0e3d6eb8cbee7ea8cf4a8911f6ee24b9" },
"snacks.nvim": { "branch": "main", "commit": "3c5c23ba91e608bd89bb36d76cb005aa63d20dbf" },
"tabline.nvim": { "branch": "main", "commit": "ff33d12a20d52daafa5393162cae4108faf8128b" },
"telescope-ui-select.nvim": { "branch": "master", "commit": "6e51d7da30bd139a6950adf2a47fda6df9fa06d2" },
"telescope.nvim": { "branch": "master", "commit": "a0bbec21143c7bc5f8bb02e0005fa0b982edc026" },
"typr": { "branch": "main", "commit": "584e4ef34dea25a4035627794322f315b22d1253" },
"volt": { "branch": "main", "commit": "620de1321f275ec9d80028c68d1b88b409c0c8b1" }
}
+91
View File
@@ -0,0 +1,91 @@
return {
"goolord/alpha-nvim",
dependencies = {
"nvim-tree/nvim-web-devicons",
},
config = function()
local dashboard = require("alpha.themes.dashboard")
-- Safely load wal colors without autocmds
-- pcall(function()
-- vim.cmd("source ~/.cache/wal/colors-wal.vim")
-- end)
local color9 = vim.g.color9 or "#ffffff"
local color3 = vim.g.color3 or "#ffffff"
local color4 = vim.g.color4 or "#ffffff"
local color5 = vim.g.color5 or "#ffffff"
local color6 = vim.g.color6 or "#ffffff"
-- helper function for utf8 chars
local function getCharLen(s, pos)
local byte = string.byte(s, pos)
if not byte then
return nil
end
return (byte < 0x80 and 1) or (byte < 0xE0 and 2) or (byte < 0xF0 and 3) or (byte < 0xF8 and 4) or 1
end
local function applyColors(logo, colors, logoColors)
dashboard.section.header.val = logo
for key, color in pairs(colors) do
local name = "Alpha" .. key
vim.api.nvim_set_hl(0, name, color)
colors[key] = name
end
dashboard.section.header.opts.hl = {}
for i, line in ipairs(logoColors) do
local highlights = {}
local pos = 0
for j = 1, #line do
local opos = pos
pos = pos + getCharLen(logo[i], opos + 1)
local color_name = colors[line:sub(j, j)]
if color_name then
table.insert(highlights, { color_name, opos, pos })
end
end
table.insert(dashboard.section.header.opts.hl, highlights)
end
return dashboard.opts
end
require("alpha").setup(applyColors({
[[███████╗ ██████╗ ]],
[[██╔════╝ ██╔═══╝ ]],
[[█████╗ ██████╗ ]],
[[██╔══╝ ██╔═══╝ ]],
[[███████╗ ██║ ]],
[[╚══════╝ ╚═╝ ]],
[[N E O V I M ]],
}, {
["a"] = { fg = color9, ctermfg = 33},
["b"] = { fg = color3, ctermfg = 33},
["c"] = { fg = color4, ctermfg = 33},
["d"] = { fg = color5, ctermfg = 33},
["e"] = { fg = color6, ctermfg = 33},
}, {
[[bbbbbbba cccccca ]],
[[bbaaaaaa ccaaaaa ]],
[[bbbbba cccccca ]],
[[bbaaaa ccaaaaa ]],
[[bbbbbbba cca ]],
[[aaaaaaaa aaa ]],
[[d d d e e e ]],
}))
dashboard.section.buttons.val = {
dashboard.button( "e", " > New file" , ":ene <BAR> startinsert <CR>"),
dashboard.button( "f", "󰱼 > Find file", ":lua require('telescope.builtin').find_files({ find_command = { 'rg', '--files' } })<CR>"),
dashboard.button( "F", "󰥨 > Find folder", ":lua search_and_scope_into_directory()<CR>"),
dashboard.button( "r", " > Recent" , ":Telescope oldfiles<CR>"),
dashboard.button( "c", " > Config" , ":cd ~/.config/nvim | Telescope find_files<CR>"),
dashboard.button( "l", "󰒲 > Lazy", ":Lazy<CR>"),
dashboard.button( "h", " > Settings" , ":cd ~/.config/hypr | Telescope find_files<CR>"),
dashboard.button( "q", " > Quit", ":qa<CR>"),
}
dashboard.section.footer.val = {
"",
"Welcome!",
}
end,
}
+7
View File
@@ -0,0 +1,7 @@
return {
'windwp/nvim-autopairs',
event = "InsertEnter",
config = true,
-- use opts = {} for passing setup options
-- this is equivalent to setup({}) function
}
+38
View File
@@ -0,0 +1,38 @@
return {
"folke/noice.nvim",
event = "VeryLazy",
opts = {
-- add any options here
},
dependencies = {
"MunifTanjim/nui.nvim",
"rcarriga/nvim-notify",
},
config = function()
vim.cmd("source ~/.cache/wal/colors-wal.vim")
local color9 = vim.g.color9 or "#808080"
local color5 = vim.g.color5 or "#ffffff"
require("noice").setup({
lsp = {
override = {
["vim.lsp.util.convert_input_to_markdown_lines"] = true,
["vim.lsp.util.stylize_markdown"] = true,
["cmp.entry.get_documentation"] = true,
},
},
presets = {
bottom_search = false,
command_palette = true,
long_message_to_split = true,
inc_rename = false,
lsp_doc_border = false,
},
})
vim.cmd('highlight NoiceCmdlineIcon guifg=' .. color9)
vim.cmd('highlight NoiceCmdlinePopupBorder guifg=' .. color5)
vim.cmd('highlight NotifyINFOBorder guifg=' .. color5)
vim.cmd('highlight NotifyINFOIcon guifg=' .. color9)
vim.cmd('highlight NotifyINFOTitle guifg=' .. color5)
end,
}
+23
View File
@@ -0,0 +1,23 @@
-- return {
-- "ellisonleao/gruvbox.nvim",
-- lazy = false,
-- name = "gruvbox",
-- priority = 997,
-- config = function()
-- vim.cmd.colorscheme("gruvbox")
-- end,
-- }
return {
"AlphaTechnolog/pywal.nvim",
lazy = false,
priority = 1000,
config = function()
-- Set up pywal and load the colors
require("pywal").setup()
end,
}
+104
View File
@@ -0,0 +1,104 @@
return {
{
"hrsh7th/cmp-nvim-lsp",
},
{
"hrsh7th/cmp-buffer",
},
{
"hrsh7th/cmp-path",
},
{
"hrsh7th/cmp-cmdline",
},
{
"L3MON4D3/LuaSnip",
dependencies = {
"saadparwaiz1/cmp_luasnip",
"rafamadriz/friendly-snippets",
},
},
{
"hrsh7th/nvim-cmp",
config = function()
local cmp = require("cmp")
local luasnip = require("luasnip")
require("luasnip.loaders.from_vscode").lazy_load()
cmp.setup({
snippet = {
expand = function(args)
luasnip.lsp_expand(args.body)
end,
},
window = {
completion = cmp.config.window.bordered(),
documentation = cmp.config.window.bordered(),
},
mapping = cmp.mapping.preset.insert({
["<C-b>"] = cmp.mapping.scroll_docs(-4),
["<C-f>"] = cmp.mapping.scroll_docs(4),
["<C-Space>"] = cmp.mapping.complete(),
["<C-e>"] = cmp.mapping.abort(),
["<CR>"] = cmp.mapping.confirm({ select = true }),
["<Tab>"] = cmp.mapping(function(fallback)
if cmp.visible() then
cmp.select_next_item()
elseif luasnip.expand_or_jumpable() then
luasnip.expand_or_jump()
else
fallback()
end
end, { "i", "s" }),
["<S-Tab>"] = cmp.mapping(function(fallback)
if cmp.visible() then
cmp.select_prev_item()
elseif luasnip.jumpable(-1) then
luasnip.jump(-1)
else
fallback()
end
end, { "i", "s" }),
}),
sources = cmp.config.sources({
{ name = "nvim_lsp", priority = 1000 },
{ name = "luasnip", priority = 750 },
{ name = "buffer", priority = 500 },
{ name = "path", priority = 250 },
}),
formatting = {
format = function(entry, vim_item)
vim_item.menu = ({
nvim_lsp = "[LSP]",
luasnip = "[Snippet]",
buffer = "[Buffer]",
path = "[Path]",
})[entry.source.name]
return vim_item
end,
},
experimental = {
ghost_text = true,
},
})
-- Use buffer source for `/` and `?` (search)
cmp.setup.cmdline({ "/", "?" }, {
mapping = cmp.mapping.preset.cmdline(),
sources = {
{ name = "buffer" },
},
})
-- Use cmdline & path source for ':' (command mode)
cmp.setup.cmdline(":", {
mapping = cmp.mapping.preset.cmdline(),
sources = cmp.config.sources({
{ name = "path" },
}, {
{ name = "cmdline" },
}),
})
end,
},
}
+8
View File
@@ -0,0 +1,8 @@
return {
'norcalli/nvim-colorizer.lua',
config = function()
require('colorizer').setup {
'*'
}
end
}
+56
View File
@@ -0,0 +1,56 @@
return {
"lewis6991/gitsigns.nvim", -- Add a comma here
config = function()
require('gitsigns').setup {
signs = {
add = { text = '' },
change = { text = '' },
delete = { text = '_' },
topdelete = { text = '' },
changedelete = { text = '~' },
untracked = { text = '' },
},
signs_staged = {
add = { text = '' },
change = { text = '' },
delete = { text = '_' },
topdelete = { text = '' },
changedelete = { text = '~' },
untracked = { text = '' },
},
signs_staged_enable = true,
signcolumn = true, -- Toggle with `:Gitsigns toggle_signs`
numhl = false, -- Toggle with `:Gitsigns toggle_numhl`
linehl = false, -- Toggle with `:Gitsigns toggle_linehl`
word_diff = false, -- Toggle with `:Gitsigns toggle_word_diff`
watch_gitdir = {
follow_files = true
},
auto_attach = true,
attach_to_untracked = false,
current_line_blame = false, -- Toggle with `:Gitsigns toggle_current_line_blame`
current_line_blame_opts = {
virt_text = true,
virt_text_pos = 'eol', -- 'eol' | 'overlay' | 'right_align'
delay = 1000,
ignore_whitespace = false,
virt_text_priority = 100,
use_focus = true,
},
current_line_blame_formatter = '<author>, <author_time:%R> - <summary>',
sign_priority = 6,
update_debounce = 100,
status_formatter = nil, -- Use default
max_file_length = 40000, -- Disable if file is longer than this (in lines)
preview_config = {
-- Options passed to nvim_open_win
border = 'single',
style = 'minimal',
relative = 'cursor',
row = 0,
col = 1
},
}
end
}
+19
View File
@@ -0,0 +1,19 @@
return {
"echasnovski/mini.icons",
lazy = true,
opts = {
file = {
[".keep"] = { glyph = "󰊢", hl = "MiniIconsGrey" },
["devcontainer.json"] = { glyph = "", hl = "MiniIconsAzure" },
},
filetype = {
dotenv = { glyph = "", hl = "MiniIconsYellow" },
},
},
init = function()
package.preload["nvim-web-devicons"] = function()
require("mini.icons").mock_nvim_web_devicons()
return package.loaded["nvim-web-devicons"]
end
end,
}
+55
View File
@@ -0,0 +1,55 @@
return {
"nvim-lualine/lualine.nvim",
dependencies = { "nvim-tree/nvim-web-devicons","kdheepak/tabline.nvim" },
config = function()
require('lualine').setup {
options = {
icons_enabled = true,
theme = 'auto',
component_separators = {'', ''},
section_separators = { left = '', right = '' },
disabled_filetypes = {
statusline = {},
winbar = {},
},
ignore_focus = {},
always_divide_middle = true,
always_show_tabline = true,
globalstatus = false,
refresh = {
statusline = 100,
tabline = 100,
winbar = 100,
}
},
sections = {
lualine_a = {'mode'},
lualine_b = {'branch'},
lualine_c = {},
lualine_x = {'filetype'},
lualine_y = {'progress'},
lualine_z = {'location'}
},
inactive_sections = {
lualine_a = {},
lualine_b = {},
lualine_c = {'filename'},
lualine_x = {},
lualine_y = {},
lualine_z = {}
},
tabline = {
lualine_a = {},
lualine_b = {},
lualine_c = { require'tabline'.tabline_buffers },
lualine_x = { require'tabline'.tabline_tabs },
lualine_y = {},
lualine_z = {},
},
winbar = {},
inactive_winbar = {},
extensions = {}
}
end,
}
+4
View File
@@ -0,0 +1,4 @@
return {
"OXY2DEV/markview.nvim",
lazy = false
};
+41
View File
@@ -0,0 +1,41 @@
return {
"nvim-neo-tree/neo-tree.nvim",
branch = "v3.x",
dependencies = {
"nvim-lua/plenary.nvim",
"nvim-tree/nvim-web-devicons",
"MunifTanjim/nui.nvim",
},
config = function()
require("neo-tree").setup({
close_if_last_window = false,
popup_border_style = "rounded",
enable_git_status = true,
enable_diagnostics = true,
filesystem = {
filtered_items = {
visible = false,
hide_dotfiles = false,
hide_gitignored = false,
},
follow_current_file = {
enabled = false,
},
use_libuv_file_watcher = true,
},
window = {
position = "left",
width = 30,
},
event_handlers = {
{
event = "file_opened",
handler = function()
require("neo-tree.command").execute({ action = "close" })
end,
},
},
})
vim.keymap.set("n", "<C-n>", ":Neotree filesystem reveal left<CR>")
end,
}
+61
View File
@@ -0,0 +1,61 @@
return {
"folke/snacks.nvim",
priority = 1000,
lazy = false,
---@type snacks.Config
opts = {
bigfile = { enabled = true },
indent = { enabled = true },
input = { enabled = true },
quickfile = { enabled = true },
scroll = { enabled = true },
statuscolumn = { enabled = true },
words = { enabled = true },
},
keys = {
{ "<leader>z", function() Snacks.zen() end, desc = "Toggle Zen Mode" },
{ "<leader>s", function() Snacks.scratch() end, desc = "Toggle Scratch Buffer" },
{ "<leader>S", function() Snacks.scratch.select() end, desc = "Select Scratch Buffer" },
{ "<c-/>", function() Snacks.terminal() end, desc = "Toggle Terminal" },
{ "<leader>gB", function() Snacks.gitbrowse() end, desc = "Git Browse", mode = { "n", "v" } },
{ "<leader>gb", function() Snacks.git.blame_line() end, desc = "Git Blame Line" },
{ "<leader>gf", function() Snacks.lazygit.log_file() end, desc = "Lazygit Current File History" },
{ "<leader>gg", function() Snacks.lazygit() end, desc = "Lazygit" },
{ "<leader>gl", function() Snacks.lazygit.log() end, desc = "Lazygit Log (cwd)" },
{
"<leader>N",
desc = "Neovim News",
function()
Snacks.win({
file = vim.api.nvim_get_runtime_file("doc/news.txt", false)[1],
width = 0.6,
height = 0.8,
wo = {
spell = false,
wrap = false,
signcolumn = "yes",
statuscolumn = " ",
conceallevel = 3,
},
})
end,
}
},
init = function()
vim.api.nvim_create_autocmd("User", {
pattern = "VeryLazy",
callback = function()
_G.dd = function(...)
Snacks.debug.inspect(...)
end
_G.bt = function()
Snacks.debug.backtrace()
end
vim.print = _G.dd
-- Create some toggle mappings
Snacks.toggle.option("spell", { name = "Spelling" }):map("<leader>us")
Snacks.toggle.option("wrap", { name = "Wrap" }):map("<leader>uw")
end,
})
end,
}
+20
View File
@@ -0,0 +1,20 @@
return {
'kdheepak/tabline.nvim',
config = function()
require'tabline'.setup {
enable = true,
options = {
section_separators = { '', ''},
component_separators = {'|', "|"},
max_bufferline_percent = 80,
show_tabs_always = true,
show_devicons = true,
show_bufnr = false,
show_filename_only = true,
modified_italic = true,
show_tabs_only = false,
}
}
end,
requires = {'hoob3rt/lualine.nvim', 'kyazdani42/nvim-web-devicons'}
}
+89
View File
@@ -0,0 +1,89 @@
return {
{
"nvim-telescope/telescope.nvim",
tag = "0.1.8",
dependencies = { "nvim-lua/plenary.nvim" },
config = function()
local builtin = require("telescope.builtin")
vim.keymap.set("n", "<C-p>", builtin.find_files, {})
vim.keymap.set("n", "<A-f>", builtin.live_grep, {})
-- Function for searching and scoping into a directory
function search_and_scope_into_directory()
builtin.find_files({
prompt_title = "Search Directories",
find_command = {"fd", "--type", "d", "--hidden", "--follow"},
attach_mappings = function(prompt_bufnr, map)
local actions = require("telescope.actions")
actions.select_default:replace(function()
local selection = require("telescope.actions.state").get_selected_entry()
local selected_dir = selection.path
-- Change the current working directory to the selected directory
vim.cmd("cd " .. selected_dir)
actions.close(prompt_bufnr)
end)
return true
end,
})
end
-- Keybinding to trigger directory search and scoping
vim.keymap.set("n", "<A-d>", search_and_scope_into_directory)
end
},
{
"nvim-telescope/telescope-ui-select.nvim",
config = function()
require("telescope").setup({
extensions = {
["ui-select"] = {
require("telescope.themes").get_dropdown({}),
},
},
defaults = {
file_ignore_patterns = {
"node_modules", "build", "dist", "yarn.lock"
},
vimgrep_arguments = {
"rg",
"--follow",
"--hidden",
"--no-heading",
"--with-filename",
"--line-number",
"--column",
"--smart-case",
"--glob=!**/.git/*",
"--glob=!**/.idea/*",
"--glob=!**/.vscode/*",
"--glob=!**/build/*",
"--glob=!**/dist/*",
"--glob=!**/yarn.lock",
"--glob=!**/package-lock.json",
},
},
pickers = {
find_files = {
hidden = true,
find_command = {
"rg",
"--files",
"--hidden",
"--glob=!**/.git/*",
"--glob=!**/.idea/*",
"--glob=!**/.vscode/*",
"--glob=!**/build/*",
"--glob=!**/dist/*",
"--glob=!**/yarn.lock",
"--glob=!**/package-lock.json",
},
},
},
})
require("telescope").load_extension("ui-select")
end,
},
}
+12
View File
@@ -0,0 +1,12 @@
return {
"nvim-treesitter/nvim-treesitter",
build = ":TSUpdate",
config = function()
local config = require("nvim-treesitter.configs")
config.setup({
auto_install = false,
highlight = { enable = true },
indent = { enable = true },
})
end,
}
+12
View File
@@ -0,0 +1,12 @@
return {
"nvzone/typr",
dependencies = "nvzone/volt",
opts = {
kblayout = {
{ "q", "w", "e", "r", "t", "y", "u", "i", "o", "p" },
{ "a", "s", "d", "f", "g", "h", "j", "k", "l", ";" },
{ "z", "x", "c", "v", "b", "n", "m", ",", ".", "/" },
},
},
cmd = { "Typr", "TyprStats" },
}
+16
View File
@@ -0,0 +1,16 @@
-- Basic vim options
vim.opt.relativenumber = false
vim.opt.tabstop = 4
vim.opt.shiftwidth = 4
vim.opt.expandtab = true
vim.opt.smartindent = true
vim.opt.wrap = false
vim.opt.swapfile = false
vim.opt.backup = false
vim.opt.undofile = true
vim.opt.hlsearch = false
vim.opt.incsearch = true
vim.opt.termguicolors = true
vim.opt.scrolloff = 8
vim.opt.updatetime = 50
vim.opt.colorcolumn = "80"