04-01-2026

This commit is contained in:
2026-01-04 22:29:08 +04:00
parent 9572c0d939
commit 6b1f963f4f
34 changed files with 1201 additions and 550 deletions

View File

@@ -19,7 +19,7 @@ bspc config focused_border_color "$color2"
bspc config top_padding 30
telegram-desktop -startintray &
Telegram -startintray &
bspc rule -a TelegramDesktop desktop='^5'
bspc rule -a St_float state=pseudo_tiled

View File

@@ -75,7 +75,8 @@ ${color0}Hostname: $alignr${exec cat /etc/hostname}$color
${color0}Connection: $alignr\
${if_match "${exec nmcli -f name c s --active | awk 'FNR == 2' | xargs}" == "Wired connection 1"}Wired${else}${exec nmcli -f name c s --active | awk 'FNR == 2' | xargs}${endif}\
$color
${color0}Network speed: $alignr${upspeed}/${downspeed}$color
# ${color0}Speed up/down: $alignr${upspeed "${exec ip route show default 2>/dev/null | awk '/default/ {print $5; exit}'}"}/${downspeed "${exec ip route show default 2>/dev/null | awk '/default/ {print $5; exit}'}"}$color
# ${color0}Total up/down: $alignr${totalup exec ip route show default 2>/dev/null | awk '/default/ {print $5; exit}'}/${totaldown "${exec ip route show default 2>/dev/null | awk '/default/ {print $5; exit}'}"}$color
${color1}${goto 25}CPU${color0} $hr $color
${color0}Frequency (GHz): $alignr$freq_g$color

View File

@@ -26,7 +26,7 @@ conky.config = {
-- own_window_argb_value = 180,
-- Скорость обновления
update_interval = 1,
update_interval = 60,
cpu_avg_samples = 2,

24
.config/dunst/config.conf Normal file
View File

@@ -0,0 +1,24 @@
[global]
separator_color = frame
width = (50, 300)
height = (30, 60)
notification_limit = 5
offset = (5, 30)
padding = 8
gap_size = 4
font = CodeNewRoman Nerd Font Mono 10
[urgency_low]
background = "#1d2021"
foreground = "#d4be98"
frame_color = "#7daea3"
[urgency_normal]
background = "#1d2021"
foreground = "#d4be98"
frame_color = "#a9b665"
[urgency_critical]
background = "#3c1f1e"
foreground = "#ddc7a1"
frame_color = "#ea6962"

View File

@@ -1,41 +1,44 @@
{
"LuaSnip": { "branch": "master", "commit": "57c9f5c31b3d712376c704673eac8e948c82e9c1" },
"buffer_manager.nvim": { "branch": "main", "commit": "4fa47504a23d9a94216f02b1d84f7b0a2dbe2b72" },
"cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" },
"cmp-cmdline": { "branch": "main", "commit": "8ee981b4a91f536f52add291594e89fb6645e451" },
"cmp-nvim-lsp": { "branch": "main", "commit": "5af77f54de1b16c34b23cba810150689a3a90312" },
"cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" },
"cmp_luasnip": { "branch": "master", "commit": "05a9ab28b53f71d1aece421ef32fee2cb857a843" },
"fidget.nvim": { "branch": "main", "commit": "eb9fccf7fda8b641814f31d47926202f229980b3" },
"friendly-snippets": { "branch": "main", "commit": "53d3df271d031c405255e99410628c26a8f0d2b0" },
"gitsigns.nvim": { "branch": "main", "commit": "d195f0c35ced5174d3ecce1c4c8ebb3b5bc23fa9" },
"gruvbox.nvim": { "branch": "main", "commit": "f0e029a3989691eb38cfa9272b75251c62a00821" },
"lazy.nvim": { "branch": "main", "commit": "96584866b9c5e998cbae300594d0ccfd0c464627" },
"lualine.nvim": { "branch": "master", "commit": "2248ef254d0a1488a72041cfb45ca9caada6d994" },
"mason-lspconfig.nvim": { "branch": "main", "commit": "56e435e09f8729af2d41973e81a0db440f8fe9c9" },
"mason-null-ls.nvim": { "branch": "main", "commit": "788499e735c6e71ba25c08e7df159e8dbf94c6ec" },
"mason-registry": { "branch": "main", "commit": "a23adcb7eb14513739c9d5fe52814611f158bebd" },
"mason.nvim": { "branch": "main", "commit": "41e75af1f578e55ba050c863587cffde3556ffa6" },
"neo-tree.nvim": { "branch": "v3.x", "commit": "77d9f484b88fd380386b46ed9206e5374d69d9d8" },
"none-ls.nvim": { "branch": "main", "commit": "e7382de51b4cf629e56f1fa18192e716e5ba8145" },
"nui.nvim": { "branch": "main", "commit": "c9b4de623d19a85b353ff70d2ae9c77143abe69c" },
"nvim-cmp": { "branch": "main", "commit": "538e37ba87284942c1d76ed38dd497e54e65b891" },
"nvim-lspconfig": { "branch": "master", "commit": "9099871a7c7e1c16122e00d70208a2cd02078d80" },
"nvim-surround": { "branch": "main", "commit": "633a0ab03159569a66b65671b0ffb1a6aed6cf18" },
"nvim-treesitter": { "branch": "master", "commit": "27f68c0b6a87cbad900b3d016425450af8268026" },
"nvim-ts-autotag": { "branch": "main", "commit": "8515e48a277a2f4947d91004d9aa92c29fdc5e18" },
"nvim-ufo": { "branch": "main", "commit": "c6d88523f574024b788f1c3400c5d5b9bb1a0407" },
"nvim-web-devicons": { "branch": "master", "commit": "43aa2ddf476012a2155f5f969ee55ab17174da7a" },
"plenary.nvim": { "branch": "master", "commit": "55d9fe89e33efd26f532ef20223e5f9430c8b0c0" },
"promise-async": { "branch": "main", "commit": "94f6f03c6c1e2aab551aacdf0c1e597a7269abb6" },
"telescope-file-browser.nvim": { "branch": "master", "commit": "8e0543365fe5781c9babea7db89ef06bcff3716d" },
"Comment.nvim": { "branch": "master", "commit": "e30b7f2008e52442154b66f7c519bfd2f1e32acb" },
"LuaSnip": { "branch": "master", "commit": "21f74f7ba8c49f95f9d7c8293b147c2901dd2d3a" },
"autoclose.nvim": { "branch": "main", "commit": "3f86702b54a861a17d7994b2e32a7c648cb12fb1" },
"cmp-buffer": { "branch": "main", "commit": "b74fab3656eea9de20a9b8116afa3cfc4ec09657" },
"cmp-cmdline": { "branch": "main", "commit": "d126061b624e0af6c3a556428712dd4d4194ec6d" },
"cmp-nvim-lsp": { "branch": "main", "commit": "bd5a7d6db125d4654b50eeae9f5217f24bb22fd3" },
"cmp-path": { "branch": "main", "commit": "c642487086dbd9a93160e1679a1327be111cbc25" },
"cmp_luasnip": { "branch": "master", "commit": "98d9cb5c2c38532bd9bdb481067b20fea8f32e90" },
"fidget.nvim": { "branch": "main", "commit": "4d5858bd4c471c895060e1b9f3575f1551184dc5" },
"flit.nvim": { "branch": "main", "commit": "513e38abe61237c53a9e983e45595b1d2e7d5391" },
"friendly-snippets": { "branch": "main", "commit": "572f5660cf05f8cd8834e096d7b4c921ba18e175" },
"gitsigns.nvim": { "branch": "main", "commit": "f780609807eca1f783a36a8a31c30a48fbe150c5" },
"gruvbox.nvim": { "branch": "main", "commit": "5e0a460d8e0f7f669c158dedd5f9ae2bcac31437" },
"knap": { "branch": "main", "commit": "7db44d0bb760120142cc1e8f43e44976de59c2f6" },
"lazy.nvim": { "branch": "main", "commit": "6c3bda4aca61a13a9c63f1c1d1b16b9d3be90d7a" },
"leap.nvim": { "branch": "main", "commit": "657da3f8aa2cb8359ce90e8bc0ed5ca0d9665383" },
"lualine.nvim": { "branch": "master", "commit": "b8c23159c0161f4b89196f74ee3a6d02cdc3a955" },
"markview.nvim": { "branch": "main", "commit": "e6b0f5aee8105adab6077509c46459812db4cffa" },
"mason-lspconfig.nvim": { "branch": "main", "commit": "7f9a39fcd2ac6e979001f857727d606888f5909c" },
"mason-null-ls.nvim": { "branch": "main", "commit": "de19726de7260c68d94691afb057fa73d3cc53e7" },
"mason-registry": { "branch": "main", "commit": "2b73015a7f85d79f167c9d30835dfb3b7e9afc4e" },
"mason.nvim": { "branch": "main", "commit": "7dc4facca9702f95353d5a1f87daf23d78e31c2a" },
"neo-tree.nvim": { "branch": "v3.x", "commit": "f1deac7ecec88c28a250d890ba7bb35843e69cbd" },
"none-ls.nvim": { "branch": "main", "commit": "f0b3dc073153a08fd1e32869ed30b87a3bb4230f" },
"nui.nvim": { "branch": "main", "commit": "de740991c12411b663994b2860f1a4fd0937c130" },
"nvim-cmp": { "branch": "main", "commit": "b5311ab3ed9c846b585c0c15b7559be131ec4be9" },
"nvim-lspconfig": { "branch": "master", "commit": "d9879110d0422a566fa01d732556f4d5515e1738" },
"nvim-surround": { "branch": "main", "commit": "a868c256c861044beb9794b4dd126480dcdfbdad" },
"nvim-treesitter": { "branch": "master", "commit": "42fc28ba918343ebfd5565147a42a26580579482" },
"nvim-ts-autotag": { "branch": "main", "commit": "c4ca798ab95b316a768d51eaaaee48f64a4a46bc" },
"nvim-web-devicons": { "branch": "master", "commit": "6e51ca170563330e063720449c21f43e27ca0bc1" },
"plenary.nvim": { "branch": "master", "commit": "b9fd5226c2f76c951fc8ed5923d85e4de065e509" },
"telescope-file-browser.nvim": { "branch": "master", "commit": "3610dc7dc91f06aa98b11dca5cc30dfa98626b7e" },
"telescope-symbols.nvim": { "branch": "master", "commit": "a6d0127a53d39b9fc2af75bd169d288166118aec" },
"telescope-ui-select.nvim": { "branch": "master", "commit": "6e51d7da30bd139a6950adf2a47fda6df9fa06d2" },
"telescope.nvim": { "branch": "master", "commit": "d90956833d7c27e73c621a61f20b29fdb7122709" },
"todo-comments.nvim": { "branch": "main", "commit": "4a6737a8d70fe1ac55c64dfa47fcb189ca431872" },
"toggleterm.nvim": { "branch": "main", "commit": "cbd041d91b90cd3c02df03fe6133208888f8e008" },
"trouble.nvim": { "branch": "main", "commit": "f1168feada93c0154ede4d1fe9183bf69bac54ea" },
"vim-commentary": { "branch": "master", "commit": "e87cd90dc09c2a203e13af9704bd0ef79303d755" },
"vim-css-color": { "branch": "master", "commit": "6cc65734bc7105d9677ca54e2255fcbc953ba6bf" },
"vim-plugin-ruscmd": { "branch": "master", "commit": "e952abbea092e420b128936a0c284fb522612c3a" }
}
"todo-comments.nvim": { "branch": "main", "commit": "304a8d204ee787d2544d8bc23cd38d2f929e7cc5" },
"toggleterm.nvim": { "branch": "main", "commit": "50ea089fc548917cc3cc16b46a8211833b9e3c7c" },
"trouble.nvim": { "branch": "main", "commit": "85bedb7eb7fa331a2ccbecb9202d8abba64d37b3" },
"vim-css-color": { "branch": "master", "commit": "14fd934cdd9ca1ac0e53511094e612eb9bace373" },
"vim-repeat": { "branch": "master", "commit": "65846025c15494983dafe5e3b46c8f88ab2e9635" },
"which-key.nvim": { "branch": "main", "commit": "370ec46f710e058c9c1646273e6b225acf47cbed" }
}

