mirror of
https://github.com/StepanovPlaton/dotfiles.git
synced 2026-04-03 20:30:46 +04:00
04-01-2026
This commit is contained in:
6
.bashrc
6
.bashrc
@@ -19,6 +19,10 @@ alias dmenu_wal='dmenu_run -nb "$color0" -nf "$color15" -sb "$color1" -sf "$colo
|
|||||||
#alias sudo="sudo -A"
|
#alias sudo="sudo -A"
|
||||||
|
|
||||||
alias numen_full="numen ~/.config/numen/phrases.phrases --phraselog=phrases.txt"
|
alias numen_full="numen ~/.config/numen/phrases.phrases --phraselog=phrases.txt"
|
||||||
|
alias ll="ls -lah --color"
|
||||||
|
|
||||||
export PATH="~/.scripts:$PATH"
|
export PATH="~/.scripts:$PATH"
|
||||||
|
export PATH="/usr/lib/jvm/default/bin:$PATH"
|
||||||
|
|
||||||
|
# Created by `pipx` on 2025-06-29 13:27:39
|
||||||
|
export PATH="$PATH:/home/dwarf/.local/bin"
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ bspc config focused_border_color "$color2"
|
|||||||
|
|
||||||
bspc config top_padding 30
|
bspc config top_padding 30
|
||||||
|
|
||||||
telegram-desktop -startintray &
|
Telegram -startintray &
|
||||||
bspc rule -a TelegramDesktop desktop='^5'
|
bspc rule -a TelegramDesktop desktop='^5'
|
||||||
|
|
||||||
bspc rule -a St_float state=pseudo_tiled
|
bspc rule -a St_float state=pseudo_tiled
|
||||||
|
|||||||
@@ -75,7 +75,8 @@ ${color0}Hostname: $alignr${exec cat /etc/hostname}$color
|
|||||||
${color0}Connection: $alignr\
|
${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}\
|
${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
|
$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
|
${color1}${goto 25}CPU${color0} $hr $color
|
||||||
${color0}Frequency (GHz): $alignr$freq_g$color
|
${color0}Frequency (GHz): $alignr$freq_g$color
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ conky.config = {
|
|||||||
-- own_window_argb_value = 180,
|
-- own_window_argb_value = 180,
|
||||||
|
|
||||||
-- Скорость обновления
|
-- Скорость обновления
|
||||||
update_interval = 1,
|
update_interval = 60,
|
||||||
|
|
||||||
|
|
||||||
cpu_avg_samples = 2,
|
cpu_avg_samples = 2,
|
||||||
|
|||||||
24
.config/dunst/config.conf
Normal file
24
.config/dunst/config.conf
Normal 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"
|
||||||
@@ -1,41 +1,44 @@
|
|||||||
{
|
{
|
||||||
"LuaSnip": { "branch": "master", "commit": "57c9f5c31b3d712376c704673eac8e948c82e9c1" },
|
"Comment.nvim": { "branch": "master", "commit": "e30b7f2008e52442154b66f7c519bfd2f1e32acb" },
|
||||||
"buffer_manager.nvim": { "branch": "main", "commit": "4fa47504a23d9a94216f02b1d84f7b0a2dbe2b72" },
|
"LuaSnip": { "branch": "master", "commit": "21f74f7ba8c49f95f9d7c8293b147c2901dd2d3a" },
|
||||||
"cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" },
|
"autoclose.nvim": { "branch": "main", "commit": "3f86702b54a861a17d7994b2e32a7c648cb12fb1" },
|
||||||
"cmp-cmdline": { "branch": "main", "commit": "8ee981b4a91f536f52add291594e89fb6645e451" },
|
"cmp-buffer": { "branch": "main", "commit": "b74fab3656eea9de20a9b8116afa3cfc4ec09657" },
|
||||||
"cmp-nvim-lsp": { "branch": "main", "commit": "5af77f54de1b16c34b23cba810150689a3a90312" },
|
"cmp-cmdline": { "branch": "main", "commit": "d126061b624e0af6c3a556428712dd4d4194ec6d" },
|
||||||
"cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" },
|
"cmp-nvim-lsp": { "branch": "main", "commit": "bd5a7d6db125d4654b50eeae9f5217f24bb22fd3" },
|
||||||
"cmp_luasnip": { "branch": "master", "commit": "05a9ab28b53f71d1aece421ef32fee2cb857a843" },
|
"cmp-path": { "branch": "main", "commit": "c642487086dbd9a93160e1679a1327be111cbc25" },
|
||||||
"fidget.nvim": { "branch": "main", "commit": "eb9fccf7fda8b641814f31d47926202f229980b3" },
|
"cmp_luasnip": { "branch": "master", "commit": "98d9cb5c2c38532bd9bdb481067b20fea8f32e90" },
|
||||||
"friendly-snippets": { "branch": "main", "commit": "53d3df271d031c405255e99410628c26a8f0d2b0" },
|
"fidget.nvim": { "branch": "main", "commit": "4d5858bd4c471c895060e1b9f3575f1551184dc5" },
|
||||||
"gitsigns.nvim": { "branch": "main", "commit": "d195f0c35ced5174d3ecce1c4c8ebb3b5bc23fa9" },
|
"flit.nvim": { "branch": "main", "commit": "513e38abe61237c53a9e983e45595b1d2e7d5391" },
|
||||||
"gruvbox.nvim": { "branch": "main", "commit": "f0e029a3989691eb38cfa9272b75251c62a00821" },
|
"friendly-snippets": { "branch": "main", "commit": "572f5660cf05f8cd8834e096d7b4c921ba18e175" },
|
||||||
"lazy.nvim": { "branch": "main", "commit": "96584866b9c5e998cbae300594d0ccfd0c464627" },
|
"gitsigns.nvim": { "branch": "main", "commit": "f780609807eca1f783a36a8a31c30a48fbe150c5" },
|
||||||
"lualine.nvim": { "branch": "master", "commit": "2248ef254d0a1488a72041cfb45ca9caada6d994" },
|
"gruvbox.nvim": { "branch": "main", "commit": "5e0a460d8e0f7f669c158dedd5f9ae2bcac31437" },
|
||||||
"mason-lspconfig.nvim": { "branch": "main", "commit": "56e435e09f8729af2d41973e81a0db440f8fe9c9" },
|
"knap": { "branch": "main", "commit": "7db44d0bb760120142cc1e8f43e44976de59c2f6" },
|
||||||
"mason-null-ls.nvim": { "branch": "main", "commit": "788499e735c6e71ba25c08e7df159e8dbf94c6ec" },
|
"lazy.nvim": { "branch": "main", "commit": "6c3bda4aca61a13a9c63f1c1d1b16b9d3be90d7a" },
|
||||||
"mason-registry": { "branch": "main", "commit": "a23adcb7eb14513739c9d5fe52814611f158bebd" },
|
"leap.nvim": { "branch": "main", "commit": "657da3f8aa2cb8359ce90e8bc0ed5ca0d9665383" },
|
||||||
"mason.nvim": { "branch": "main", "commit": "41e75af1f578e55ba050c863587cffde3556ffa6" },
|
"lualine.nvim": { "branch": "master", "commit": "b8c23159c0161f4b89196f74ee3a6d02cdc3a955" },
|
||||||
"neo-tree.nvim": { "branch": "v3.x", "commit": "77d9f484b88fd380386b46ed9206e5374d69d9d8" },
|
"markview.nvim": { "branch": "main", "commit": "e6b0f5aee8105adab6077509c46459812db4cffa" },
|
||||||
"none-ls.nvim": { "branch": "main", "commit": "e7382de51b4cf629e56f1fa18192e716e5ba8145" },
|
"mason-lspconfig.nvim": { "branch": "main", "commit": "7f9a39fcd2ac6e979001f857727d606888f5909c" },
|
||||||
"nui.nvim": { "branch": "main", "commit": "c9b4de623d19a85b353ff70d2ae9c77143abe69c" },
|
"mason-null-ls.nvim": { "branch": "main", "commit": "de19726de7260c68d94691afb057fa73d3cc53e7" },
|
||||||
"nvim-cmp": { "branch": "main", "commit": "538e37ba87284942c1d76ed38dd497e54e65b891" },
|
"mason-registry": { "branch": "main", "commit": "2b73015a7f85d79f167c9d30835dfb3b7e9afc4e" },
|
||||||
"nvim-lspconfig": { "branch": "master", "commit": "9099871a7c7e1c16122e00d70208a2cd02078d80" },
|
"mason.nvim": { "branch": "main", "commit": "7dc4facca9702f95353d5a1f87daf23d78e31c2a" },
|
||||||
"nvim-surround": { "branch": "main", "commit": "633a0ab03159569a66b65671b0ffb1a6aed6cf18" },
|
"neo-tree.nvim": { "branch": "v3.x", "commit": "f1deac7ecec88c28a250d890ba7bb35843e69cbd" },
|
||||||
"nvim-treesitter": { "branch": "master", "commit": "27f68c0b6a87cbad900b3d016425450af8268026" },
|
"none-ls.nvim": { "branch": "main", "commit": "f0b3dc073153a08fd1e32869ed30b87a3bb4230f" },
|
||||||
"nvim-ts-autotag": { "branch": "main", "commit": "8515e48a277a2f4947d91004d9aa92c29fdc5e18" },
|
"nui.nvim": { "branch": "main", "commit": "de740991c12411b663994b2860f1a4fd0937c130" },
|
||||||
"nvim-ufo": { "branch": "main", "commit": "c6d88523f574024b788f1c3400c5d5b9bb1a0407" },
|
"nvim-cmp": { "branch": "main", "commit": "b5311ab3ed9c846b585c0c15b7559be131ec4be9" },
|
||||||
"nvim-web-devicons": { "branch": "master", "commit": "43aa2ddf476012a2155f5f969ee55ab17174da7a" },
|
"nvim-lspconfig": { "branch": "master", "commit": "d9879110d0422a566fa01d732556f4d5515e1738" },
|
||||||
"plenary.nvim": { "branch": "master", "commit": "55d9fe89e33efd26f532ef20223e5f9430c8b0c0" },
|
"nvim-surround": { "branch": "main", "commit": "a868c256c861044beb9794b4dd126480dcdfbdad" },
|
||||||
"promise-async": { "branch": "main", "commit": "94f6f03c6c1e2aab551aacdf0c1e597a7269abb6" },
|
"nvim-treesitter": { "branch": "master", "commit": "42fc28ba918343ebfd5565147a42a26580579482" },
|
||||||
"telescope-file-browser.nvim": { "branch": "master", "commit": "8e0543365fe5781c9babea7db89ef06bcff3716d" },
|
"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-symbols.nvim": { "branch": "master", "commit": "a6d0127a53d39b9fc2af75bd169d288166118aec" },
|
||||||
"telescope-ui-select.nvim": { "branch": "master", "commit": "6e51d7da30bd139a6950adf2a47fda6df9fa06d2" },
|
"telescope-ui-select.nvim": { "branch": "master", "commit": "6e51d7da30bd139a6950adf2a47fda6df9fa06d2" },
|
||||||
"telescope.nvim": { "branch": "master", "commit": "d90956833d7c27e73c621a61f20b29fdb7122709" },
|
"telescope.nvim": { "branch": "master", "commit": "d90956833d7c27e73c621a61f20b29fdb7122709" },
|
||||||
"todo-comments.nvim": { "branch": "main", "commit": "4a6737a8d70fe1ac55c64dfa47fcb189ca431872" },
|
"todo-comments.nvim": { "branch": "main", "commit": "304a8d204ee787d2544d8bc23cd38d2f929e7cc5" },
|
||||||
"toggleterm.nvim": { "branch": "main", "commit": "cbd041d91b90cd3c02df03fe6133208888f8e008" },
|
"toggleterm.nvim": { "branch": "main", "commit": "50ea089fc548917cc3cc16b46a8211833b9e3c7c" },
|
||||||
"trouble.nvim": { "branch": "main", "commit": "f1168feada93c0154ede4d1fe9183bf69bac54ea" },
|
"trouble.nvim": { "branch": "main", "commit": "85bedb7eb7fa331a2ccbecb9202d8abba64d37b3" },
|
||||||
"vim-commentary": { "branch": "master", "commit": "e87cd90dc09c2a203e13af9704bd0ef79303d755" },
|
"vim-css-color": { "branch": "master", "commit": "14fd934cdd9ca1ac0e53511094e612eb9bace373" },
|
||||||
"vim-css-color": { "branch": "master", "commit": "6cc65734bc7105d9677ca54e2255fcbc953ba6bf" },
|
"vim-repeat": { "branch": "master", "commit": "65846025c15494983dafe5e3b46c8f88ab2e9635" },
|
||||||
"vim-plugin-ruscmd": { "branch": "master", "commit": "e952abbea092e420b128936a0c284fb522612c3a" }
|
"which-key.nvim": { "branch": "main", "commit": "370ec46f710e058c9c1646273e6b225acf47cbed" }
|
||||||
}
|
}
|
||||||
@@ -7,8 +7,9 @@ local opt = vim.opt -- global/buffer/windows-scoped options
|
|||||||
-- Главные
|
-- Главные
|
||||||
-----------------------------------------------------------
|
-----------------------------------------------------------
|
||||||
|
|
||||||
-- Откллючить поддержку со старым vi
|
-- Отключить поддержку со старым vi
|
||||||
g.nocompatible = true
|
-- g.nocompatible = true
|
||||||
|
opt.compatible = false
|
||||||
-- Не делать бекап файла
|
-- Не делать бекап файла
|
||||||
g.nobackup = true
|
g.nobackup = true
|
||||||
g.nowritebackup = true
|
g.nowritebackup = true
|
||||||
@@ -18,9 +19,9 @@ g.encoding = "utf-8"
|
|||||||
-- Буфер обмена с системой (нужен xclip)
|
-- Буфер обмена с системой (нужен xclip)
|
||||||
opt.clipboard = "unnamed,unnamedplus"
|
opt.clipboard = "unnamed,unnamedplus"
|
||||||
-- Разделитель на 80 символов
|
-- Разделитель на 80 символов
|
||||||
opt.colorcolumn = '80'
|
opt.colorcolumn = "80"
|
||||||
-- Словари рус eng
|
-- Словари рус eng
|
||||||
opt.spelllang = { 'en_us', 'ru' }
|
opt.spelllang = { "en_us", "ru" }
|
||||||
-- Включаем нумерацию строк
|
-- Включаем нумерацию строк
|
||||||
opt.number = true
|
opt.number = true
|
||||||
-- Вкл. относительную нумерацию строк
|
-- Вкл. относительную нумерацию строк
|
||||||
@@ -46,11 +47,36 @@ opt.swapfile = false
|
|||||||
-- g.loaded_netrw = 1
|
-- g.loaded_netrw = 1
|
||||||
-- g.loaded_netrwPlugin = 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
|
-- Нужно для поддержки pywal
|
||||||
-- opt.termguicolors = false
|
-- opt.termguicolors = false
|
||||||
-- Устанавливаем тему из pywal
|
-- Устанавливаем тему из pywal
|
||||||
-- cmd([[
|
-- cmd([[
|
||||||
@@ -83,22 +109,110 @@ cmd([[autocmd FileType text,markdown,html,xhtml,javascript setlocal cc=0]])
|
|||||||
|
|
||||||
-- 2 пробела для выбранных типов файлов
|
-- 2 пробела для выбранных типов файлов
|
||||||
cmd([[
|
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 последний раз редактировал файл
|
-- Запоминает где nvim последний раз редактировал файл
|
||||||
cmd [[
|
cmd([[
|
||||||
autocmd BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif
|
autocmd BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif
|
||||||
]]
|
]])
|
||||||
|
|
||||||
-- Подсвечивает на доли секунды скопированную часть текста
|
-- Подсвечивает на доли секунды скопированную часть текста
|
||||||
exec([[
|
exec(
|
||||||
|
[[
|
||||||
augroup YankHighlight
|
augroup YankHighlight
|
||||||
autocmd!
|
autocmd!
|
||||||
autocmd TextYankPost * silent! lua vim.highlight.on_yank{higroup="IncSearch", timeout=300}
|
autocmd TextYankPost * silent! lua vim.highlight.on_yank{higroup="IncSearch", timeout=300}
|
||||||
augroup end
|
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,
|
||||||
|
-- })
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ local default_opts = { noremap = true, silent = true }
|
|||||||
|
|
||||||
local function map(mode, l, r, opts)
|
local function map(mode, l, r, opts)
|
||||||
opts = opts or default_opts
|
opts = opts or default_opts
|
||||||
opts.buffer = bufnr
|
-- opts.buffer = bufnr
|
||||||
vim.keymap.set(mode, l, r, opts)
|
vim.keymap.set(mode, l, r, opts)
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -14,34 +14,116 @@ end
|
|||||||
vim.keymap.set("n", " ", "<Nop>", { silent = true, remap = false })
|
vim.keymap.set("n", " ", "<Nop>", { silent = true, remap = false })
|
||||||
vim.g.mapleader = " "
|
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
|
-- 'Нажимает' на ESC при быстром нажатии jj
|
||||||
map('i', 'оо', '<Esc>')
|
-- map("i", "оо", "<Esc>")
|
||||||
map('i', 'jj', '<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
|
-- Отключение стрелочек. Использовать hjkl
|
||||||
map('', '<up>', ':echoe "Use k"<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("", "<down>", ':echoe "Use j"<CR>', { noremap = true, silent = false })
|
||||||
map('', '<left>', ':echoe "Use h"<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("", "<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", "<Up>", "<cmd>resize +2<CR>")
|
||||||
map('n', "<C-k>", "<C-w>k")
|
map("n", "<Down>", "<cmd>resize -2<CR>")
|
||||||
map('n', "<C-l>", "<C-w>l")
|
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 .. F12
|
||||||
-----------------------------------------------------------
|
-----------------------------------------------------------
|
||||||
|
|
||||||
-- По F1 очищаем последний поиск с подсветкой
|
-- По F1 очищаем последний поиск с подсветкой
|
||||||
map('n', '<F1>', ':nohl<CR>')
|
-- map("n", "<F1>", ":nohl<CR>")
|
||||||
map('n', '<leader>nh', ':nohl<CR>')
|
map("n", "<leader>nh", ":nohl<CR>")
|
||||||
|
|
||||||
-- <F5> разные вариации нумераций строк, можно переключаться
|
-- <F5> разные вариации нумераций строк, можно переключаться
|
||||||
map('n', '<F5>', ':exec &nu==&rnu? "se nu!" : "se rnu!"<CR>')
|
map("n", "<F5>", ':exec &nu==&rnu? "se nu!" : "se rnu!"<CR>')
|
||||||
|
|
||||||
-- <F11> Проверка орфографии для русского и английского языка
|
-- <F11> Проверка орфографии для русского и английского языка
|
||||||
map('n', '<F11>', ':set spell!<CR>')
|
map("n", "<F11>", ":set spell!<CR>")
|
||||||
map('i', '<F11>', '<C-O>:set spell!<CR>')
|
map("i", "<F11>", "<C-O>:set spell!<CR>")
|
||||||
|
|||||||
1
.config/nvim/lua/plugins/ai.lua
Normal file
1
.config/nvim/lua/plugins/ai.lua
Normal file
@@ -0,0 +1 @@
|
|||||||
|
return {}
|
||||||
@@ -1,10 +1,14 @@
|
|||||||
return {
|
return {
|
||||||
{
|
{
|
||||||
"hrsh7th/nvim-cmp",
|
"hrsh7th/nvim-cmp",
|
||||||
|
event = "InsertEnter",
|
||||||
dependencies = {
|
dependencies = {
|
||||||
"hrsh7th/cmp-buffer",
|
"hrsh7th/cmp-buffer",
|
||||||
"hrsh7th/cmp-path",
|
"hrsh7th/cmp-path",
|
||||||
"hrsh7th/cmp-cmdline",
|
"hrsh7th/cmp-cmdline",
|
||||||
|
|
||||||
|
"hrsh7th/cmp-nvim-lsp",
|
||||||
|
|
||||||
"L3MON4D3/LuaSnip",
|
"L3MON4D3/LuaSnip",
|
||||||
"rafamadriz/friendly-snippets",
|
"rafamadriz/friendly-snippets",
|
||||||
"saadparwaiz1/cmp_luasnip",
|
"saadparwaiz1/cmp_luasnip",
|
||||||
@@ -16,56 +20,139 @@ return {
|
|||||||
require("luasnip.loaders.from_vscode").lazy_load()
|
require("luasnip.loaders.from_vscode").lazy_load()
|
||||||
|
|
||||||
local has_words_before = function()
|
local has_words_before = function()
|
||||||
unpack = unpack or table.unpack
|
if vim.api.nvim_get_mode().mode == "c" then
|
||||||
local line, col = unpack(vim.api.nvim_win_get_cursor(0))
|
return true
|
||||||
return col ~= 0 and vim.api.nvim_buf_get_lines(0, line - 1, line, true)[1]:sub(col, col):match("%s") == nil
|
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
|
end
|
||||||
|
|
||||||
cmp.setup({
|
cmp.setup({
|
||||||
|
-- Производительность
|
||||||
|
performance = {
|
||||||
|
debounce = 60,
|
||||||
|
throttle = 30,
|
||||||
|
fetching_timeout = 200,
|
||||||
|
async_budget = 1,
|
||||||
|
max_view_entries = 10,
|
||||||
|
},
|
||||||
snippet = {
|
snippet = {
|
||||||
expand = function(args)
|
expand = function(args)
|
||||||
luasnip.lsp_expand(args.body)
|
luasnip.lsp_expand(args.body)
|
||||||
end,
|
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 = {
|
mapping = {
|
||||||
["<Tab>"] = cmp.mapping(function(fallback)
|
["<Tab>"] = cmp.mapping(function(fallback)
|
||||||
if cmp.visible() then cmp.select_next_item()
|
if cmp.visible() then
|
||||||
elseif luasnip.expand_or_jumpable() then luasnip.expand_or_jump()
|
cmp.select_next_item()
|
||||||
elseif has_words_before() then cmp.complete()
|
elseif luasnip.expand_or_jumpable() then
|
||||||
else fallback() end
|
luasnip.expand_or_jump()
|
||||||
|
elseif has_words_before() then
|
||||||
|
cmp.complete()
|
||||||
|
else
|
||||||
|
fallback()
|
||||||
|
end
|
||||||
end, { "i", "s" }),
|
end, { "i", "s" }),
|
||||||
["<S-Tab>"] = cmp.mapping(function(fallback)
|
["<S-Tab>"] = cmp.mapping(function(fallback)
|
||||||
if cmp.visible() then cmp.select_prev_item()
|
if cmp.visible() then
|
||||||
elseif luasnip.jumpable(-1) then luasnip.jump(-1)
|
cmp.select_prev_item()
|
||||||
else fallback() end
|
elseif luasnip.jumpable(-1) then
|
||||||
|
luasnip.jump(-1)
|
||||||
|
else
|
||||||
|
fallback()
|
||||||
|
end
|
||||||
end, { "i", "s" }),
|
end, { "i", "s" }),
|
||||||
['<C-Space>'] = cmp.mapping.complete(),
|
["<C-b>"] = cmp.mapping.scroll_docs(-4),
|
||||||
['<C-e>'] = cmp.mapping.abort(),
|
["<C-f>"] = cmp.mapping.scroll_docs(4),
|
||||||
['<CR>'] = cmp.mapping.confirm({ select = true }),
|
["<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", -- призрачный текст
|
||||||
|
},
|
||||||
},
|
},
|
||||||
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.filetype('gitcommit', {
|
cmp.setup.cmdline({ "/", "?" }, {
|
||||||
sources = cmp.config.sources(
|
|
||||||
{{ name = 'git' }},
|
|
||||||
{{ name = 'buffer' }}
|
|
||||||
)
|
|
||||||
})
|
|
||||||
cmp.setup.cmdline({ '/', '?' }, {
|
|
||||||
mapping = cmp.mapping.preset.cmdline(),
|
mapping = cmp.mapping.preset.cmdline(),
|
||||||
sources = {{ name = 'buffer' }}
|
sources = { { name = "buffer" } },
|
||||||
})
|
})
|
||||||
cmp.setup.cmdline(':', {
|
cmp.setup.cmdline(":", {
|
||||||
mapping = cmp.mapping.preset.cmdline(),
|
mapping = cmp.mapping.preset.cmdline(),
|
||||||
sources = cmp.config.sources(
|
sources = cmp.config.sources({ { name = "path" } }, { { name = "cmdline" } }),
|
||||||
{{ name = 'path' }},
|
|
||||||
{{ name = 'cmdline' }}
|
|
||||||
)
|
|
||||||
})
|
})
|
||||||
end,
|
end,
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -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 }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
return {
|
return {
|
||||||
-- Подсветка цвета (не только в css)
|
-- Подсветка цвета (не только в css)
|
||||||
{
|
{
|
||||||
"ap/vim-css-color"
|
"ap/vim-css-color",
|
||||||
}
|
},
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,16 +14,109 @@ return {
|
|||||||
priority = 1000,
|
priority = 1000,
|
||||||
config = function()
|
config = function()
|
||||||
vim.o.background = "dark"
|
vim.o.background = "dark"
|
||||||
vim.cmd([[colorscheme gruvbox]])
|
-- vim.cmd([[colorscheme gruvbox]])
|
||||||
end
|
require("gruvbox").setup({
|
||||||
}
|
-- Основные настройки контраста
|
||||||
|
contrast = "hard", -- "hard", "medium", "soft"
|
||||||
|
|
||||||
|
-- Тёмная версия
|
||||||
|
terminal_colors = true,
|
||||||
|
|
||||||
|
-- Настройки яркости
|
||||||
|
undercurl = true,
|
||||||
|
underline = true,
|
||||||
|
bold = true,
|
||||||
|
italic = {
|
||||||
|
strings = false,
|
||||||
|
comments = false,
|
||||||
|
operators = false,
|
||||||
|
folds = false,
|
||||||
|
},
|
||||||
|
|
||||||
|
-- Цветовые настройки
|
||||||
|
invert_selection = false,
|
||||||
|
invert_signs = false,
|
||||||
|
invert_tabline = false,
|
||||||
|
invert_intend_guides = false,
|
||||||
|
|
||||||
|
-- Более тёмные цвета
|
||||||
|
palette_overrides = {
|
||||||
|
dark0_hard = "#0d0e0f", -- самый тёмный фон
|
||||||
|
dark0 = "#1d2021", -- стандартный фон
|
||||||
|
dark1 = "#282828",
|
||||||
|
dark2 = "#32302f",
|
||||||
|
dark3 = "#3c3836",
|
||||||
|
dark4 = "#504945",
|
||||||
|
|
||||||
|
-- Более насыщенные цвета
|
||||||
|
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",
|
-- "RRethy/nvim-base16",
|
||||||
-- config = function()
|
-- config = function()
|
||||||
-- vim.cmd([[colorscheme base16-gruvbox-dark-hard]])
|
-- vim.cmd([[colorscheme base16-gruvbox-dark-hard]])
|
||||||
-- end
|
-- end,
|
||||||
-- }
|
-- },
|
||||||
|
|
||||||
-- {
|
-- {
|
||||||
-- "nanotech/jellybeans.vim",
|
-- "nanotech/jellybeans.vim",
|
||||||
@@ -31,8 +124,8 @@ return {
|
|||||||
-- priority = 1000,
|
-- priority = 1000,
|
||||||
-- config = function()
|
-- config = function()
|
||||||
-- vim.cmd([[colorscheme jellybeans]])
|
-- vim.cmd([[colorscheme jellybeans]])
|
||||||
-- end
|
-- end,
|
||||||
-- }
|
-- },
|
||||||
|
|
||||||
-- {
|
-- {
|
||||||
-- "junegunn/seoul256.vim",
|
-- "junegunn/seoul256.vim",
|
||||||
@@ -46,8 +139,8 @@ return {
|
|||||||
-- "Mofiqul/vscode.nvim",
|
-- "Mofiqul/vscode.nvim",
|
||||||
-- config = function()
|
-- config = function()
|
||||||
-- require("vscode").load("dark")
|
-- require("vscode").load("dark")
|
||||||
-- end
|
-- end,
|
||||||
-- }
|
-- },
|
||||||
|
|
||||||
-- {
|
-- {
|
||||||
-- "sainnhe/everforest",
|
-- "sainnhe/everforest",
|
||||||
@@ -56,6 +149,6 @@ return {
|
|||||||
-- vim.o.background = "dark"
|
-- vim.o.background = "dark"
|
||||||
-- -- require("everforest")
|
-- -- require("everforest")
|
||||||
-- vim.cmd([[colorscheme everforest]])
|
-- vim.cmd([[colorscheme everforest]])
|
||||||
-- end
|
-- end,
|
||||||
-- }
|
-- },
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,7 +2,16 @@ return {
|
|||||||
-- Быстрое комментирование
|
-- Быстрое комментирование
|
||||||
-- gcc - закоментировать строку
|
-- gcc - закоментировать строку
|
||||||
-- (VISUAL) gc - закоментировать выделенные строки
|
-- (VISUAL) gc - закоментировать выделенные строки
|
||||||
|
-- {
|
||||||
|
-- "tpope/vim-commentary",
|
||||||
|
-- },
|
||||||
|
|
||||||
{
|
{
|
||||||
"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
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,8 +2,15 @@ return {
|
|||||||
-- Поддержка git
|
-- Поддержка git
|
||||||
{
|
{
|
||||||
"lewis6991/gitsigns.nvim",
|
"lewis6991/gitsigns.nvim",
|
||||||
config = function()
|
opts = {
|
||||||
require('gitsigns').setup()
|
signs = {
|
||||||
|
add = { text = "+" },
|
||||||
|
change = { text = "~" },
|
||||||
|
delete = { text = "_" },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
config = function(_, opts)
|
||||||
|
require("gitsigns").setup(opts)
|
||||||
|
|
||||||
local function map(mode, l, r, opts)
|
local function map(mode, l, r, opts)
|
||||||
opts = opts or { noremap = true, silent = true }
|
opts = opts or { noremap = true, silent = true }
|
||||||
@@ -13,30 +20,46 @@ return {
|
|||||||
|
|
||||||
local gs = package.loaded.gitsigns
|
local gs = package.loaded.gitsigns
|
||||||
|
|
||||||
map('n', ']c', function()
|
map("n", "]c", function()
|
||||||
if vim.wo.diff then return ']c' end
|
if vim.wo.diff then
|
||||||
vim.schedule(function() gs.next_hunk() end)
|
return "]c"
|
||||||
return '<Ignore>'
|
end
|
||||||
|
vim.schedule(function()
|
||||||
|
gs.next_hunk()
|
||||||
|
end)
|
||||||
|
return "<Ignore>"
|
||||||
end, { expr = true })
|
end, { expr = true })
|
||||||
map('n', '[c', function()
|
map("n", "[c", function()
|
||||||
if vim.wo.diff then return '[c' end
|
if vim.wo.diff then
|
||||||
vim.schedule(function() gs.prev_hunk() end)
|
return "[c"
|
||||||
return '<Ignore>'
|
end
|
||||||
|
vim.schedule(function()
|
||||||
|
gs.prev_hunk()
|
||||||
|
end)
|
||||||
|
return "<Ignore>"
|
||||||
end, { expr = true })
|
end, { expr = true })
|
||||||
|
|
||||||
map('n', '<leader>gs', gs.stage_hunk)
|
-- map("n", "<leader>gs", gs.stage_hunk)
|
||||||
map('n', '<leader>gr', gs.reset_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>gs", function()
|
||||||
map('v', '<leader>gr', function() gs.reset_hunk {vim.fn.line('.'), vim.fn.line('v')} end)
|
-- gs.stage_hunk({ vim.fn.line("."), vim.fn.line("v") })
|
||||||
map('n', '<leader>gS', gs.stage_buffer)
|
-- end)
|
||||||
map('n', '<leader>gu', gs.undo_stage_hunk)
|
-- map("v", "<leader>gr", function()
|
||||||
map('n', '<leader>gR', gs.reset_buffer)
|
-- gs.reset_hunk({ vim.fn.line("."), vim.fn.line("v") })
|
||||||
map('n', '<leader>gp', gs.preview_hunk)
|
-- end)
|
||||||
map('n', '<leader>gb', function() gs.blame_line{full=true} end)
|
-- map("n", "<leader>gS", gs.stage_buffer)
|
||||||
map('n', '<leader>gtb', gs.toggle_current_line_blame)
|
-- map("n", "<leader>gu", gs.undo_stage_hunk)
|
||||||
map('n', '<leader>gd', gs.diffthis)
|
-- map("n", "<leader>gR", gs.reset_buffer)
|
||||||
map('n', '<leader>gD', function() gs.diffthis('~') end)
|
-- map("n", "<leader>gp", gs.preview_hunk)
|
||||||
map('n', '<leader>gtd', gs.toggle_deleted)
|
-- map("n", "<leader>gb", function()
|
||||||
end
|
-- 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,
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|||||||
17
.config/nvim/lua/plugins/latex.lua
Normal file
17
.config/nvim/lua/plugins/latex.lua
Normal 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,
|
||||||
|
}
|
||||||
43
.config/nvim/lua/plugins/leap.lua
Normal file
43
.config/nvim/lua/plugins/leap.lua
Normal 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,
|
||||||
|
},
|
||||||
|
}
|
||||||
@@ -1,125 +1,235 @@
|
|||||||
return {
|
return {
|
||||||
{
|
{
|
||||||
"williamboman/mason.nvim",
|
"mason-org/mason.nvim",
|
||||||
|
opts = {},
|
||||||
dependencies = {
|
dependencies = {
|
||||||
"mason-org/mason-registry",
|
"mason-org/mason-registry",
|
||||||
},
|
},
|
||||||
opts = {}
|
},
|
||||||
|
{
|
||||||
|
"mason-org/mason-lspconfig.nvim",
|
||||||
|
opts = {
|
||||||
|
automatic_installation = true,
|
||||||
|
automatic_enable = true,
|
||||||
|
ensure_installed = {
|
||||||
|
"bashls",
|
||||||
|
"lua_ls",
|
||||||
|
|
||||||
|
"vtsls", -- ts_ls + vue support
|
||||||
|
"html",
|
||||||
|
"cssls",
|
||||||
|
"jsonls",
|
||||||
|
|
||||||
|
"pyright",
|
||||||
|
|
||||||
|
"yamlls",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
dependencies = {
|
||||||
|
"mason-org/mason.nvim",
|
||||||
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"neovim/nvim-lspconfig",
|
"neovim/nvim-lspconfig",
|
||||||
event = { "BufReadPre", "BufNewFile" },
|
event = { "BufReadPre", "BufNewFile" },
|
||||||
dependencies = {
|
dependencies = {
|
||||||
"williamboman/mason-lspconfig.nvim",
|
"hrsh7th/nvim-cmp",
|
||||||
"hrsh7th/cmp-nvim-lsp",
|
"j-hui/fidget.nvim",
|
||||||
|
"folke/trouble.nvim",
|
||||||
},
|
},
|
||||||
keys = {
|
keys = {
|
||||||
{ "<LEADER>lh", vim.lsp.buf.hover },
|
{ "<LEADER>l", desc = "LSP Features" },
|
||||||
{ "<LEADER>lr", vim.lsp.buf.rename },
|
{ "<LEADER>lh", vim.lsp.buf.hover, desc = "Get info from LSP" },
|
||||||
{ "<LEADER>lf", function()
|
{ "<LEADER>lr", vim.lsp.buf.rename, desc = "Rename" },
|
||||||
|
{
|
||||||
|
"<LEADER>lf",
|
||||||
|
function()
|
||||||
vim.lsp.buf.format({
|
vim.lsp.buf.format({
|
||||||
async = true,
|
async = true,
|
||||||
bufnr = bufnr,
|
-- bufnr = bufnr,
|
||||||
filter = function(client)
|
filter = function(client)
|
||||||
return client.name == "null-ls"
|
return client.name == "null-ls"
|
||||||
end
|
end,
|
||||||
})
|
})
|
||||||
end
|
end,
|
||||||
|
desc = "Format code",
|
||||||
},
|
},
|
||||||
{ "<LEADER>lgr", vim.lsp.buf.references },
|
{ "<LEADER>lgr", vim.lsp.buf.references, desc = "Open references" },
|
||||||
{ "<LEADER>lgi", vim.lsp.buf.implementation },
|
{ "<LEADER>lgi", vim.lsp.buf.implementation, desc = "Open implementation" },
|
||||||
{ "<LEADER>lsh", vim.lsp.buf.signature_help },
|
{ "<LEADER>lsh", vim.lsp.buf.signature_help, desc = "Optn signature help" },
|
||||||
|
|
||||||
{ "<LEADER>ldj", vim.diagnostic.goto_next },
|
{ "<LEADER>ldj", vim.diagnostic.goto_next, desc = "Go to next problem" },
|
||||||
{ "<LEADER>ldk", vim.diagnostic.goto_prev },
|
{
|
||||||
|
"<LEADER>ldk",
|
||||||
|
vim.diagnostic.goto_prev,
|
||||||
|
desc = "Go to previous problem",
|
||||||
|
},
|
||||||
|
|
||||||
{ "<LEADER>lgd", vim.lsp.buf.definition },
|
{ "<LEADER>lgd", vim.lsp.buf.definition, desc = "Open definition" },
|
||||||
{ "<LEADER>lgtd", vim.lsp.buf.type_definition },
|
{ "<LEADER>lgt", vim.lsp.buf.type_definition, desc = "Open type definition" },
|
||||||
|
|
||||||
{ "<LEADER>law", vim.lsp.buf.add_workspace_folder },
|
{
|
||||||
{ "<LEADER>ldw", vim.lsp.buf.remove_workspace_folder },
|
"<LEADER>law",
|
||||||
{ "<LEADER>llw", function()
|
vim.lsp.buf.add_workspace_folder,
|
||||||
print(vim.inspect(vim.lsp.buf.list_workplace_folders()))
|
desc = "Add folder to workspace",
|
||||||
end },
|
},
|
||||||
|
{
|
||||||
{ "<LEADER>lca", vim.lsp.buf.code_action },
|
"<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()
|
config = function()
|
||||||
local lspconfig = require("lspconfig")
|
|
||||||
local mason_lspconfig = require("mason-lspconfig")
|
|
||||||
|
|
||||||
local LSP_SERVERS = {
|
|
||||||
"tsserver",
|
|
||||||
"html",
|
|
||||||
"cssls",
|
|
||||||
"tailwindcss",
|
|
||||||
"pyright"
|
|
||||||
}
|
|
||||||
|
|
||||||
mason_lspconfig.setup({
|
|
||||||
ensure_installed = LSP_SERVERS,
|
|
||||||
automatic_installation = true,
|
|
||||||
})
|
|
||||||
|
|
||||||
local capabilities = require("cmp_nvim_lsp").default_capabilities()
|
local capabilities = require("cmp_nvim_lsp").default_capabilities()
|
||||||
for _, server in pairs(LSP_SERVERS) do
|
|
||||||
lspconfig[server].setup(
|
local on_attach = function(client, bufnr)
|
||||||
{
|
vim.notify(client.name .. " attached", vim.log.levels.INFO)
|
||||||
|
end
|
||||||
|
|
||||||
|
vim.lsp.config("*", {
|
||||||
capabilities = capabilities,
|
capabilities = capabilities,
|
||||||
on_attach = on_attach,
|
on_attach = on_attach,
|
||||||
}
|
})
|
||||||
)
|
vim.lsp.config("vtsls", {
|
||||||
end
|
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,
|
end,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"nvimtools/none-ls.nvim",
|
"jay-babu/mason-null-ls.nvim",
|
||||||
event = { "BufReadPre", "BufNewFile" },
|
event = { "BufReadPre", "BufNewFile" },
|
||||||
dependencies = {
|
dependencies = {
|
||||||
"nvim-lua/plenary.nvim",
|
"williamboman/mason.nvim",
|
||||||
"williamboman/mason-null-ls.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()
|
config = function()
|
||||||
local null_ls = require("null-ls")
|
local null_ls = require("null-ls")
|
||||||
|
|
||||||
|
local augroup = vim.api.nvim_create_augroup("LspFormatting", {})
|
||||||
|
|
||||||
null_ls.setup({
|
null_ls.setup({
|
||||||
source = {
|
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)
|
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
|
if client.supports_method("textDocument/formatting") then
|
||||||
vim.api.nvim_clear_autocmds({ group = augroup, buffer = bufnr })
|
vim.api.nvim_clear_autocmds({ group = augroup, buffer = bufnr })
|
||||||
vim.api.nvim_create_autocmd("BufWritePre", {
|
vim.api.nvim_create_autocmd("BufWritePre", {
|
||||||
group = vim.api.nvim_create_augroup("LspFormatting", {}),
|
group = augroup,
|
||||||
buffer = bufnr,
|
buffer = bufnr,
|
||||||
callback = function()
|
callback = function()
|
||||||
vim.lsp.buf.format({
|
vim.lsp.buf.format({
|
||||||
async = false,
|
async = false,
|
||||||
bufnr = bufnr,
|
filter = function(format_client)
|
||||||
filter = function(client)
|
return format_client.name == "null-ls"
|
||||||
return client.name == "null-ls"
|
end,
|
||||||
end
|
|
||||||
})
|
})
|
||||||
end,
|
end,
|
||||||
})
|
})
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
})
|
})
|
||||||
require("mason-null-ls").setup({
|
end,
|
||||||
ensure_installed = nil,
|
|
||||||
automatic_installation = true,
|
|
||||||
handlers = {}
|
|
||||||
})
|
|
||||||
end
|
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
"j-hui/fidget.nvim",
|
"j-hui/fidget.nvim",
|
||||||
opts = {}
|
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,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|||||||
14
.config/nvim/lua/plugins/markdown.lua
Normal file
14
.config/nvim/lua/plugins/markdown.lua
Normal 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,
|
||||||
|
},
|
||||||
|
}
|
||||||
@@ -9,8 +9,7 @@ return {
|
|||||||
},
|
},
|
||||||
cmd = "Neotree",
|
cmd = "Neotree",
|
||||||
keys = {
|
keys = {
|
||||||
{ "<LEADER>f", "<CMD>:Neotree toggle<CR>" }
|
{ "<LEADER>f", "<CMD>:Neotree toggle<CR>", desc = "Toggle NeoTree" },
|
||||||
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
return {
|
return {
|
||||||
-- Поддержка русского языка в командном режиме
|
-- Поддержка русского языка в командном режиме
|
||||||
{
|
-- {
|
||||||
"powerman/vim-plugin-ruscmd"
|
-- "powerman/vim-plugin-ruscmd",
|
||||||
}
|
-- },
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,6 +9,6 @@ return {
|
|||||||
{
|
{
|
||||||
"nvim-lualine/lualine.nvim",
|
"nvim-lualine/lualine.nvim",
|
||||||
event = { "BufReadPre", "BufNewFile" },
|
event = { "BufReadPre", "BufNewFile" },
|
||||||
opts = {}
|
opts = {},
|
||||||
}
|
},
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,9 +1,7 @@
|
|||||||
return {
|
return {
|
||||||
{
|
{
|
||||||
"kylechui/nvim-surround",
|
"kylechui/nvim-surround",
|
||||||
config = function()
|
event = "VeryLazy",
|
||||||
require("nvim-surround").setup()
|
|
||||||
end
|
|
||||||
|
|
||||||
-- insert = "<C-g>s",
|
-- insert = "<C-g>s",
|
||||||
-- insert_line = "<C-g>S",
|
-- insert_line = "<C-g>S",
|
||||||
|
|||||||
@@ -1,22 +1,29 @@
|
|||||||
return {
|
return {
|
||||||
{
|
{
|
||||||
-- Диалоговое окно поиска
|
-- Диалоговое окно поиска
|
||||||
"nvim-telescope/telescope.nvim", tag = "0.1.5",
|
"nvim-telescope/telescope.nvim",
|
||||||
|
tag = "0.1.5",
|
||||||
-- event = { "BufReadPre", "BufNewFile" },
|
-- event = { "BufReadPre", "BufNewFile" },
|
||||||
dependencies = {
|
dependencies = {
|
||||||
"nvim-lua/plenary.nvim",
|
"nvim-lua/plenary.nvim",
|
||||||
"nvim-telescope/telescope-ui-select.nvim",
|
"nvim-telescope/telescope-ui-select.nvim",
|
||||||
"nvim-telescope/telescope-file-browser.nvim",
|
"nvim-telescope/telescope-file-browser.nvim",
|
||||||
"nvim-telescope/telescope-symbols.nvim"
|
"nvim-telescope/telescope-symbols.nvim",
|
||||||
},
|
},
|
||||||
keys = {
|
keys = {
|
||||||
{ "<LEADER>tff", "<CMD>Telescope find_files<CR>" },
|
{ "<LEADER>tf", "<CMD>Telescope find_files<CR>" },
|
||||||
{ "<LEADER>tg", "<CMD>Telescope live_grep<CR>" },
|
{ "<LEADER>tg", "<CMD>Telescope live_grep<CR>" },
|
||||||
{ "<LEADER>tb", "<CMD>Telescope buffers<CR>" },
|
{ "<LEADER>tb", "<CMD>Telescope buffers<CR>" },
|
||||||
|
{ "<LEADER>tfb", "<CMD>Telescope file_browser<CR>" },
|
||||||
|
|
||||||
|
{ "<LEADER>gc", "<CMD>Telescope git_bcommits<CR>" },
|
||||||
|
{ "<LEADER>gb", "<CMD>Telescope git_branches<CR>" },
|
||||||
|
{ "<LEADER>gs", "<CMD>Telescope git_branches<CR>" },
|
||||||
|
|
||||||
|
{ "<LEADER>ts", "<CMD>Telescope symbols<CR>" },
|
||||||
{ "<LEADER>th", "<CMD>Telescope help_tags<CR>" },
|
{ "<LEADER>th", "<CMD>Telescope help_tags<CR>" },
|
||||||
|
|
||||||
{ "<LEADER>tfb", "<CMD>Telescope file_browser<CR>" },
|
-- { "<LEADER>tn", "<CMD>Telescope fidget<CR>" },
|
||||||
{ "<LEADER>ts", "<CMD>Telescope symbols<CR>" }
|
|
||||||
},
|
},
|
||||||
config = function()
|
config = function()
|
||||||
local telescope = require("telescope")
|
local telescope = require("telescope")
|
||||||
@@ -24,25 +31,26 @@ return {
|
|||||||
telescope.setup({
|
telescope.setup({
|
||||||
extensions = {
|
extensions = {
|
||||||
["ui-select"] = {
|
["ui-select"] = {
|
||||||
require("telescope.themes").get_dropdown({})
|
require("telescope.themes").get_dropdown({}),
|
||||||
},
|
},
|
||||||
["file_browser"] = {
|
["file_browser"] = {
|
||||||
theme = "ivy",
|
theme = "ivy",
|
||||||
},
|
},
|
||||||
["symbols"] = {}
|
["symbols"] = {},
|
||||||
},
|
},
|
||||||
pickers = {
|
pickers = {
|
||||||
buffers = {
|
buffers = {
|
||||||
mappings = {
|
mappings = {
|
||||||
i = { ["<C-d>"] = actions.delete_buffer + actions.move_to_top },
|
i = { ["<C-d>"] = actions.delete_buffer + actions.move_to_top },
|
||||||
n = { ["<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("file_browser")
|
||||||
telescope.load_extension("ui-select")
|
telescope.load_extension("ui-select")
|
||||||
|
telescope.load_extension("fidget")
|
||||||
end,
|
end,
|
||||||
}
|
},
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,8 +11,7 @@ return {
|
|||||||
{ "<ESC>", [[<C-\><C-n>]], mode = "t" },
|
{ "<ESC>", [[<C-\><C-n>]], mode = "t" },
|
||||||
{ "<C-T>", "<CMD>ToggleTerm<CR>", mode = "t" },
|
{ "<C-T>", "<CMD>ToggleTerm<CR>", mode = "t" },
|
||||||
{ "<C-d>", false, mode = "t" },
|
{ "<C-d>", false, mode = "t" },
|
||||||
{ "<C-T>c", [[<C-\><C-n><CMD>:bd!<CR>]], mode = "t" }
|
{ "<C-T>c", [[<C-\><C-n><CMD>:bd!<CR>]], mode = "t" },
|
||||||
}
|
},
|
||||||
}
|
},
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,14 +3,14 @@ return {
|
|||||||
"folke/todo-comments.nvim",
|
"folke/todo-comments.nvim",
|
||||||
dependencies = {
|
dependencies = {
|
||||||
"nvim-lua/plenary.nvim",
|
"nvim-lua/plenary.nvim",
|
||||||
"folke/trouble.nvim"
|
"folke/trouble.nvim",
|
||||||
},
|
},
|
||||||
opts = {},
|
opts = {},
|
||||||
config = function()
|
config = function()
|
||||||
require("todo-comments").setup()
|
require("todo-comments").setup()
|
||||||
end,
|
end,
|
||||||
keys = {
|
keys = {
|
||||||
{ "<LEADER>Ct", "<CMD>TroubleToggle todo<CR>" }
|
{ "<LEADER>Ct", "<CMD>TroubleToggle todo<CR>" },
|
||||||
}
|
},
|
||||||
}
|
},
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,28 +4,34 @@ return {
|
|||||||
"nvim-treesitter/nvim-treesitter",
|
"nvim-treesitter/nvim-treesitter",
|
||||||
dependencies = {
|
dependencies = {
|
||||||
"windwp/nvim-ts-autotag",
|
"windwp/nvim-ts-autotag",
|
||||||
|
"m4xshen/autoclose.nvim",
|
||||||
},
|
},
|
||||||
build = ":TSUpdate",
|
build = ":TSUpdate",
|
||||||
config = function()
|
config = function()
|
||||||
local configs = require("nvim-treesitter.configs")
|
local configs = require("nvim-treesitter.configs")
|
||||||
configs.setup({
|
configs.setup({
|
||||||
ensure_installed = {
|
auto_install = true,
|
||||||
"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,
|
sync_install = false,
|
||||||
highlight = { enable = true },
|
highlight = { enable = true },
|
||||||
incremental_selection = { enable = true },
|
incremental_selection = { enable = true },
|
||||||
indent = { enable = true },
|
indent = { enable = true },
|
||||||
autotag = { enable = true }
|
-- autotag = { enable = true }
|
||||||
|
disable = { "tex", "latex" },
|
||||||
})
|
})
|
||||||
end
|
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,
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,6 +15,6 @@ return {
|
|||||||
{ "<LEADER>tlr", "<CMD>TroubleToggle lsp_references<CR>" },
|
{ "<LEADER>tlr", "<CMD>TroubleToggle lsp_references<CR>" },
|
||||||
{ "<LEADER>tld", "<CMD>TroubleToggle lsp_definitions<CR>" },
|
{ "<LEADER>tld", "<CMD>TroubleToggle lsp_definitions<CR>" },
|
||||||
{ "<LEADER>tltd", "<CMD>TroubleToggle lsp_type_definitions<CR>" },
|
{ "<LEADER>tltd", "<CMD>TroubleToggle lsp_type_definitions<CR>" },
|
||||||
}
|
},
|
||||||
}
|
},
|
||||||
}
|
}
|
||||||
|
|||||||
9
.config/nvim/lua/plugins/which_key.lua
Normal file
9
.config/nvim/lua/plugins/which_key.lua
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
return {
|
||||||
|
{
|
||||||
|
"folke/which-key.nvim",
|
||||||
|
event = "VeryLazy",
|
||||||
|
ignore = {
|
||||||
|
pattern = { "^.*[А-Яа-я].*$" },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
backend = "glx";
|
backend = "glx";
|
||||||
|
|
||||||
corner-radius = 10;
|
corner-radius = 5;
|
||||||
|
|
||||||
fading = true;
|
fading = true;
|
||||||
fade-delta = 8;
|
fade-delta = 4;
|
||||||
|
|||||||
@@ -26,8 +26,8 @@ module-margin = 1
|
|||||||
|
|
||||||
font-0 = CodeNewRoman Nerd Font Mono:pixelsize=10;3
|
font-0 = CodeNewRoman Nerd Font Mono:pixelsize=10;3
|
||||||
|
|
||||||
modules-left = xworkspaces
|
modules-left = date xworkspaces
|
||||||
modules-right = pulseaudio xkeyboard date numen systray
|
modules-right = backlight pulseaudio xkeyboard numen systray
|
||||||
|
|
||||||
cursor-click = pointer
|
cursor-click = pointer
|
||||||
cursor-scroll = ns-resize
|
cursor-scroll = ns-resize
|
||||||
@@ -66,6 +66,14 @@ interval = 1
|
|||||||
use-ui-max = false
|
use-ui-max = false
|
||||||
click-right = /bin/bash -c "pactl set-sink-mute @DEFAULT_SINK@ toggle"
|
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]
|
[module/xkeyboard]
|
||||||
type = internal/xkeyboard
|
type = internal/xkeyboard
|
||||||
|
|
||||||
@@ -77,7 +85,7 @@ type = internal/date
|
|||||||
interval = 1
|
interval = 1
|
||||||
|
|
||||||
date = %H:%M
|
date = %H:%M
|
||||||
date-alt = %Y-%m-%d %H:%M:%S
|
date-alt = %d.%m.%y %H:%M:%S
|
||||||
|
|
||||||
label = %date%
|
label = %date%
|
||||||
label-foreground = ${colors.primary}
|
label-foreground = ${colors.primary}
|
||||||
@@ -86,7 +94,7 @@ label-foreground = ${colors.primary}
|
|||||||
type = internal/tray
|
type = internal/tray
|
||||||
|
|
||||||
format-margin = 0pt
|
format-margin = 0pt
|
||||||
tray-spacing = 2pt
|
tray-spacing = 4pt
|
||||||
|
|
||||||
[module/numen]
|
[module/numen]
|
||||||
type = custom/script
|
type = custom/script
|
||||||
@@ -94,10 +102,10 @@ exec = [[ $(pgrep numen) ]] && cat ~/.config/numen/current_mode || echo ""
|
|||||||
interval = 1
|
interval = 1
|
||||||
click-left = pkill numen
|
click-left = pkill numen
|
||||||
|
|
||||||
; [module/weather]
|
[module/weather]
|
||||||
; type = custom/script
|
type = custom/script
|
||||||
; exec = curl -s -H "Accept-Language: ru" wttr.in/Samara?format="%c+%t+%m"
|
exec = curl -s -h "accept-language: ru" wttr.in/samara?format="%c+%t+%m"
|
||||||
; interval = 1
|
interval = 1
|
||||||
|
|
||||||
[settings]
|
[settings]
|
||||||
screenchange-reload = true
|
screenchange-reload = true
|
||||||
|
|||||||
4
.gitignore
vendored
4
.gitignore
vendored
@@ -3,12 +3,16 @@
|
|||||||
|
|
||||||
/Code/*
|
/Code/*
|
||||||
/Downloads/*
|
/Downloads/*
|
||||||
|
/Games/*
|
||||||
|
|
||||||
!/Downloads/Telegram Desktop
|
!/Downloads/Telegram Desktop
|
||||||
/Downloads/Telegram Desktop/*
|
/Downloads/Telegram Desktop/*
|
||||||
|
|
||||||
/Sync/*
|
/Sync/*
|
||||||
/Data/*
|
/Data/*
|
||||||
/Mount/*
|
/Mount/*
|
||||||
/Documents/*
|
/Documents/*
|
||||||
|
|
||||||
!*.gitkeep
|
!*.gitkeep
|
||||||
|
|
||||||
!.config
|
!.config
|
||||||
|
|||||||
3
.scripts/active_network_name
Executable file
3
.scripts/active_network_name
Executable file
@@ -0,0 +1,3 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
ip route show default 2>/dev/null | awk '/default/ {print $5; exit}'
|
||||||
14
.xinitrc
14
.xinitrc
@@ -2,23 +2,29 @@ setxkbmap -option grp:ctrl_shift_toggle us,ru
|
|||||||
|
|
||||||
libinput-gestures &
|
libinput-gestures &
|
||||||
|
|
||||||
# wal --theme base16-gruvbox-hard
|
wal --theme base16-gruvbox-hard
|
||||||
wal --theme ~/.config/colorschemes/vscode.json
|
# wal --theme ~/.config/colorschemes/vscode.json
|
||||||
|
|
||||||
polybar -r &
|
polybar -r &
|
||||||
|
|
||||||
picom &
|
picom &
|
||||||
|
|
||||||
pactl -- set-sink-volume 0 25%
|
pactl -- set-sink-volume 0 25%
|
||||||
|
brightnessctl s 50% >> /dev/null
|
||||||
|
|
||||||
numen ~/.config/numen/startup.phrasess.txt &
|
dunst -conf ~/.config/dunst/config.conf &
|
||||||
|
|
||||||
|
# numen ~/.config/numen/startup.phrasess.txt &
|
||||||
echo "[R]" > ~/.config/numen/current_mode
|
echo "[R]" > ~/.config/numen/current_mode
|
||||||
|
|
||||||
conky -c ~/.config/conky/conky.conf &
|
conky -c ~/.config/conky/conky.conf &
|
||||||
conky -c ~/.config/conky/weather.conf &
|
conky -c ~/.config/conky/weather.conf &
|
||||||
conky -c ~/.config/conky/icon.conf &
|
conky -c ~/.config/conky/icon.conf &
|
||||||
|
|
||||||
[ ! -s ~/.config/mpd/pid ] && mpd ~/.config/mpd/mpd.conf && mpc stop
|
# [ ! -s ~/.config/mpd/pid ] && mpd ~/.config/mpd/mpd.conf && mpc stop
|
||||||
|
|
||||||
|
syncthing &
|
||||||
|
syncthingtray-qt6 &
|
||||||
|
|
||||||
exec sxhkd -c ~/.config/sxhkd/sxhkdrc &
|
exec sxhkd -c ~/.config/sxhkd/sxhkdrc &
|
||||||
exec bspwm
|
exec bspwm
|
||||||
|
|||||||
Reference in New Issue
Block a user