View File

@@ -1,14 +1,15 @@
local cmd = vim.cmd -- execute Vim commands
local exec = vim.api.nvim_exec -- execute Vimscript
local g = vim.g -- global variables
local opt = vim.opt -- global/buffer/windows-scoped options
local cmd = vim.cmd -- execute Vim commands
local exec = vim.api.nvim_exec -- execute Vimscript
local g = vim.g -- global variables
local opt = vim.opt -- global/buffer/windows-scoped options
-----------------------------------------------------------
-- Главные
-----------------------------------------------------------
-- Откллючить поддержку со старым vi
g.nocompatible = true
-- Отключить поддержку со старым vi
-- g.nocompatible = true
opt.compatible = false
-- Не делать бекап файла
g.nobackup = true
g.nowritebackup = true
@@ -18,19 +19,19 @@ g.encoding = "utf-8"
-- Буфер обмена с системой (нужен xclip)
opt.clipboard = "unnamed,unnamedplus"
-- Разделитель на 80 символов
opt.colorcolumn = '80'
opt.colorcolumn = "80"
-- Словари рус eng
opt.spelllang = { 'en_us', 'ru' }
opt.spelllang = { "en_us", "ru" }
-- Включаем нумерацию строк
opt.number = true
opt.number = true
-- Вкл. относительную нумерацию строк
opt.relativenumber = true
opt.relativenumber = true
-- Возможность отката назад
opt.undofile = true
opt.undofile = true
-- vertical split вправо
opt.splitright = true
opt.splitright = true
-- horizontal split вниз
opt.splitbelow = true
opt.splitbelow = true
-- Отступ во время скрола
opt.scrolloff = 10
-- Показать парную скобку
@@ -46,12 +47,37 @@ opt.swapfile = false
-- g.loaded_netrw = 1
-- g.loaded_netrwPlugin = 1
-- Игнорировать регистр при поиске, если все буквы строчные
opt.ignorecase = true
opt.smartcase = true
-- Не прыгать при поиске
opt.incsearch = true
-- Подсветка результатов поиска
opt.hlsearch = true
-- Автодополнение путей
opt.wildmenu = true
opt.wildmode = "longest:full,full"
-- Конфигурация проверки орфографии
opt.spell = true
opt.spelllang = { "en_us", "ru" }
opt.spellsuggest = "best,3"
-- Автоматическое включение проверки для определенных типов файлов
vim.api.nvim_create_autocmd("FileType", {
pattern = { "markdown", "text", "gitcommit", "latex", "tex" },
callback = function()
vim.opt_local.spell = true
end,
})
-----------------------------------------------------------
-- Цветовая схема
-----------------------------------------------------------
-- Нужно для поддежки pywal
-- opt.termguicolors = false
-- Нужно для поддержки pywal
-- opt.termguicolors = false
-- Устанавливаем тему из pywal
-- cmd([[
-- highlight ColorColumn ctermbg=16
@@ -67,13 +93,13 @@ syntax enable
]])
-- Использовать пробелы вместо табуляции
opt.expandtab = true
opt.expandtab = true
-- Количество пробелов используемых для отступа
opt.shiftwidth = 4
opt.shiftwidth = 4
-- 1 таб = 4 пробелам
opt.tabstop = 4
opt.tabstop = 4
-- Добавлять отступ на новых строках
opt.smartindent = true
opt.smartindent = true
-- Не автокомментировать новые строки
cmd([[au BufEnter * set fo-=c fo-=r fo-=o]])
@@ -83,22 +109,110 @@ cmd([[autocmd FileType text,markdown,html,xhtml,javascript setlocal cc=0]])
-- 2 пробела для выбранных типов файлов
cmd([[
autocmd FileType xml,html,xhtml,css,scss,javascript,lua,yaml,htmljinja setlocal shiftwidth=2 tabstop=2
autocmd FileType xml,html,xhtml,css,scss,sass,javascript,typescript,lua,yaml,htmljinja,vue,svelte setlocal shiftwidth=2 tabstop=2
]])
-- Показывать непечатные символы
opt.list = true
opt.listchars = {
tab = "",
trail = "·",
nbsp = "",
extends = "",
precedes = "",
}
-----------------------------------------------------------
-- Полезные фишки
-----------------------------------------------------------
-- Запоминает где nvim последний раз редактировал файл
cmd [[
cmd([[
autocmd BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif
]]
]])
-- Подсвечивает на доли секунды скопированную часть текста
exec([[
exec(
[[
augroup YankHighlight
autocmd!
autocmd TextYankPost * silent! lua vim.highlight.on_yank{higroup="IncSearch", timeout=300}
augroup end
]], false)
]],
false
)
-- Автоматическое перечитывание файла при изменении извне
opt.autoread = true
vim.api.nvim_create_autocmd({ "FocusGained", "BufEnter" }, {
pattern = "*",
command = "checktime",
})
-----------------------------------------------------------
-- Полезные фишки: Автосохранение с таймаутом
-----------------------------------------------------------
-- local autosave_timers = {}
--
-- -- Функция для сохранения буфера
-- local function save_buffer(bufnr)
-- vim.api.nvim_buf_call(bufnr, function()
-- vim.cmd("silent! write")
-- end)
-- end
--
-- -- Автогруппа для автосохранения
-- vim.api.nvim_create_augroup("autosave_debounced", { clear = true })
--
-- -- Дебаунсим только изменения вне insert mode (TextChanged)
-- vim.api.nvim_create_autocmd("TextChanged", {
-- group = "autosave_debounced",
-- pattern = "*",
-- callback = function(args)
-- local bufnr = args.buf
--
-- -- Отменяем предыдущий таймер для этого буфера
-- if autosave_timers[bufnr] then
-- autosave_timers[bufnr]:stop()
-- autosave_timers[bufnr]:close()
-- end
--
-- -- Создаем новый таймер на 500 мс
-- autosave_timers[bufnr] = vim.defer_fn(function()
-- save_buffer(bufnr)
-- autosave_timers[bufnr] = nil
-- end, 500)
-- end,
-- })
--
-- -- Сохраняем сразу при выходе из insert mode
-- vim.api.nvim_create_autocmd("InsertLeave", {
-- group = "autosave_debounced",
-- pattern = "*",
-- callback = function(args)
-- local bufnr = args.buf
--
-- -- Отменяем отложенное сохранение, если оно было запланировано
-- if autosave_timers[bufnr] then
-- autosave_timers[bufnr]:stop()
-- autosave_timers[bufnr]:close()
-- autosave_timers[bufnr] = nil
-- end
--
-- -- Сохраняем сразу
-- save_buffer(bufnr)
-- end,
-- })
--
-- -- Очистка таймеров при закрытии буфера
-- vim.api.nvim_create_autocmd("BufWipeout", {
-- group = "autosave_debounced",
-- pattern = "*",
-- callback = function(args)
-- if autosave_timers[args.buf] then
-- autosave_timers[args.buf]:stop()
-- autosave_timers[args.buf]:close()
-- autosave_timers[args.buf] = nil
-- end
-- end,
-- })

View File

@@ -1,47 +1,129 @@
local default_opts = { noremap = true, silent = true }
local function map(mode, l, r, opts)
opts = opts or default_opts
opts.buffer = bufnr
vim.keymap.set(mode, l, r, opts)
opts = opts or default_opts
-- opts.buffer = bufnr
vim.keymap.set(mode, l, r, opts)
end
-----------------------------------------------------------
-- Базовые
-- Базовые
-----------------------------------------------------------
-- Командная клавиша
vim.keymap.set("n", " ", "<Nop>", { silent = true, remap = false })
vim.g.mapleader = " "
-- Быстрое перемещение
map("n", "<A-j>", "10j")
map("n", "<A-k>", "10k")
-- Быстрое сохранение
map("n", "<leader>w", "<cmd>write<CR>")
map("n", "<leader>q", "<cmd>quit<CR>")
-- 'Нажимает' на ESC при быстром нажатии jj
map('i', 'оо', '<Esc>')
map('i', 'jj', '<Esc>')
-- map("i", "оо", "<Esc>")
-- map("i", "jj", "<Esc>")
-- Переход в режим ввода на русском при нажатии R
vim.keymap.set("n", "R", function()
os.execute("xkb-switch -s ru")
vim.api.nvim_feedkeys(vim.api.nvim_replace_termcodes("<Esc>i", true, true, true), "n", true)
end, { noremap = true, silent = true })
local returnFromInsert = function()
vim.api.nvim_feedkeys(vim.api.nvim_replace_termcodes("<Esc>", true, true, true), "n", true)
os.execute("xkb-switch -s us")
end
vim.keymap.set("i", "jj", returnFromInsert, { noremap = true, silent = true })
vim.keymap.set("i", "оо", returnFromInsert, { noremap = true, silent = true })
-- Отключение стрелочек. Использовать hjkl
map('', '<up>', ':echoe "Use k"<CR>', {noremap = true, silent = false})
map('', '<down>', ':echoe "Use j"<CR>', {noremap = true, silent = false})
map('', '<left>', ':echoe "Use h"<CR>', {noremap = true, silent = false})
map('', '<right>', ':echoe "Use l"<CR>', {noremap = true, silent = false})
-- map("", "<up>", ':echoe "Use k"<CR>', { noremap = true, silent = false })
-- map("", "<down>", ':echoe "Use j"<CR>', { noremap = true, silent = false })
-- map("", "<left>", ':echoe "Use h"<CR>', { noremap = true, silent = false })
-- map("", "<right>", ':echoe "Use l"<CR>', { noremap = true, silent = false })
map('n', "<C-h>", "<C-w>h")
map('n', "<C-j>", "<C-w>j")
map('n', "<C-k>", "<C-w>k")
map('n', "<C-l>", "<C-w>l")
-- Ресайз окон
map("n", "<Up>", "<cmd>resize +2<CR>")
map("n", "<Down>", "<cmd>resize -2<CR>")
map("n", "<Left>", "<cmd>vertical resize +2<CR>")
map("n", "<Right>", "<cmd>vertical resize -2<CR>")
map('n', '<leader>st', ':set invlist<CR>')
-- Перемещение между окнами
map("n", "<C-h>", "<C-w>h")
map("n", "<C-j>", "<C-w>j")
map("n", "<C-k>", "<C-w>k")
map("n", "<C-l>", "<C-w>l")
map("n", "<leader>st", ":set invlist<CR>")
-----------------------------------------------------------
-- Spell Check
-----------------------------------------------------------
-- Включить/выключить проверку
map("n", "<leader>ss", "<cmd>set spell!<CR>", { desc = "Toggle spell check" })
-- Навигация по ошибкам
map("n", "]s", "<cmd>normal! ]s<CR>", { desc = "Next spelling error" })
map("n", "[s", "<cmd>normal! [s<CR>", { desc = "Previous spelling error" })
-- Добавить слово в словарь
map("n", "<leader>sda", "<cmd>normal! zg<CR>", { desc = "Add to dictionary" })
map("n", "<leader>sdd", "<cmd>normal! zw<CR>", { desc = "Mark as wrong" })
-- Показать варианты исправления
map("n", "<leader>sp", "<cmd>normal! z=<CR>", { desc = "Show spelling suggestions" })
-- Русская раскладка в справках
vim.cmd([[
" Русские подсказки для проверки орфографии
set spellcapcheck= " Отключить проверку заглавных букв для русского
]])
-- Альтернативный путь к словарям (если стандартный не работает)
local spell_paths = {
"/usr/share/hunspell/",
"/usr/share/myspell/dicts/",
"/usr/share/myspell/",
vim.fn.expand("~/.local/share/nvim/spell/"),
}
-- Проверить и установить словари если нужно
local function setup_spell()
local has_dicts = false
for _, path in ipairs(spell_paths) do
if vim.fn.isdirectory(path) == 1 then
vim.opt.spellfile = vim.fn.glob(path .. "/*.add")
has_dicts = true
break
end
end
if not has_dicts then
vim.notify(
"Словари не найдены. Установите: sudo apt install hunspell-ru hunspell-en-us",
vim.log.levels.WARN
)
end
end
-- Вызвать настройку при запуске
vim.defer_fn(setup_spell, 100)
-----------------------------------------------------------
-- F1 .. F12
-----------------------------------------------------------
-- По F1 очищаем последний поиск с подсветкой
map('n', '<F1>', ':nohl<CR>')
map('n', '<leader>nh', ':nohl<CR>')
-- map("n", "<F1>", ":nohl<CR>")
map("n", "<leader>nh", ":nohl<CR>")
-- <F5> разные вариации нумераций строк, можно переключаться
map('n', '<F5>', ':exec &nu==&rnu? "se nu!" : "se rnu!"<CR>')
map("n", "<F5>", ':exec &nu==&rnu? "se nu!" : "se rnu!"<CR>')
-- <F11> Проверка орфографии для русского и английского языка
map('n', '<F11>', ':set spell!<CR>')
map('i', '<F11>', '<C-O>:set spell!<CR>')
map("n", "<F11>", ":set spell!<CR>")
map("i", "<F11>", "<C-O>:set spell!<CR>")

View File

@@ -0,0 +1 @@
return {}

View File

@@ -1,72 +1,159 @@
return {
{
"hrsh7th/nvim-cmp",
dependencies = {
"hrsh7th/cmp-buffer",
"hrsh7th/cmp-path",
"hrsh7th/cmp-cmdline",
"L3MON4D3/LuaSnip",
"rafamadriz/friendly-snippets",
"saadparwaiz1/cmp_luasnip",
},
config = function()
local luasnip = require("luasnip")
local cmp = require("cmp")
{
"hrsh7th/nvim-cmp",
event = "InsertEnter",
dependencies = {
"hrsh7th/cmp-buffer",
"hrsh7th/cmp-path",
"hrsh7th/cmp-cmdline",
require("luasnip.loaders.from_vscode").lazy_load()
"hrsh7th/cmp-nvim-lsp",
local has_words_before = function()
unpack = unpack or table.unpack
local line, col = unpack(vim.api.nvim_win_get_cursor(0))
return col ~= 0 and vim.api.nvim_buf_get_lines(0, line - 1, line, true)[1]:sub(col, col):match("%s") == nil
end
"L3MON4D3/LuaSnip",
"rafamadriz/friendly-snippets",
"saadparwaiz1/cmp_luasnip",
},
config = function()
local luasnip = require("luasnip")
local cmp = require("cmp")
cmp.setup({
snippet = {
expand = function(args)
luasnip.lsp_expand(args.body)
end,
},
mapping = {
["<Tab>"] = cmp.mapping(function(fallback)
if cmp.visible() then cmp.select_next_item()
elseif luasnip.expand_or_jumpable() then luasnip.expand_or_jump()
elseif has_words_before() then cmp.complete()
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" }),
['<C-Space>'] = cmp.mapping.complete(),
['<C-e>'] = cmp.mapping.abort(),
['<CR>'] = cmp.mapping.confirm({ select = true }),
},
sources = cmp.config.sources({
{ name = 'nvim_lsp' },
{ name = 'luasnip' },
}, {
{ name = 'buffer' },
})
})
cmp.setup.filetype('gitcommit', {
sources = cmp.config.sources(
{{ name = 'git' }},
{{ name = 'buffer' }}
)
})
cmp.setup.cmdline({ '/', '?' }, {
mapping = cmp.mapping.preset.cmdline(),
sources = {{ name = 'buffer' }}
})
cmp.setup.cmdline(':', {
mapping = cmp.mapping.preset.cmdline(),
sources = cmp.config.sources(
{{ name = 'path' }},
{{ name = 'cmdline' }}
)
})
end,
},
require("luasnip.loaders.from_vscode").lazy_load()
local has_words_before = function()
if vim.api.nvim_get_mode().mode == "c" then
return true
end
local line, col = table.unpack(vim.api.nvim_win_get_cursor(0))
return col ~= 0 and vim.api.nvim_buf_get_text(0, line - 1, 0, line - 1, col, {})[1]:match("%S")
end
cmp.setup({
-- Производительность
performance = {
debounce = 60,
throttle = 30,
fetching_timeout = 200,
async_budget = 1,
max_view_entries = 10,
},
snippet = {
expand = function(args)
luasnip.lsp_expand(args.body)
end,
},
-- Сортировка источников по приоритету
sources = cmp.config.sources({
{ name = "nvim_lsp", priority = 1000, keyword_length = 2 },
{ name = "luasnip", priority = 900, keyword_length = 1 },
{ name = "buffer", priority = 500, keyword_length = 3 },
{ name = "path", priority = 250, keyword_length = 1 },
}),
mapping = {
["<Tab>"] = cmp.mapping(function(fallback)
if cmp.visible() then
cmp.select_next_item()
elseif luasnip.expand_or_jumpable() then
luasnip.expand_or_jump()
elseif has_words_before() then
cmp.complete()
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" }),
["<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,
behavior = cmp.ConfirmBehavior.Replace,
}),
},
-- Форматирование
formatting = {
fields = { "kind", "abbr", "menu" },
format = function(entry, vim_item)
-- Иконки
local icons = {
Text = "󰉿",
Method = "󰆧",
Function = "󰊕",
Constructor = "",
Field = "󰜢",
Variable = "󰀫",
Class = "󰠱",
Interface = "",
Module = "",
Property = "󰜢",
Unit = "󰑭",
Value = "󰎠",
Enum = "",
Keyword = "󰌋",
Snippet = "",
Color = "󰏘",
File = "󰈙",
Reference = "󰈇",
Folder = "󰉋",
EnumMember = "",
Constant = "󰏿",
Struct = "󰙅",
Event = "",
Operator = "󰆕",
TypeParameter = "",
}
vim_item.kind = string.format("%s %s", icons[vim_item.kind] or "?", vim_item.kind)
local source_name = entry.source.name
local menu_map = {
nvim_lsp = "[LSP]",
luasnip = "[Snip]",
buffer = "[Buf]",
path = "[Path]",
nvim_lua = "[Lua]",
cmdline = "[Cmd]",
}
vim_item.menu = menu_map[source_name] or ("[" .. source_name .. "]")
-- Укорочение длинных имен
local label = vim_item.abbr
local truncated_label = vim.fn.strcharpart(label, 0, 50)
if truncated_label ~= label then
vim_item.abbr = truncated_label .. ""
end
return vim_item
end,
},
-- Экспериментальные фичи
experimental = {
ghost_text = {
hl_group = "Comment", -- призрачный текст
},
},
})
cmp.setup.filetype("gitcommit", {
sources = cmp.config.sources({ { name = "git" } }, { { name = "buffer" } }),
})
cmp.setup.cmdline({ "/", "?" }, {
mapping = cmp.mapping.preset.cmdline(),
sources = { { name = "buffer" } },
})
cmp.setup.cmdline(":", {
mapping = cmp.mapping.preset.cmdline(),
sources = cmp.config.sources({ { name = "path" } }, { { name = "cmdline" } }),
})
end,
},
}

View File

@@ -1,14 +0,0 @@
return {
{
"j-morano/buffer_manager.nvim",
dependencies = {
"nvim-lua/plenary.nvim",
},
opts = {},
keys = {
{ "<LEADER>b", function() require("buffer_manager.ui").toggle_quick_menu() end },
{ "<S-h>", function() require("buffer_manager.ui").nav_prev() end },
{ "<S-l>", function() require("buffer_manager.ui").nav_next() end }
}
}
}

View File

@@ -1,6 +1,6 @@
return {
-- Подсветка цвета (не только в css)
{
"ap/vim-css-color"
}
-- Подсветка цвета (не только в css)
{
"ap/vim-css-color",
},
}

View File

@@ -1,61 +1,154 @@
return {
-- {
-- -- Загрука темы из pywal
-- "dylanaraps/wal.vim",
-- config = function()
-- vim.cmd([[colorscheme wal]])
-- end,
-- }
-- {
-- -- Загрука темы из pywal
-- "dylanaraps/wal.vim",
-- config = function()
-- vim.cmd([[colorscheme wal]])
-- end,
-- }
{
-- Отличная тема, но слишком яркий фон
"ellisonleao/gruvbox.nvim",
lazy = false,
priority = 1000,
config = function()
vim.o.background = "dark"
vim.cmd([[colorscheme gruvbox]])
end
}
{
-- Отличная тема, но слишком яркий фон
"ellisonleao/gruvbox.nvim",
lazy = false,
priority = 1000,
config = function()
vim.o.background = "dark"
-- vim.cmd([[colorscheme gruvbox]])
require("gruvbox").setup({
-- Основные настройки контраста
contrast = "hard", -- "hard", "medium", "soft"
-- {
-- "RRethy/nvim-base16",
-- config = function()
-- vim.cmd([[colorscheme base16-gruvbox-dark-hard]])
-- end
-- }
-- Тёмная версия
terminal_colors = true,
-- {
-- "nanotech/jellybeans.vim",
-- lazy = false,
-- priority = 1000,
-- config = function()
-- vim.cmd([[colorscheme jellybeans]])
-- end
-- }
-- Настройки яркости
undercurl = true,
underline = true,
bold = true,
italic = {
strings = false,
comments = false,
operators = false,
folds = false,
},
-- {
-- "junegunn/seoul256.vim",
-- config = function()
-- vim.g.seoul256_background = 233
-- vim.cmd([[colorscheme seoul256]])
-- end
-- }
-- Цветовые настройки
invert_selection = false,
invert_signs = false,
invert_tabline = false,
invert_intend_guides = false,
-- {
-- "Mofiqul/vscode.nvim",
-- config = function()
-- require("vscode").load("dark")
-- end
-- }
-- Более тёмные цвета
palette_overrides = {
dark0_hard = "#0d0e0f", -- самый тёмный фон
dark0 = "#1d2021", -- стандартный фон
dark1 = "#282828",
dark2 = "#32302f",
dark3 = "#3c3836",
dark4 = "#504945",
-- {
-- "sainnhe/everforest",
-- config = function()
-- vim.g.everforest_background = "hard"
-- vim.o.background = "dark"
-- -- require("everforest")
-- vim.cmd([[colorscheme everforest]])
-- end
-- }
-- Более насыщенные цвета
bright_red = "#fb4934",
bright_green = "#b8bb26",
bright_yellow = "#fabd2f",
bright_blue = "#83a598",
bright_purple = "#d3869b",
bright_aqua = "#8ec07c",
bright_orange = "#fe8019",
},
-- Контрастные настройки
overrides = {
-- Пример: сделать выделение контрастнее
Visual = { bg = "#3c3836", fg = "#ebdbb2" },
Search = { bg = "#fe8019", fg = "#282828" },
IncSearch = { bg = "#fb4934", fg = "#282828" },
-- Контрастные границы
FloatBorder = { fg = "#ebdbb2" },
-- Более тёмный LineNr
LineNr = { fg = "#7c6f64" },
CursorLineNr = { fg = "#d5c4a1", bold = true },
},
})
-- Дополнительные Vim команды для увеличения контраста
vim.cmd([[
colorscheme gruvbox
" Дополнительные настройки контраста
highlight Normal guibg=#0d0e0f
highlight NormalNC guibg=#0d0e0f
highlight SignColumn guibg=#0d0e0f
highlight EndOfBuffer guifg=#0d0e0f
" Более контрастные комментарии
highlight Comment guifg=#928374
" Контрастные номера строк
highlight LineNr guifg=#7c6f64 guibg=#0d0e0f
highlight CursorLineNr guifg=#ebdbb2 guibg=#0d0e0f
" Контрастный скроллбар
highlight Pmenu guibg=#1d2021
highlight PmenuSel guibg=#504945
" Более тёмные границы
highlight WinSeparator guifg=#504945
]])
end,
},
-- {
-- "morhetz/gruvbox",
-- priority = 1000,
-- init = function()
-- vim.g.gruvbox_contrast_dark = "hard"
-- vim.g.gruvbox_background = "hard"
-- vim.cmd("colorscheme gruvbox")
-- end,
-- },
-- {
-- "RRethy/nvim-base16",
-- config = function()
-- vim.cmd([[colorscheme base16-gruvbox-dark-hard]])
-- end,
-- },
-- {
-- "nanotech/jellybeans.vim",
-- lazy = false,
-- priority = 1000,
-- config = function()
-- vim.cmd([[colorscheme jellybeans]])
-- end,
-- },
-- {
-- "junegunn/seoul256.vim",
-- config = function()
-- vim.g.seoul256_background = 233
-- vim.cmd([[colorscheme seoul256]])
-- end
-- }
-- {
-- "Mofiqul/vscode.nvim",
-- config = function()
-- require("vscode").load("dark")
-- end,
-- },
-- {
-- "sainnhe/everforest",
-- config = function()
-- vim.g.everforest_background = "hard"
-- vim.o.background = "dark"
-- -- require("everforest")
-- vim.cmd([[colorscheme everforest]])
-- end,
-- },
}

View File

@@ -1,8 +1,17 @@
return {
-- Быстрое комментирование
-- gcc - закоментировать строку
-- (VISUAL) gc - закоментировать выделенные строки
{
"tpope/vim-commentary"
}
-- Быстрое комментирование
-- gcc - закоментировать строку
-- (VISUAL) gc - закоментировать выделенные строки
-- {
-- "tpope/vim-commentary",
-- },
{
"numToStr/Comment.nvim",
},
-- gcc - toggle current line
-- gbc - toggle current block
-- [count]gcc | [count]gbc
-- gc[count]{motion} | gb[count]{motion}
-- VISUAL: gc | gb
}

View File

@@ -1,42 +1,65 @@
return {
-- Поддержка git
{
"lewis6991/gitsigns.nvim",
config = function()
require('gitsigns').setup()
-- Поддержка git
{
"lewis6991/gitsigns.nvim",
opts = {
signs = {
add = { text = "+" },
change = { text = "~" },
delete = { text = "_" },
},
},
config = function(_, opts)
require("gitsigns").setup(opts)
local function map(mode, l, r, opts)
opts = opts or { noremap = true, silent = true }
opts.buffer = bufnr
vim.keymap.set(mode, l, r, opts)
end
local function map(mode, l, r, opts)
opts = opts or { noremap = true, silent = true }
opts.buffer = bufnr
vim.keymap.set(mode, l, r, opts)
end
local gs = package.loaded.gitsigns
local gs = package.loaded.gitsigns
map('n', ']c', function()
if vim.wo.diff then return ']c' end
vim.schedule(function() gs.next_hunk() end)
return '<Ignore>'
end, {expr=true})
map('n', '[c', function()
if vim.wo.diff then return '[c' end
vim.schedule(function() gs.prev_hunk() end)
return '<Ignore>'
end, {expr=true})
map("n", "]c", function()
if vim.wo.diff then
return "]c"
end
vim.schedule(function()
gs.next_hunk()
end)
return "<Ignore>"
end, { expr = true })
map("n", "[c", function()
if vim.wo.diff then
return "[c"
end
vim.schedule(function()
gs.prev_hunk()
end)
return "<Ignore>"
end, { expr = true })
map('n', '<leader>gs', gs.stage_hunk)
map('n', '<leader>gr', gs.reset_hunk)
map('v', '<leader>gs', function() gs.stage_hunk {vim.fn.line('.'), vim.fn.line('v')} end)
map('v', '<leader>gr', function() gs.reset_hunk {vim.fn.line('.'), vim.fn.line('v')} end)
map('n', '<leader>gS', gs.stage_buffer)
map('n', '<leader>gu', gs.undo_stage_hunk)
map('n', '<leader>gR', gs.reset_buffer)
map('n', '<leader>gp', gs.preview_hunk)
map('n', '<leader>gb', function() gs.blame_line{full=true} end)
map('n', '<leader>gtb', gs.toggle_current_line_blame)
map('n', '<leader>gd', gs.diffthis)
map('n', '<leader>gD', function() gs.diffthis('~') end)
map('n', '<leader>gtd', gs.toggle_deleted)
end
}
-- map("n", "<leader>gs", gs.stage_hunk)
-- map("n", "<leader>gr", gs.reset_hunk)
-- map("v", "<leader>gs", function()
-- gs.stage_hunk({ vim.fn.line("."), vim.fn.line("v") })
-- end)
-- map("v", "<leader>gr", function()
-- gs.reset_hunk({ vim.fn.line("."), vim.fn.line("v") })
-- end)
-- map("n", "<leader>gS", gs.stage_buffer)
-- map("n", "<leader>gu", gs.undo_stage_hunk)
-- map("n", "<leader>gR", gs.reset_buffer)
-- map("n", "<leader>gp", gs.preview_hunk)
-- map("n", "<leader>gb", function()
-- gs.blame_line({ full = true })
-- end)
-- map("n", "<leader>gtb", gs.toggle_current_line_blame)
-- map("n", "<leader>gd", gs.diffthis)
-- map("n", "<leader>gD", function()
-- gs.diffthis("~")
-- end)
-- map("n", "<leader>gtd", gs.toggle_deleted)
end,
},
}

View File

@@ -0,0 +1,17 @@
return {
"lervag/vimtex",
lazy = false,
init = function()
vim.g.vimtex_view_method = "zathura"
vim.g.vimtex_compiler_method = "latexmk"
vim.g.vimtex_quickfix_mode = 0
vim.g.maplocalleader = ","
vim.api.nvim_create_autocmd("FileType", {
pattern = "tex",
callback = function()
vim.opt_local.syntax = "on" -- Использовать синтаксис VimTeX
end,
})
end,
config = function() end,
}

View File

@@ -0,0 +1,43 @@
return {
-- Прыжок в любое место по символу
{ "tpope/vim-repeat", event = "VeryLazy" },
{
"ggandor/flit.nvim",
dependencies = {
"ggandor/leap.nvim",
},
keys = function()
local ret = {}
for _, key in ipairs({ "f", "F", "t", "T" }) do
ret[#ret + 1] = { key, mode = { "n", "x", "o" } }
end
return ret
end,
opts = { labeled_modes = "nx" },
},
{
"ggandor/leap.nvim",
keys = {
{ "<Leader>j", mode = { "n", "x", "o" }, desc = "Leap forward to" },
{ "<Leader>k", mode = { "n", "x", "o" }, desc = "Leap backward to" },
{ "<Leader>J", mode = { "n", "x", "o" }, desc = "Leap from windows" },
},
config = function(_, opts)
local leap = require("leap")
for k, v in pairs(opts) do
leap.opts[k] = v
end
-- leap.add_default_mappings(true)
-- Удаляем конфликтующие маппинги, если они есть
-- vim.keymap.del({ "x", "o" }, "x")
-- vim.keymap.del({ "x", "o" }, "X")
-- Прыжок вперёд
vim.keymap.set({ "n", "x", "o" }, "<Leader>j", "<Plug>(leap-forward)")
-- Прыжок назад
vim.keymap.set({ "n", "x", "o" }, "<Leader>k", "<Plug>(leap-backward)")
-- Прыжок между окнами
vim.keymap.set({ "n", "x", "o" }, "<Leader>J", "<Plug>(leap-from-window)")
end,
},
}

View File

@@ -1,125 +1,235 @@
return {
{
"williamboman/mason.nvim",
dependencies = {
"mason-org/mason-registry",
},
opts = {}
},
{
"neovim/nvim-lspconfig",
event = { "BufReadPre", "BufNewFile" },
dependencies = {
"williamboman/mason-lspconfig.nvim",
"hrsh7th/cmp-nvim-lsp",
},
keys = {
{ "<LEADER>lh", vim.lsp.buf.hover },
{ "<LEADER>lr", vim.lsp.buf.rename },
{ "<LEADER>lf", function()
vim.lsp.buf.format({
async = true,
bufnr = bufnr,
filter = function(client)
return client.name == "null-ls"
end
})
end
},
{ "<LEADER>lgr", vim.lsp.buf.references },
{ "<LEADER>lgi", vim.lsp.buf.implementation },
{ "<LEADER>lsh", vim.lsp.buf.signature_help },
{
"mason-org/mason.nvim",
opts = {},
dependencies = {
"mason-org/mason-registry",
},
},
{
"mason-org/mason-lspconfig.nvim",
opts = {
automatic_installation = true,
automatic_enable = true,
ensure_installed = {
"bashls",
"lua_ls",
{ "<LEADER>ldj", vim.diagnostic.goto_next },
{ "<LEADER>ldk", vim.diagnostic.goto_prev },
"vtsls", -- ts_ls + vue support
"html",
"cssls",
"jsonls",
{ "<LEADER>lgd", vim.lsp.buf.definition },
{ "<LEADER>lgtd", vim.lsp.buf.type_definition },
"pyright",
{ "<LEADER>law", vim.lsp.buf.add_workspace_folder },
{ "<LEADER>ldw", vim.lsp.buf.remove_workspace_folder },
{ "<LEADER>llw", function()
print(vim.inspect(vim.lsp.buf.list_workplace_folders()))
end },
"yamlls",
},
},
dependencies = {
"mason-org/mason.nvim",
},
},
{
"neovim/nvim-lspconfig",
event = { "BufReadPre", "BufNewFile" },
dependencies = {
"hrsh7th/nvim-cmp",
"j-hui/fidget.nvim",
"folke/trouble.nvim",
},
keys = {
{ "<LEADER>l", desc = "LSP Features" },
{ "<LEADER>lh", vim.lsp.buf.hover, desc = "Get info from LSP" },
{ "<LEADER>lr", vim.lsp.buf.rename, desc = "Rename" },
{
"<LEADER>lf",
function()
vim.lsp.buf.format({
async = true,
-- bufnr = bufnr,
filter = function(client)
return client.name == "null-ls"
end,
})
end,
desc = "Format code",
},
{ "<LEADER>lgr", vim.lsp.buf.references, desc = "Open references" },
{ "<LEADER>lgi", vim.lsp.buf.implementation, desc = "Open implementation" },
{ "<LEADER>lsh", vim.lsp.buf.signature_help, desc = "Optn signature help" },
{ "<LEADER>lca", vim.lsp.buf.code_action },
},
config = function()
local lspconfig = require("lspconfig")
local mason_lspconfig = require("mason-lspconfig")
{ "<LEADER>ldj", vim.diagnostic.goto_next, desc = "Go to next problem" },
{
"<LEADER>ldk",
vim.diagnostic.goto_prev,
desc = "Go to previous problem",
},
local LSP_SERVERS = {
"tsserver",
"html",
"cssls",
"tailwindcss",
"pyright"
}
{ "<LEADER>lgd", vim.lsp.buf.definition, desc = "Open definition" },
{ "<LEADER>lgt", vim.lsp.buf.type_definition, desc = "Open type definition" },
mason_lspconfig.setup({
ensure_installed = LSP_SERVERS,
automatic_installation = true,
})
local capabilities = require("cmp_nvim_lsp").default_capabilities()
for _, server in pairs(LSP_SERVERS) do
lspconfig[server].setup(
{
capabilities = capabilities,
on_attach = on_attach,
}
)
end
end,
},
{
"nvimtools/none-ls.nvim",
event = { "BufReadPre", "BufNewFile" },
dependencies = {
"nvim-lua/plenary.nvim",
"williamboman/mason-null-ls.nvim",
},
config = function()
local null_ls = require("null-ls")
null_ls.setup({
source = {
-- null_ls.builtins.diagnostics.eslint_d,
-- null_ls.builtins.code_actions.eslint_d,
null_ls.builtins.diagnostics.stylelint,
null_ls.builtins.formatting.prettier,
null_ls.builtins.code_actions.gitsigns,
null_ls.builtins.formatting.autopep8,
null_ls.builtins.diagnostics.pycodestyle,
null_ls.builtins.diagnostics.pydocstyle,
},
on_attach = function(client, bufnr)
if client.supports_method("textDocument/formatting") then
vim.api.nvim_clear_autocmds({ group = augroup, buffer = bufnr })
vim.api.nvim_create_autocmd("BufWritePre", {
group = vim.api.nvim_create_augroup("LspFormatting", {}),
buffer = bufnr,
callback = function()
vim.lsp.buf.format({
async = false,
bufnr = bufnr,
filter = function(client)
return client.name == "null-ls"
end
})
end,
})
end
end,
})
require("mason-null-ls").setup({
ensure_installed = nil,
automatic_installation = true,
handlers = {}
})
end
},
{
"j-hui/fidget.nvim",
opts = {}
},
{
"<LEADER>law",
vim.lsp.buf.add_workspace_folder,
desc = "Add folder to workspace",
},
{
"<LEADER>ldw",
vim.lsp.buf.remove_workspace_folder,
desc = "Remove folder from workspace",
},
{
"<LEADER>llw",
function()
print(vim.inspect(vim.lsp.buf.list_workspace_folders()))
end,
desc = "List workspace folders",
},
{
"<LEADER>lca",
vim.lsp.buf.code_action,
desc = "Open code actions",
},
},
config = function()
local capabilities = require("cmp_nvim_lsp").default_capabilities()
local on_attach = function(client, bufnr)
vim.notify(client.name .. " attached", vim.log.levels.INFO)
end
vim.lsp.config("*", {
capabilities = capabilities,
on_attach = on_attach,
})
vim.lsp.config("vtsls", {
settings = {
vtsls = {
tsserver = {
globalPlugins = {
{
name = "@vue/typescript-plugin",
location = vim.fn.stdpath("data")
.. "/mason/packages/vue-language-server/node_modules/@vue/language-server",
languages = { "vue" },
configNamespace = "typescript",
},
},
},
},
},
filetypes = { "typescript", "javascript", "javascriptreact", "typescriptreact", "vue" },
})
vim.lsp.config("clangd", {
capabilities = capabilities,
on_attach = on_attach,
settings = {
clangd = {
fallbackFlags = {
"--std=c++23",
"-Wall",
"-Wextra",
"-Wpedantic",
},
},
},
filetypes = { "c", "cpp", "objc", "objcpp", "tpp" },
})
end,
},
{
"jay-babu/mason-null-ls.nvim",
event = { "BufReadPre", "BufNewFile" },
dependencies = {
"williamboman/mason.nvim",
"nvimtools/none-ls.nvim",
},
opts = {
ensure_installed = {
"prettierd",
"eslint_d",
"stylua",
"shfmt",
"shellcheck",
"autopep8",
"black",
"isort",
},
automatic_installation = true,
handlers = {},
},
},
{
"nvimtools/none-ls.nvim",
event = { "BufReadPre", "BufNewFile" },
dependencies = { "williamboman/mason.nvim" },
config = function()
local null_ls = require("null-ls")
local augroup = vim.api.nvim_create_augroup("LspFormatting", {})
null_ls.setup({
source = {},
on_attach = function(client, bufnr)
local sources = null_ls.get_sources()
local source_names = {}
for _, source in ipairs(sources) do
if source.filetypes then
for ft, _ in pairs(source.filetypes) do
if ft == vim.bo[bufnr].filetype then
table.insert(source_names, source.name)
end
end
end
end
local message = "NullLS attached"
if #source_names > 0 then
message = message .. " with sources: " .. table.concat(source_names, ", ")
else
message = message .. " (no sources for this filetype)"
end
vim.notify(message, vim.log.levels.INFO)
if client.supports_method("textDocument/formatting") then
vim.api.nvim_clear_autocmds({ group = augroup, buffer = bufnr })
vim.api.nvim_create_autocmd("BufWritePre", {
group = augroup,
buffer = bufnr,
callback = function()
vim.lsp.buf.format({
async = false,
filter = function(format_client)
return format_client.name == "null-ls"
end,
})
end,
})
end
end,
})
end,
},
{
"j-hui/fidget.nvim",
opts = {
notification = {
window = {
max_width = 60,
max_height = 5,
winblend = 0,
},
filter = vim.log.levels.DEBUG,
},
},
config = function(_, opts)
local fidget = require("fidget")
fidget.setup(opts)
vim.notify = fidget.notify
end,
},
}

View File

@@ -0,0 +1,14 @@
return {
-- {
-- "MeanderingProgrammer/render-markdown.nvim",
-- dependencies = { "nvim-treesitter/nvim-treesitter", "nvim-tree/nvim-web-devicons" },
-- ---@module 'render-markdown'
-- ---@type render.md.UserConfig
-- opts = {},
-- },
{
"nvim-treesitter/nvim-treesitter",
dependencies = { "OXY2DEV/markview.nvim" },
lazy = false,
},
}

View File

@@ -1,16 +1,15 @@
return {
{
"nvim-neo-tree/neo-tree.nvim",
branch = "v3.x",
dependencies = {
"nvim-lua/plenary.nvim",
"nvim-tree/nvim-web-devicons",
"MunifTanjim/nui.nvim",
},
cmd = "Neotree",
keys = {
{ "<LEADER>f", "<CMD>:Neotree toggle<CR>" }
},
}
{
"nvim-neo-tree/neo-tree.nvim",
branch = "v3.x",
dependencies = {
"nvim-lua/plenary.nvim",
"nvim-tree/nvim-web-devicons",
"MunifTanjim/nui.nvim",
},
cmd = "Neotree",
keys = {
{ "<LEADER>f", "<CMD>:Neotree toggle<CR>", desc = "Toggle NeoTree" },
},
},
}

View File

@@ -1,6 +1,6 @@
return {
-- Поддержка русского языка в командном режиме
{
"powerman/vim-plugin-ruscmd"
}
-- Поддержка русского языка в командном режиме
-- {
-- "powerman/vim-plugin-ruscmd",
-- },
}

View File

@@ -1,14 +1,14 @@
return {
-- Строка состояния
-- (можно конфигурировать, пока не разобрался)
-- {
-- "itchyny/lightline.vim"
-- }
-- Строка состояния
-- (можно конфигурировать, пока не разобрался)
-- {
-- "itchyny/lightline.vim"
-- }
-- Лучше выглядит и кастомизируется
{
"nvim-lualine/lualine.nvim",
event = { "BufReadPre", "BufNewFile" },
opts = {}
}
-- Лучше выглядит и кастомизируется
{
"nvim-lualine/lualine.nvim",
event = { "BufReadPre", "BufNewFile" },
opts = {},
},
}

View File

@@ -1,20 +1,18 @@
return {
{
"kylechui/nvim-surround",
config = function()
require("nvim-surround").setup()
end
{
"kylechui/nvim-surround",
event = "VeryLazy",
-- insert = "<C-g>s",
-- insert_line = "<C-g>S",
-- normal = "ys",
-- normal_cur = "yss",
-- normal_line = "yS",
-- normal_cur_line = "ySS",
-- visual = "S",
-- visual_line = "gS",
-- delete = "ds",
-- change = "cs",
-- change_line = "cS",
},
-- insert = "<C-g>s",
-- insert_line = "<C-g>S",
-- normal = "ys",
-- normal_cur = "yss",
-- normal_line = "yS",
-- normal_cur_line = "ySS",
-- visual = "S",
-- visual_line = "gS",
-- delete = "ds",
-- change = "cs",
-- change_line = "cS",
},
}

View File

@@ -1,48 +1,56 @@
return {
{
-- Диалоговое окно поиска
"nvim-telescope/telescope.nvim", tag = "0.1.5",
-- event = { "BufReadPre", "BufNewFile" },
dependencies = {
"nvim-lua/plenary.nvim",
"nvim-telescope/telescope-ui-select.nvim",
"nvim-telescope/telescope-file-browser.nvim",
"nvim-telescope/telescope-symbols.nvim"
},
keys = {
{ "<LEADER>tff", "<CMD>Telescope find_files<CR>" },
{ "<LEADER>tg", "<CMD>Telescope live_grep<CR>" },
{ "<LEADER>tb", "<CMD>Telescope buffers<CR>" },
{ "<LEADER>th", "<CMD>Telescope help_tags<CR>" },
{
-- Диалоговое окно поиска
"nvim-telescope/telescope.nvim",
tag = "0.1.5",
-- event = { "BufReadPre", "BufNewFile" },
dependencies = {
"nvim-lua/plenary.nvim",
"nvim-telescope/telescope-ui-select.nvim",
"nvim-telescope/telescope-file-browser.nvim",
"nvim-telescope/telescope-symbols.nvim",
},
keys = {
{ "<LEADER>tf", "<CMD>Telescope find_files<CR>" },
{ "<LEADER>tg", "<CMD>Telescope live_grep<CR>" },
{ "<LEADER>tb", "<CMD>Telescope buffers<CR>" },
{ "<LEADER>tfb", "<CMD>Telescope file_browser<CR>" },
{ "<LEADER>tfb", "<CMD>Telescope file_browser<CR>" },
{ "<LEADER>ts", "<CMD>Telescope symbols<CR>" }
},
config = function()
local telescope = require("telescope")
local actions = require("telescope.actions")
telescope.setup({
extensions = {
["ui-select"] = {
require("telescope.themes").get_dropdown({})
},
["file_browser"] = {
theme = "ivy",
},
["symbols"] = {}
},
pickers = {
buffers = {
mappings = {
i = { ["<C-d>"] = actions.delete_buffer + actions.move_to_top },
n = { ["<C-d>"] = actions.delete_buffer + actions.move_to_top }
}
}
}
})
{ "<LEADER>gc", "<CMD>Telescope git_bcommits<CR>" },
{ "<LEADER>gb", "<CMD>Telescope git_branches<CR>" },
{ "<LEADER>gs", "<CMD>Telescope git_branches<CR>" },
telescope.load_extension("file_browser")
telescope.load_extension("ui-select")
end,
}
{ "<LEADER>ts", "<CMD>Telescope symbols<CR>" },
{ "<LEADER>th", "<CMD>Telescope help_tags<CR>" },
-- { "<LEADER>tn", "<CMD>Telescope fidget<CR>" },
},
config = function()
local telescope = require("telescope")
local actions = require("telescope.actions")
telescope.setup({
extensions = {
["ui-select"] = {
require("telescope.themes").get_dropdown({}),
},
["file_browser"] = {
theme = "ivy",
},
["symbols"] = {},
},
pickers = {
buffers = {
mappings = {
i = { ["<C-d>"] = actions.delete_buffer + actions.move_to_top },
n = { ["<C-d>"] = actions.delete_buffer + actions.move_to_top },
},
},
},
})
telescope.load_extension("file_browser")
telescope.load_extension("ui-select")
telescope.load_extension("fidget")
end,
},
}

View File

@@ -1,18 +1,17 @@
return {
{
"akinsho/toggleterm.nvim",
version = "*",
config = true,
keys = {
{ "<LEADER>T", "<CMD>ToggleTerm<CR>" },
{ "<LEADER>Tf", "<CMD>ToggleTerm direction=float<CR>" },
{ "<LEADER>Th", "<CMD>ToggleTerm direction=horizontal<CR>" },
{ "<LEADER>Tv", "<CMD>ToggleTerm direction=vertical<CR>" },
{ "<ESC>", [[<C-\><C-n>]], mode = "t" },
{ "<C-T>", "<CMD>ToggleTerm<CR>", mode = "t" },
{ "<C-d>", false, mode = "t" },
{ "<C-T>c", [[<C-\><C-n><CMD>:bd!<CR>]], mode = "t" }
}
}
{
"akinsho/toggleterm.nvim",
version = "*",
config = true,
keys = {
{ "<LEADER>T", "<CMD>ToggleTerm<CR>" },
{ "<LEADER>Tf", "<CMD>ToggleTerm direction=float<CR>" },
{ "<LEADER>Th", "<CMD>ToggleTerm direction=horizontal<CR>" },
{ "<LEADER>Tv", "<CMD>ToggleTerm direction=vertical<CR>" },
{ "<ESC>", [[<C-\><C-n>]], mode = "t" },
{ "<C-T>", "<CMD>ToggleTerm<CR>", mode = "t" },
{ "<C-d>", false, mode = "t" },
{ "<C-T>c", [[<C-\><C-n><CMD>:bd!<CR>]], mode = "t" },
},
},
}

View File

@@ -1,16 +1,16 @@
return {
{
"folke/todo-comments.nvim",
dependencies = {
"nvim-lua/plenary.nvim",
"folke/trouble.nvim"
},
opts = {},
config = function()
require("todo-comments").setup()
end,
keys = {
{ "<LEADER>Ct", "<CMD>TroubleToggle todo<CR>" }
}
}
{
"folke/todo-comments.nvim",
dependencies = {
"nvim-lua/plenary.nvim",
"folke/trouble.nvim",
},
opts = {},
config = function()
require("todo-comments").setup()
end,
keys = {
{ "<LEADER>Ct", "<CMD>TroubleToggle todo<CR>" },
},
},
}

View File

@@ -1,31 +1,37 @@
return {
{
-- Подсветка синтаксиса
"nvim-treesitter/nvim-treesitter",
dependencies = {
"windwp/nvim-ts-autotag",
},
build = ":TSUpdate",
config = function ()
local configs = require("nvim-treesitter.configs")
configs.setup({
ensure_installed = {
"html", "markdown", "latex",
"css", "scss", -- "less", not found
"javascript", -- "jsx", not found
"typescript", "tsx",
"python", "lua",
"vim", "vimdoc", "query",
"bash",
"c",
"json", "yaml",
},
sync_install = false,
highlight = { enable = true },
incremental_selection = { enable = true },
indent = { enable = true },
autotag = { enable = true }
})
end
}
{
-- Подсветка синтаксиса
"nvim-treesitter/nvim-treesitter",
dependencies = {
"windwp/nvim-ts-autotag",
"m4xshen/autoclose.nvim",
},
build = ":TSUpdate",
config = function()
local configs = require("nvim-treesitter.configs")
configs.setup({
auto_install = true,
sync_install = false,
highlight = { enable = true },
incremental_selection = { enable = true },
indent = { enable = true },
-- autotag = { enable = true }
disable = { "tex", "latex" },
})
require("nvim-ts-autotag").setup({
-- Опциональные настройки
enable_close = true,
enable_rename = true,
enable_close_on_slash = false,
})
require("autoclose").setup()
vim.api.nvim_create_autocmd({ "BufRead", "BufNewFile" }, {
pattern = "*.tpp",
callback = function()
vim.bo.filetype = "cpp"
end,
})
end,
},
}

View File

@@ -1,7 +1,7 @@
return {
{
"folke/trouble.nvim",
dependencies = { "nvim-tree/nvim-web-devicons" },
{
"folke/trouble.nvim",
dependencies = { "nvim-tree/nvim-web-devicons" },
keys = {
{ "<LEADER>tt", "<CMD>TroubleToggle<CR>" },
{ "<LEADER>tc", "<CMD>TroubleClose<CR>" },
@@ -15,6 +15,6 @@ return {
{ "<LEADER>tlr", "<CMD>TroubleToggle lsp_references<CR>" },
{ "<LEADER>tld", "<CMD>TroubleToggle lsp_definitions<CR>" },
{ "<LEADER>tltd", "<CMD>TroubleToggle lsp_type_definitions<CR>" },
}
}
},
},
}

View File

@@ -0,0 +1,9 @@
return {
{
"folke/which-key.nvim",
event = "VeryLazy",
ignore = {
pattern = { "^.*[А-Яа-я].*$" },
},
},
}

View File

@@ -1,6 +1,6 @@
backend = "glx";
corner-radius = 10;
corner-radius = 5;
fading = true;
fade-delta = 8;
fade-delta = 4;

View File

@@ -26,8 +26,8 @@ module-margin = 1
font-0 = CodeNewRoman Nerd Font Mono:pixelsize=10;3
modules-left = xworkspaces
modules-right = pulseaudio xkeyboard date numen systray
modules-left = date xworkspaces
modules-right = backlight pulseaudio xkeyboard numen systray
cursor-click = pointer
cursor-scroll = ns-resize
@@ -66,6 +66,14 @@ interval = 1
use-ui-max = false
click-right = /bin/bash -c "pactl set-sink-mute @DEFAULT_SINK@ toggle"
[module/backlight]
type = internal/backlight
; See cards: ls -1 /sys/class/backlight/
card = intel_backlight
enable-scroll = true
scroll-interval = 5
label = 󰌵 %percentage%%
[module/xkeyboard]
type = internal/xkeyboard
@@ -77,7 +85,7 @@ type = internal/date
interval = 1
date = %H:%M
date-alt = %Y-%m-%d %H:%M:%S
date-alt = %d.%m.%y %H:%M:%S
label = %date%
label-foreground = ${colors.primary}
@@ -86,7 +94,7 @@ label-foreground = ${colors.primary}
type = internal/tray
format-margin = 0pt
tray-spacing = 2pt
tray-spacing = 4pt
[module/numen]
type = custom/script
@@ -94,10 +102,10 @@ exec = [[ $(pgrep numen) ]] && cat ~/.config/numen/current_mode || echo ""
interval = 1
click-left = pkill numen
; [module/weather]
; type = custom/script
; exec = curl -s -H "Accept-Language: ru" wttr.in/Samara?format="%c+%t+%m"
; interval = 1
[module/weather]
type = custom/script
exec = curl -s -h "accept-language: ru" wttr.in/samara?format="%c+%t+%m"
interval = 1
[settings]
screenchange-reload = true