Transfering everything for 0.12
This commit is contained in:
parent
92e6a5dc1f
commit
5d29aee4aa
45 changed files with 639 additions and 1295 deletions
27
Dockerfile
Normal file
27
Dockerfile
Normal file
|
|
@ -0,0 +1,27 @@
|
||||||
|
FROM ubuntu:24.04 AS builder
|
||||||
|
WORKDIR /src
|
||||||
|
RUN apt-get update -y && apt-get install -y \
|
||||||
|
cmake gettext build-essential ninja-build git
|
||||||
|
COPY neovim .
|
||||||
|
RUN make CMAKE_BUILD_TYPE=RelWithDebInfo
|
||||||
|
RUN make install DESTDIR=/build-output
|
||||||
|
|
||||||
|
FROM ubuntu:24.04 AS runner
|
||||||
|
COPY --from=builder /build-output /
|
||||||
|
COPY --from=golang:1.24 /usr/local/go /usr/local/go
|
||||||
|
ENV PATH="/usr/local/go/bin:${PATH}"
|
||||||
|
RUN apt-get update -y && apt-get install -y \
|
||||||
|
git curl gpg software-properties-common fzf fd-find ripgrep \
|
||||||
|
&& add-apt-repository ppa:deadsnakes/ppa \
|
||||||
|
&& curl -fsSL https://deb.nodesource.com/setup_lts.x | bash - \
|
||||||
|
&& apt-get install -y python3.13 python3.13-venv python3-pip nodejs \
|
||||||
|
&& rm -rf /var/lib/apt/lists/* \
|
||||||
|
&& npm install -g tree-sitter-cli \
|
||||||
|
&& python3.13 -m pip install --break-system-packages pynvim
|
||||||
|
RUN npm install -g neovim
|
||||||
|
RUN useradd -m -s /bin/bash t0xa
|
||||||
|
WORKDIR /home/t0xa/.config/nvim
|
||||||
|
COPY . .
|
||||||
|
|
||||||
|
RUN chown -R t0xa /home/t0xa
|
||||||
|
USER t0xa
|
||||||
72
README.md
72
README.md
|
|
@ -1,71 +1,5 @@
|
||||||
# Config refactor (v2.0)
|
# Установка LSP серверов
|
||||||
## Useful links
|
## Python
|
||||||
- [Переписывание конфига с автором telescope](https://www.youtube.com/watch?v=kJVqxFnhIuw&t=510s)
|
|
||||||
- [Документация по Lua в Nvim](https://neovim.io/doc/user/lua-guide.html)
|
|
||||||
- [Конфиг TJ](https://github.com/tjdevries/config.nvim/tree/master)
|
|
||||||
## Основные прицнипы формирования конфига
|
|
||||||
### Root plugin папка
|
|
||||||
Скрипты в этой папке загружаются автоматически после инициализации `neovim`, но до загрузки файлов типа `ftplugin/` или `after/`.
|
|
||||||
### Plugins
|
|
||||||
Разберем на примере `oil.nvim`: Сначала базовые настройки, такие как инструкция откуда качать и всякие зависимости и атрибуты по типу приоритета кладутся в директорию `custom/plugins` в виде названия плагина:
|
|
||||||
*lua/custom/plugins/oil.lua*
|
|
||||||
```lua
|
|
||||||
return {
|
|
||||||
"stevearc/oil.nvim",
|
|
||||||
dependencies = { { "echasnovski/mini.icons", opts = {} } },
|
|
||||||
config = function()
|
|
||||||
require "custom/oil"
|
|
||||||
end,
|
|
||||||
}
|
|
||||||
```
|
```
|
||||||
Затем, как можно видеть, сама функция настроек расположена отдельно в файле с идентичным названием, но в директории "повыше":
|
npm -i pyright
|
||||||
*lua/custom/oil.lua*
|
|
||||||
```lua
|
|
||||||
require("oil").setup{
|
|
||||||
opts = {
|
|
||||||
keymaps = {
|
|
||||||
["g?"] = "actions.show_help",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## Разница между ftplugin и after/ftplugin
|
|
||||||
Суть одна и та-же: загрузка конфигураций для конкретных типов файлов, однако:
|
|
||||||
### ftplugin
|
|
||||||
Тут храняться настройки, которые будут применены **до** загразуки плагинов. Т.е. настройки, что определны где-то в настройках плагинов будут переписывать если что те, которые установлены для типов файлов тут
|
|
||||||
### after/ftplugin
|
|
||||||
Настройки для типов файлов тут будут применены уже после того, как загрузится все содержимое neovim => эти настройки будут перегружать все то, что было настроено в плагинах
|
|
||||||
## Включение / Выключение некоторых плагинов
|
|
||||||
Из за возникновения случаев, когда некоторые плагины на некоторых машинах не нужно включать (например obsidian мне нужен только на хостовых машинах, на удаленных он будет только мешать открывать .md файлы), то в `init.lua` у меня в самом начале устанавливаются для таких плагинов глобальные переменные со следующей семантикой:
|
|
||||||
```
|
|
||||||
vim.g.<plugin_name>_enabled = <type:bool>
|
|
||||||
```
|
|
||||||
Например:
|
|
||||||
```lua
|
|
||||||
vim.g.obsidian_enabled = false
|
|
||||||
```
|
|
||||||
Это позволяет динамически включать/выключать плагины без необходимости усложнять конфиг `lazy`
|
|
||||||
# FAQ
|
|
||||||
> Зачем так мучаться? Не проще все кидать в один файл?
|
|
||||||
|
|
||||||
Проще, но такое распараллеливание позволяет легче дебажить файлы настроек. Т.е. исправляя настройки мы можем просто `source`ить файл настроек, не трогая конфигурации скачивания файлов, чтобы лишний раз не триггерить Lazy.
|
|
||||||
|
|
||||||
> Что делать, если в `checkhealth` выдается ошибка `luarocks not found`?
|
|
||||||
|
|
||||||
Необходимо его установить по инструкции с [сайта](https://luarocks.org/)
|
|
||||||
|
|
||||||
> Что делать, если при установке `luarocks` выдает ошибку что не найдены `.h` файлы?
|
|
||||||
|
|
||||||
Надо установить хэдеры lua командой:
|
|
||||||
```bash
|
|
||||||
sudo apt install liblua5.3-dev
|
|
||||||
```
|
|
||||||
|
|
||||||
> checkhealth не может найти tree-sitter cli
|
|
||||||
|
|
||||||
Надо установить соответствующий `npm` пакет:
|
|
||||||
```js
|
|
||||||
npm install -g tree-sitter-cli
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +0,0 @@
|
||||||
if exists("current_compiler")
|
|
||||||
finish
|
|
||||||
endif
|
|
||||||
let current_compiler = "mypy"
|
|
||||||
|
|
||||||
lua require("custom.compilers.mypy").setup()
|
|
||||||
|
|
@ -1,60 +1,10 @@
|
||||||
local keymap = vim.keymap
|
local keymap = vim.keymap
|
||||||
|
|
||||||
-- Picker for markdown headers
|
|
||||||
-- local pickers = require("telescope.pickers")
|
|
||||||
-- local finders = require("telescope.finders")
|
|
||||||
-- local conf = require("telescope.config").values
|
|
||||||
-- local actions = require("telescope.actions")
|
|
||||||
-- local action_state = require("telescope.actions.state")
|
|
||||||
--
|
|
||||||
-- local function markdown_headings()
|
|
||||||
-- local bufnr = vim.api.nvim_get_current_buf()
|
|
||||||
-- local lines = vim.api.nvim_buf_get_lines(bufnr, 0, -1, false)
|
|
||||||
-- local headings = {}
|
|
||||||
--
|
|
||||||
-- for lnum, line in ipairs(lines) do
|
|
||||||
-- local heading = line:match('^(#+%s+.+)$')
|
|
||||||
-- if heading then
|
|
||||||
-- table.insert(headings, {
|
|
||||||
-- lnum = lnum,
|
|
||||||
-- text = heading,
|
|
||||||
-- display = string.format("%4d: %s", lnum, heading)
|
|
||||||
-- })
|
|
||||||
-- end
|
|
||||||
-- end
|
|
||||||
-- pickers.new({}, {
|
|
||||||
-- prompt_title = 'Markdown Headings',
|
|
||||||
-- finder = finders.new_table {
|
|
||||||
-- results = headings,
|
|
||||||
-- entry_maker = function(entry)
|
|
||||||
-- return {
|
|
||||||
-- value = entry,
|
|
||||||
-- display = entry.display,
|
|
||||||
-- ordinal = entry.text,
|
|
||||||
-- lnum = entry.lnum,
|
|
||||||
-- }
|
|
||||||
-- end
|
|
||||||
-- },
|
|
||||||
-- sorter = conf.generic_sorter({}),
|
|
||||||
-- attach_mappings = function(prompt_bufnr, map)
|
|
||||||
-- actions.select_default:replace(function()
|
|
||||||
-- actions.close(prompt_bufnr)
|
|
||||||
-- local selection = action_state.get_selected_entry()
|
|
||||||
-- vim.api.nvim_win_set_cursor(0, { selection.value.lnum, 0 })
|
|
||||||
-- end)
|
|
||||||
-- return true
|
|
||||||
-- end,
|
|
||||||
-- }):find()
|
|
||||||
-- end
|
|
||||||
--
|
|
||||||
-- keymap.set("n", "<leader>fdh", markdown_headings, { desc = "Grep: Markdown headings" })
|
|
||||||
|
|
||||||
-- FZF lua headings picker
|
-- FZF lua headings picker
|
||||||
local picker = require("fzf-lua")
|
local picker = require("fzf-lua")
|
||||||
|
|
||||||
local function fzf_lua_markdown_headings()
|
local function fzf_lua_markdown_headings()
|
||||||
local bufnr = vim.api.nvim_get_current_buf()
|
local bufnr = vim.api.nvim_get_current_buf()
|
||||||
local lines = vim.api.nvim_buf_get_lines(bufnr, 0, -1, false)
|
|
||||||
local headings = {}
|
local headings = {}
|
||||||
|
|
||||||
-- Check if treesitter parser is available
|
-- Check if treesitter parser is available
|
||||||
|
|
|
||||||
531
init.lua
531
init.lua
|
|
@ -1,41 +1,498 @@
|
||||||
-- Global settings params
|
-- Locals
|
||||||
--- Option to enable/disalbe obsidian plugin
|
local keymap = vim.keymap.set
|
||||||
vim.g.obsidian_enabled = false
|
|
||||||
|
|
||||||
-- Making leader (<Leader>) key to space
|
-- Vim pack plugins list
|
||||||
vim.g.mapleader = "\\"
|
vim.pack.add(
|
||||||
-- Making local leader (<LocalLeader>) key to backslash
|
{
|
||||||
vim.g.maplocalleader = ""
|
'https://github.com/nvim-treesitter/nvim-treesitter',
|
||||||
-- Enable project-level config extensions
|
'https://github.com/folke/snacks.nvim',
|
||||||
vim.opt.exrc = true
|
'https://github.com/stevearc/oil.nvim',
|
||||||
vim.opt.secure = true
|
'https://github.com/neovim/nvim-lspconfig',
|
||||||
|
'https://github.com/folke/which-key.nvim',
|
||||||
|
'https://github.com/mason-org/mason.nvim',
|
||||||
|
'https://github.com/ibhagwan/fzf-lua',
|
||||||
|
'https://github.com/nvim-lualine/lualine.nvim',
|
||||||
|
'https://github.com/L3MON4D3/LuaSnip',
|
||||||
|
'https://github.com/danymat/neogen',
|
||||||
|
'https://github.com/christoomey/vim-tmux-navigator',
|
||||||
|
'https://github.com/folke/todo-comments.nvim',
|
||||||
|
-- Colorschemes
|
||||||
|
'https://github.com/ellisonleao/gruvbox.nvim',
|
||||||
|
'https://github.com/sainnhe/everforest',
|
||||||
|
'https://github.com/sainnhe/gruvbox-material',
|
||||||
|
'https://github.com/rebelot/kanagawa.nvim',
|
||||||
|
'https://github.com/catppuccin/nvim',
|
||||||
|
'https://github.com/folke/tokyonight.nvim',
|
||||||
|
'https://github.com/luisiacc/gruvbox-baby',
|
||||||
|
-- Completion
|
||||||
|
'https://github.com/hrsh7th/nvim-cmp',
|
||||||
|
'https://github.com/hrsh7th/cmp-buffer',
|
||||||
|
'https://github.com/hrsh7th/cmp-path',
|
||||||
|
'https://github.com/hrsh7th/cmp-nvim-lsp',
|
||||||
|
'https://github.com/saadparwaiz1/cmp_luasnip',
|
||||||
|
}
|
||||||
|
)
|
||||||
|
-- ################################## Plugins ##################################
|
||||||
|
-- → → → → → → Colorschemes ← ← ← ← ← ←
|
||||||
|
vim.opt.termguicolors = true
|
||||||
|
vim.opt.background = "dark"
|
||||||
|
vim.opt.signcolumn = "yes"
|
||||||
|
|
||||||
-- Bootstrap lazy.nvim
|
vim.g.gruvbox_material_enable_italic = true
|
||||||
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
|
vim.cmd.colorscheme("catppuccin-mocha")
|
||||||
if not (vim.uv or vim.loop).fs_stat(lazypath) then
|
|
||||||
local lazyrepo = "https://github.com/folke/lazy.nvim.git"
|
|
||||||
local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath })
|
|
||||||
if vim.v.shell_error ~= 0 then
|
|
||||||
vim.api.nvim_echo({
|
|
||||||
{ "Failed to clone lazy.nvim:\n", "ErrorMsg" },
|
|
||||||
{ out, "WarningMsg" },
|
|
||||||
{ "\nPress any key to exit..." },
|
|
||||||
}, true, {})
|
|
||||||
vim.fn.getchar()
|
|
||||||
os.exit(1)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
vim.opt.rtp:prepend(lazypath)
|
|
||||||
|
|
||||||
-- Setup lazy.nvim
|
-- → → → → → → Oil ← ← ← ← ← ←
|
||||||
require("lazy").setup({
|
-- Oil setup
|
||||||
spec = {
|
require("oil").setup()
|
||||||
-- import your plugins
|
-- Oil Keymaps
|
||||||
{ import = "custom/plugins" },
|
vim.keymap.set("n", "-", "<CMD>Oil<CR>", { desc = "Open parent directory" })
|
||||||
},
|
|
||||||
-- Configure any other settings here. See the documentation for more details.
|
-- → → → → → → Snacks ← ← ← ← ← ←
|
||||||
-- colorscheme that will be used when installing plugins.
|
-- Snacks setup
|
||||||
install = { colorscheme = { "gruvbox-material" } },
|
require("snacks").setup({
|
||||||
-- automatically check for plugin updates
|
input = { enabled = true },
|
||||||
checker = { enabled = false },
|
picker = { enabled = true },
|
||||||
|
})
|
||||||
|
|
||||||
|
-- → → → → → → Treesitter ← ← ← ← ← ←
|
||||||
|
-- Treesitter setup
|
||||||
|
require("nvim-treesitter").setup(
|
||||||
|
{
|
||||||
|
-- Directory to install parsers and queries to (prepended to `runtimepath` to have priority)
|
||||||
|
install_dir = vim.fn.stdpath('data') .. '/site',
|
||||||
|
sync_install = false,
|
||||||
|
highlight = { enable = true },
|
||||||
|
indent = { enable = true },
|
||||||
|
}
|
||||||
|
)
|
||||||
|
require('nvim-treesitter').install { 'python', 'lua', 'vim', 'vimdoc', 'javascript', 'html', 'go', 'markdown' }
|
||||||
|
|
||||||
|
-- → → → → → → Mason ← ← ← ← ← ←
|
||||||
|
-- Mason setup
|
||||||
|
require("mason").setup()
|
||||||
|
|
||||||
|
-- → → → → → → FZF-lua ← ← ← ← ← ←
|
||||||
|
-- FZF-lua setup
|
||||||
|
local fzf_lua = require("fzf-lua")
|
||||||
|
fzf_lua.setup(
|
||||||
|
{
|
||||||
|
winopts = {
|
||||||
|
height = 0.85,
|
||||||
|
width = 0.80,
|
||||||
|
},
|
||||||
|
fzf_opts = {
|
||||||
|
['--layout'] = 'reverse-list',
|
||||||
|
},
|
||||||
|
files = {
|
||||||
|
fd_opts = "--color=never --type f",
|
||||||
|
rg_opts = "--color=never --files",
|
||||||
|
},
|
||||||
|
keymap = {
|
||||||
|
fzf = {
|
||||||
|
["ctrl-q"] = "select-all+accept",
|
||||||
|
},
|
||||||
|
builtin = {
|
||||||
|
["<C-j>"] = "down",
|
||||||
|
["<C-k>"] = "up",
|
||||||
|
["<S-tab>"] = "toggle+up",
|
||||||
|
["<tab>"] = "toggle+down",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
)
|
||||||
|
-- FZF-lua support functions
|
||||||
|
-- Glob pattern searcher
|
||||||
|
local function live_grep_with_glob()
|
||||||
|
vim.ui.input({
|
||||||
|
prompt = "Glob pattern: ",
|
||||||
|
default = "/home/user/Work/root/ivideon/audio_storage/",
|
||||||
|
}, function(input)
|
||||||
|
if input then
|
||||||
|
fzf_lua.live_grep({
|
||||||
|
cwd = input,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
|
||||||
|
local function live_grep_in_current_dir()
|
||||||
|
local current_file = vim.fn.expand('%:p')
|
||||||
|
local current_dir = current_file:match("(.*/)")
|
||||||
|
|
||||||
|
vim.ui.input({
|
||||||
|
prompt = "Glob pattern: ",
|
||||||
|
default = current_dir or vim.fn.getcwd(),
|
||||||
|
}, function(input)
|
||||||
|
if input then
|
||||||
|
fzf_lua.live_grep({
|
||||||
|
cwd = input,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
|
||||||
|
local function copy_current_file_path()
|
||||||
|
local filepath = vim.fn.expand('%:p')
|
||||||
|
vim.fn.setreg("+", filepath)
|
||||||
|
print("Copied: " .. filepath)
|
||||||
|
end
|
||||||
|
|
||||||
|
local function copy_file_path_and_position()
|
||||||
|
local filepath = vim.fn.expand('%:p')
|
||||||
|
local cursor_pos = vim.api.nvim_win_get_cursor(0)
|
||||||
|
local line = cursor_pos[1]
|
||||||
|
local col = cursor_pos[2] + 1 -- fzf-lua uses 1-indexed columns
|
||||||
|
|
||||||
|
local output = string.format("%s:%d:%d", filepath, line, col)
|
||||||
|
vim.fn.setreg("+", output)
|
||||||
|
print("Copied: " .. output)
|
||||||
|
end
|
||||||
|
|
||||||
|
local function live_grep_in_quick_fix_list_files()
|
||||||
|
local qf_items = vim.fn.getqflist()
|
||||||
|
local files = {}
|
||||||
|
|
||||||
|
for _, item in ipairs(qf_items) do
|
||||||
|
if item.bufnr > 0 then
|
||||||
|
local filename = vim.api.nvim_buf_get_name(item.bufnr)
|
||||||
|
if filename ~= "" then
|
||||||
|
table.insert(files, filename)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if #files > 0 then
|
||||||
|
fzf_lua.live_grep({
|
||||||
|
search_dirs = files,
|
||||||
|
})
|
||||||
|
else
|
||||||
|
print("No files in quickfix list")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local function find_all_files_including_hidden()
|
||||||
|
fzf_lua.files(
|
||||||
|
{
|
||||||
|
fd_opts = "--type f --hidden --no-ignore"
|
||||||
|
}
|
||||||
|
)
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Function for getting filename and copy it to + buffer
|
||||||
|
local function copy_filename()
|
||||||
|
local filepath = vim.fn.expand('%:t')
|
||||||
|
local output = string.format("%s", filepath)
|
||||||
|
vim.fn.setreg("+", output)
|
||||||
|
print("Copied: " .. output)
|
||||||
|
end
|
||||||
|
|
||||||
|
-- FZF-lua keymaps
|
||||||
|
keymap("n", "<leader>ff", function() fzf_lua.files() end, { desc = "FZF: find files in cwd" })
|
||||||
|
keymap("n", "<leader>fg", function() fzf_lua.live_grep() end, { desc = "FZF: find string in cwd" })
|
||||||
|
keymap("n", "<leader>fs", function() fzf_lua.grep_cword() end, { desc = "FZF: find string under cursor" })
|
||||||
|
keymap("n", "<leader>fb", function() fzf_lua.buffers() end, { desc = "FZF: display opened buffers" })
|
||||||
|
keymap("n", "<leader>fh", function() fzf_lua.help_tags() end, { desc = "FZF: display help tags" })
|
||||||
|
keymap("n", "<leader>fml", function() fzf_lua.marks() end, { desc = "FZF: find marks list" })
|
||||||
|
keymap("n", "<leader>fmp", function() fzf_lua.man_pages() end, { desc = "FZF: find available man pages" })
|
||||||
|
keymap("n", "<leader>fds", function() fzf_lua.lsp_document_symbols() end, { desc = "Grep: Document symbols" })
|
||||||
|
-- keymap("n", "<leader>fgb", function() fzf_lua.git_blame() end, { desc = "Grep: Document symbols" })
|
||||||
|
keymap("n", "<leader>ft", function() fzf_lua.tabs() end, { desc = "Pick opened tabs" })
|
||||||
|
|
||||||
|
keymap("n", "<leader>fa", find_all_files_including_hidden, { desc = "FZF: Find all files" })
|
||||||
|
keymap('n', '<leader>fp', live_grep_with_glob, { desc = 'Live grep with glob pattern' })
|
||||||
|
keymap('n', '<leader>fcp', live_grep_in_current_dir, { desc = 'Live grep in current directory' })
|
||||||
|
keymap('n', '<leader>ccp', copy_file_path_and_position, { desc = "Copy cursor position" })
|
||||||
|
keymap('n', '<leader>ccd', copy_current_file_path, { desc = 'Copy current file path' })
|
||||||
|
keymap('n', '<leader>ccf', copy_filename, { desc = 'Copy current file path' })
|
||||||
|
keymap("n", "<leader>fcgb", function()
|
||||||
|
fzf_lua.git_blame({
|
||||||
|
winopts = {
|
||||||
|
preview = { hidden = "hidden" }
|
||||||
|
}
|
||||||
|
})
|
||||||
|
end, { desc = "Grep: Document symbols" })
|
||||||
|
|
||||||
|
keymap('n', '<leader>fq', live_grep_in_quick_fix_list_files, { desc = "Live grep in quickfix files" })
|
||||||
|
|
||||||
|
keymap('n', '<leader>fcf', function()
|
||||||
|
fzf_lua.live_grep({
|
||||||
|
cwd = vim.fn.expand('%:p:h'),
|
||||||
|
search = '',
|
||||||
|
fzf_cli_args = '--no-sort',
|
||||||
|
})
|
||||||
|
end, { desc = "Live grep in current file" })
|
||||||
|
|
||||||
|
|
||||||
|
keymap("n", "<leader>fn", function()
|
||||||
|
fzf_lua.grep({
|
||||||
|
prompt = 'Todo❯ ',
|
||||||
|
search = 'TODO|FIXME|XXX|HACK|BUG|NOTE|PERF|OPTIMIZE',
|
||||||
|
no_esc = true,
|
||||||
|
})
|
||||||
|
end, { desc = "FZF: display TODO comments" })
|
||||||
|
|
||||||
|
-- → → → → → → Lualine ← ← ← ← ← ←
|
||||||
|
-- Lualine setup
|
||||||
|
require("lualine").setup({
|
||||||
|
options = {
|
||||||
|
theme = "catppuccin-mocha",
|
||||||
|
},
|
||||||
|
sections = {
|
||||||
|
lualine_c = {
|
||||||
|
{
|
||||||
|
"filename",
|
||||||
|
file_status = true,
|
||||||
|
path = 2,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
-- → → → → → → LuaSnip ← ← ← ← ← ←
|
||||||
|
-- LuaSnip config
|
||||||
|
local ls = require "luasnip"
|
||||||
|
|
||||||
|
-- Load custom snippets
|
||||||
|
for _, ft_path in ipairs(vim.api.nvim_get_runtime_file("snippets/*.lua", true)) do
|
||||||
|
loadfile(ft_path)()
|
||||||
|
end
|
||||||
|
|
||||||
|
-- LuaSnip keymaps
|
||||||
|
ls.config.set_config {
|
||||||
|
history = true,
|
||||||
|
updateevents = "TextChanged, TextChangedI",
|
||||||
|
enable_autosnippets = true,
|
||||||
|
store_selection_keys = "<c-s>",
|
||||||
|
}
|
||||||
|
|
||||||
|
vim.keymap.set({ "i", "s" }, "<c-j>", function()
|
||||||
|
if ls.expand_or_jumpable() then
|
||||||
|
ls.expand_or_jump()
|
||||||
|
end
|
||||||
|
end, { silent = true })
|
||||||
|
|
||||||
|
vim.keymap.set({ "i", "s" }, "<c-k>", function()
|
||||||
|
if ls.jumpable() then
|
||||||
|
ls.jump(-1)
|
||||||
|
end
|
||||||
|
end, { silent = true })
|
||||||
|
|
||||||
|
vim.keymap.set({ "i", "s" }, "<c-l>", function()
|
||||||
|
if ls.choice_active() then
|
||||||
|
ls.change_choice(1)
|
||||||
|
end
|
||||||
|
end, { silent = true })
|
||||||
|
|
||||||
|
vim.keymap.set("n", "<leader><leader>s", "<cmd>source ~/.config/nvim/lua/custom/luasnip.lua<CR>")
|
||||||
|
|
||||||
|
|
||||||
|
-- → → → → → → Neogen ← ← ← ← ← ←
|
||||||
|
-- Neogen setup
|
||||||
|
require("neogen").setup {
|
||||||
|
enabled = true,
|
||||||
|
languages = {
|
||||||
|
python = {
|
||||||
|
template = {
|
||||||
|
annotation_convention = "reST"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
-- Neogen keymaps
|
||||||
|
local opts = { noremap = true, silent = true }
|
||||||
|
vim.keymap.set("n", "<Leader>ids", ":lua require('neogen').generate()<CR>", opts)
|
||||||
|
|
||||||
|
-- → → → → → → Vim Tmux Navigator ← ← ← ← ← ←
|
||||||
|
-- Keymaps
|
||||||
|
vim.keymap.set("n", "<c-h>", "<cmd>TmuxNavigateLeft<cr>", { noremap = true, silent = true })
|
||||||
|
vim.keymap.set("n", "<c-j>", "<cmd>TmuxNavigateDown<cr>", { noremap = true, silent = true })
|
||||||
|
vim.keymap.set("n", "<c-k>", "<cmd>TmuxNavigateUp<cr>", { noremap = true, silent = true })
|
||||||
|
vim.keymap.set("n", "<c-l>", "<cmd>TmuxNavigateRight<cr>", { noremap = true, silent = true })
|
||||||
|
vim.keymap.set("n", "<c-\\>", "<cmd>TmuxNavigatePrevious<cr>", { noremap = true, silent = true })
|
||||||
|
|
||||||
|
-- → → → → → → Completion ← ← ← ← ← ←
|
||||||
|
vim.opt.completeopt = { "menu", "menuone", "noselect" }
|
||||||
|
|
||||||
|
local cmp = require "cmp"
|
||||||
|
|
||||||
|
cmp.setup {
|
||||||
|
sources = {
|
||||||
|
{ name = "luasnip" },
|
||||||
|
{ name = "nvim_lsp" },
|
||||||
|
{ name = "path" },
|
||||||
|
{ name = "buffer" },
|
||||||
|
},
|
||||||
|
mapping = {
|
||||||
|
["<C-n>"] = cmp.mapping.select_next_item { behavior = cmp.SelectBehavior.Insert },
|
||||||
|
["<C-p>"] = cmp.mapping.select_prev_item { behavior = cmp.SelectBehavior.Insert },
|
||||||
|
["<C-y>"] = cmp.mapping(
|
||||||
|
cmp.mapping.confirm {
|
||||||
|
behavior = cmp.ConfirmBehavior.Insert,
|
||||||
|
select = true,
|
||||||
|
},
|
||||||
|
{ "i", "c" }
|
||||||
|
),
|
||||||
|
},
|
||||||
|
snippet = {
|
||||||
|
expand = function(args)
|
||||||
|
require("luasnip").lsp_expand(args.body)
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
-- → → → → → → LspConfig ← ← ← ← ← ←
|
||||||
|
-- Locals
|
||||||
|
local picker = "FzfLua"
|
||||||
|
local capabilities = nil
|
||||||
|
local servers = {
|
||||||
|
gopls = {
|
||||||
|
settings = {
|
||||||
|
gopls = {
|
||||||
|
hints = {
|
||||||
|
assignVariableTypes = true,
|
||||||
|
compositeLiteralFields = true,
|
||||||
|
compositeLiteralTypes = true,
|
||||||
|
constantValues = true,
|
||||||
|
functionTypeParameters = true,
|
||||||
|
parameterNames = true,
|
||||||
|
rangeVariableTypes = true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
ruff = {
|
||||||
|
init_options = {
|
||||||
|
settings = {
|
||||||
|
-- Ruff language server settings go here
|
||||||
|
logLevel = "error",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
pyright = {
|
||||||
|
settings = {
|
||||||
|
pyright = {
|
||||||
|
-- Using Ruff's import organizer
|
||||||
|
disableOrganizeImports = true,
|
||||||
|
},
|
||||||
|
python = {
|
||||||
|
analysis = {
|
||||||
|
-- Ignore all files for analysis to exclusively use Ruff for linting
|
||||||
|
-- ignore = { "*" },
|
||||||
|
diagnosticMode = "off",
|
||||||
|
-- typeCheckingMode = "off",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
lua_ls = {
|
||||||
|
capabilities = capabilities,
|
||||||
|
settings = {
|
||||||
|
Lua = {
|
||||||
|
-- make the language server recognize "vim" global
|
||||||
|
diagnostics = {
|
||||||
|
globals = { "vim" },
|
||||||
|
},
|
||||||
|
completion = {
|
||||||
|
callSnippet = "Replace",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
clangd = {
|
||||||
|
filetypes = { "c", "cpp" },
|
||||||
|
cmd = {
|
||||||
|
"clangd",
|
||||||
|
"--offset-encoding=utf-16",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
html = {
|
||||||
|
filetypes = { "html", "gohtml" },
|
||||||
|
},
|
||||||
|
eslint = {
|
||||||
|
filetypes = { "javascript", "typescript", "html", "gohtml" },
|
||||||
|
},
|
||||||
|
ts_ls = {
|
||||||
|
filetypes = { "javascript", "typescript" },
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
-- Setup
|
||||||
|
if pcall(require, "cmp_nvim_lsp") then
|
||||||
|
capabilities = require("cmp_nvim_lsp").default_capabilities()
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Enable the configured servers
|
||||||
|
vim.lsp.enable(vim.tbl_keys(servers))
|
||||||
|
|
||||||
|
-- Keymaps
|
||||||
|
-- Here it is used the LSP server attaches to file
|
||||||
|
vim.api.nvim_create_autocmd("LspAttach", {
|
||||||
|
-- Grouping together autocommands.
|
||||||
|
-- Here we creating new group and calling it "UserLspConfig"
|
||||||
|
group = vim.api.nvim_create_augroup("UserLspConfig", {}),
|
||||||
|
-- callback defining logic to execute on the event
|
||||||
|
callback = function(ev)
|
||||||
|
-- Buffer local mappings.
|
||||||
|
-- See `:help vim.lsp.*` for documentation on any of the below functions
|
||||||
|
local opts = { buffer = ev.buf, silent = true }
|
||||||
|
|
||||||
|
-- set keybinds
|
||||||
|
-- show definition, references
|
||||||
|
opts.desc = "Show LSP references"
|
||||||
|
vim.keymap.set("n", "gR", string.format("<cmd>%s lsp_references<CR>", picker), opts)
|
||||||
|
|
||||||
|
-- go to declaration
|
||||||
|
opts.desc = "Go to declaration"
|
||||||
|
vim.keymap.set("n", "gD", vim.lsp.buf.declaration, opts)
|
||||||
|
|
||||||
|
-- show lsp definitions
|
||||||
|
opts.desc = "Show LSP definitions"
|
||||||
|
vim.keymap.set("n", "gd", string.format("<cmd>%s lsp_definitions<CR>", picker), opts)
|
||||||
|
|
||||||
|
-- show lsp implementations
|
||||||
|
opts.desc = "Show LSP implementations"
|
||||||
|
vim.keymap.set("n", "gi", string.format("<cmd>%s lsp_implementations<CR>", picker), opts)
|
||||||
|
|
||||||
|
-- show lsp type definitions
|
||||||
|
opts.desc = "Show LSP type definitions"
|
||||||
|
vim.keymap.set("n", "glt", string.format("<cmd>%s lsp_type_definitions<CR>", picker), opts)
|
||||||
|
|
||||||
|
-- see available code actions, in visual mode will apply to selection
|
||||||
|
opts.desc = "See available code actions"
|
||||||
|
vim.keymap.set({ "n", "v" }, "<leader>ca", vim.lsp.buf.code_action, opts)
|
||||||
|
|
||||||
|
-- smart rename
|
||||||
|
opts.desc = "Smart rename"
|
||||||
|
vim.keymap.set("n", "<leader>rn", vim.lsp.buf.rename, opts)
|
||||||
|
|
||||||
|
-- show diagnostics for file
|
||||||
|
opts.desc = "Show buffer diagnostics"
|
||||||
|
vim.keymap.set("n", "<leader>D", string.format("<cmd>%s diagnostics bufnr=0<CR>", picker), opts)
|
||||||
|
|
||||||
|
-- show diagnostics for line
|
||||||
|
opts.desc = "Show line diagnostics"
|
||||||
|
vim.keymap.set("n", "<leader>d", vim.diagnostic.open_float, opts)
|
||||||
|
|
||||||
|
-- jump to previous diagnostic in buffer
|
||||||
|
opts.desc = "Go to previous diagnostic"
|
||||||
|
vim.keymap.set("n", "[d", vim.diagnostic.goto_prev, opts)
|
||||||
|
|
||||||
|
-- jump to next diagnostic in buffer
|
||||||
|
opts.desc = "Go to next diagnostic"
|
||||||
|
vim.keymap.set("n", "]d", vim.diagnostic.goto_next, opts)
|
||||||
|
|
||||||
|
-- show documentation for what is under cursor
|
||||||
|
opts.desc = "Show documentation for what is under cursor"
|
||||||
|
vim.keymap.set("n", "K", vim.lsp.buf.hover, opts)
|
||||||
|
|
||||||
|
-- mapping to restart lsp if necessary
|
||||||
|
opts.desc = "Restart LSP"
|
||||||
|
vim.keymap.set("n", "<leader>rs", ":LspRestart<CR>", opts)
|
||||||
|
|
||||||
|
opts.desc = "Run formatting on current buffer"
|
||||||
|
vim.keymap.set("n", "<space>f", function()
|
||||||
|
vim.lsp.buf.format({ async = true })
|
||||||
|
end, opts)
|
||||||
|
end,
|
||||||
})
|
})
|
||||||
|
|
|
||||||
|
|
@ -1,59 +0,0 @@
|
||||||
# Справка по интересным моментам в коде
|
|
||||||
## Функция получения версии `python` в `lsp.lua`
|
|
||||||
|
|
||||||
```lua
|
|
||||||
local function get_python_version()
|
|
||||||
local handle = io.popen("python --version 2>&1") -- Redirect stderr to stdout
|
|
||||||
if handle then
|
|
||||||
local result = handle:read("*a")
|
|
||||||
handle:close()
|
|
||||||
-- Check if the output contains a version number
|
|
||||||
local version = result:match("Python (%d+%.%d+%.%d+)")
|
|
||||||
if version then
|
|
||||||
return version
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
handle = io.popen("python3 --version 2>&1") -- Redirect stderr to stdout
|
|
||||||
if handle then
|
|
||||||
local result = handle:read("*a")
|
|
||||||
handle:close()
|
|
||||||
-- Check if the output contains a version number
|
|
||||||
local version = result:match("Python (%d+%.%d+%.%d+)")
|
|
||||||
if version then
|
|
||||||
return version
|
|
||||||
end
|
|
||||||
end
|
|
||||||
-- TODO: Add some exception handling if python not installed on user machine
|
|
||||||
return "Python 0.0.0"
|
|
||||||
end
|
|
||||||
```
|
|
||||||
Что тут есть примечательного:
|
|
||||||
- Получение данных, выполняя команду в shell оболочке системы с помощью
|
|
||||||
`io.popen`. *Важно*: Данная функция может работать не во всех ОС
|
|
||||||
- Функция выполняет команду, указанную в аргументе, и возвращает *файловый
|
|
||||||
дескриптор*, который можно использовать для чтения вывода команды (или
|
|
||||||
записи в нее)
|
|
||||||
|
|
||||||
Разберем флоу подробнее:
|
|
||||||
Если про `python --version` - все понятно, то вот:
|
|
||||||
```lua
|
|
||||||
2>&1
|
|
||||||
```
|
|
||||||
Уже надо прояснить:
|
|
||||||
- В UNIX-подобных системах есть три стандартных потока - `stdin` = 0; `stdout` = 1;
|
|
||||||
`strerr` = 2;
|
|
||||||
- По умолчанию `io.popen` передает только вывод `stdout` в handle, поэтому для обработки
|
|
||||||
ошибок, надо дополнительно захватывать поток `stderr`
|
|
||||||
- `2>&1` означает, что мы хотим перенаправить поток ошибок 2 в стандартный вывод 1;
|
|
||||||
- Это нужно для того, чтобы захватить не только вывод команды, но и возможные ошибки
|
|
||||||
(например если питон не установлен);
|
|
||||||
- `>&` - оператор перенаправления потоков.
|
|
||||||
|
|
||||||
Дополнительно:
|
|
||||||
`*a` внутри `read` - конструкция формата чтения файловых объектов в `Lua`. Они
|
|
||||||
указывают - как именно стоит читать данные из файла или потока. Помимо `a` есть
|
|
||||||
еще:
|
|
||||||
- `*a` - читать все содержимое
|
|
||||||
- `*l` - читать строку
|
|
||||||
- `*n` - читать число.
|
|
||||||
|
|
@ -1,9 +0,0 @@
|
||||||
-- Turn on termguicolors for colorschemes
|
|
||||||
-- (Have to use true color terminal to see theese setting work)
|
|
||||||
vim.opt.termguicolors = true
|
|
||||||
vim.opt.background = "dark" -- colorschemes that can be light or dark will be made dark
|
|
||||||
vim.opt.signcolumn = "yes" -- show sigh columns so that text doesn't shift
|
|
||||||
|
|
||||||
-- vim.g.gruvbox_material_background = 'hard'
|
|
||||||
vim.g.gruvbox_material_enable_italic = true
|
|
||||||
vim.cmd.colorscheme("catppuccin-mocha")
|
|
||||||
|
|
@ -1,12 +0,0 @@
|
||||||
local M = {}
|
|
||||||
|
|
||||||
function M.setup()
|
|
||||||
vim.opt_local.makeprg = "mypy ."
|
|
||||||
vim.opt_local.errorformat = table.concat({
|
|
||||||
"%f:%l:%c:%t%*[^:]: %m",
|
|
||||||
"%f:%l:%t%*[^:]: %m",
|
|
||||||
"%f:%l: %m",
|
|
||||||
}, ",")
|
|
||||||
end
|
|
||||||
|
|
||||||
return M
|
|
||||||
|
|
@ -1,64 +0,0 @@
|
||||||
-- Set some settings for competion
|
|
||||||
-- For more info type `:help completeopt`
|
|
||||||
-- menu: Show menu when completions available (more than 1)
|
|
||||||
-- menuone: Show menu even when there is only 1 option
|
|
||||||
-- noselect: Force user to select convinient option
|
|
||||||
|
|
||||||
-- Load luasnip setup
|
|
||||||
require "custom.luasnip"
|
|
||||||
|
|
||||||
vim.opt.completeopt = { "menu", "menuone", "noselect" }
|
|
||||||
|
|
||||||
local lspkind = require "lspkind"
|
|
||||||
|
|
||||||
local kind_formatter = lspkind.cmp_format {
|
|
||||||
mode = "symbol_text",
|
|
||||||
menu = {
|
|
||||||
buffer = "[buf]",
|
|
||||||
nvim_lsp = "[LSP]",
|
|
||||||
nvim_lua = "[api]",
|
|
||||||
path = "[path]",
|
|
||||||
luasnip = "[snip]",
|
|
||||||
gh_issues = "[issues]",
|
|
||||||
tn = "[TabNine]",
|
|
||||||
eruby = "[erb]",
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
local cmp = require "cmp"
|
|
||||||
|
|
||||||
cmp.setup {
|
|
||||||
sources = {
|
|
||||||
{ name = "luasnip" },
|
|
||||||
{ name = "nvim_lsp" },
|
|
||||||
{ name = "path" }
|
|
||||||
},
|
|
||||||
mapping = {
|
|
||||||
["<C-n>"] = cmp.mapping.select_next_item { behavior = cmp.SelectBehavior.Insert },
|
|
||||||
["<C-p>"] = cmp.mapping.select_prev_item { behavior = cmp.SelectBehavior.Insert },
|
|
||||||
["<C-y>"] = cmp.mapping(
|
|
||||||
cmp.mapping.confirm {
|
|
||||||
behavior = cmp.ConfirmBehavior.Insert,
|
|
||||||
select = true,
|
|
||||||
},
|
|
||||||
{ "i", "c" }
|
|
||||||
),
|
|
||||||
},
|
|
||||||
|
|
||||||
-- Enable luasnip to handle snippet expansion for nvim-cmp
|
|
||||||
snippet = {
|
|
||||||
expand = function(args)
|
|
||||||
require("luasnip").lsp_expand(args.body)
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
|
|
||||||
formatting = {
|
|
||||||
fields = { "abbr", "kind", "menu" },
|
|
||||||
expandable_indicator = true,
|
|
||||||
format = function(entry, vim_item)
|
|
||||||
-- Lspkind setup for icons
|
|
||||||
vim_item = kind_formatter(entry, vim_item)
|
|
||||||
return vim_item
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
@ -1,161 +0,0 @@
|
||||||
local fzf_lua = require("fzf-lua")
|
|
||||||
|
|
||||||
fzf_lua.setup({
|
|
||||||
winopts = {
|
|
||||||
height = 0.85,
|
|
||||||
width = 0.80,
|
|
||||||
},
|
|
||||||
fzf_opts = {
|
|
||||||
['--layout'] = 'reverse-list',
|
|
||||||
},
|
|
||||||
files = {
|
|
||||||
fd_opts = "--color=never --type f",
|
|
||||||
rg_opts = "--color=never --files",
|
|
||||||
},
|
|
||||||
keymap = {
|
|
||||||
fzf = {
|
|
||||||
["ctrl-q"] = "select-all+accept",
|
|
||||||
},
|
|
||||||
builtin = {
|
|
||||||
["<C-j>"] = "down",
|
|
||||||
["<C-k>"] = "up",
|
|
||||||
["<S-tab>"] = "toggle+up",
|
|
||||||
["<tab>"] = "toggle+down",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
})
|
|
||||||
|
|
||||||
-- Glob pattern searcher
|
|
||||||
local function live_grep_with_glob()
|
|
||||||
vim.ui.input({
|
|
||||||
prompt = "Glob pattern: ",
|
|
||||||
default = "/home/user/Work/root/ivideon/audio_storage/",
|
|
||||||
}, function(input)
|
|
||||||
if input then
|
|
||||||
fzf_lua.live_grep({
|
|
||||||
cwd = input,
|
|
||||||
})
|
|
||||||
end
|
|
||||||
end)
|
|
||||||
end
|
|
||||||
|
|
||||||
local function live_grep_in_current_dir()
|
|
||||||
local current_file = vim.fn.expand('%:p')
|
|
||||||
local current_dir = current_file:match("(.*/)")
|
|
||||||
|
|
||||||
vim.ui.input({
|
|
||||||
prompt = "Glob pattern: ",
|
|
||||||
default = current_dir or vim.fn.getcwd(),
|
|
||||||
}, function(input)
|
|
||||||
if input then
|
|
||||||
fzf_lua.live_grep({
|
|
||||||
cwd = input,
|
|
||||||
})
|
|
||||||
end
|
|
||||||
end)
|
|
||||||
end
|
|
||||||
|
|
||||||
local function copy_current_file_path()
|
|
||||||
local filepath = vim.fn.expand('%:p')
|
|
||||||
vim.fn.setreg("+", filepath)
|
|
||||||
print("Copied: " .. filepath)
|
|
||||||
end
|
|
||||||
|
|
||||||
local function copy_file_path_and_position()
|
|
||||||
local filepath = vim.fn.expand('%:p')
|
|
||||||
local cursor_pos = vim.api.nvim_win_get_cursor(0)
|
|
||||||
local line = cursor_pos[1]
|
|
||||||
local col = cursor_pos[2] + 1 -- fzf-lua uses 1-indexed columns
|
|
||||||
|
|
||||||
local output = string.format("%s:%d:%d", filepath, line, col)
|
|
||||||
vim.fn.setreg("+", output)
|
|
||||||
print("Copied: " .. output)
|
|
||||||
end
|
|
||||||
|
|
||||||
local function live_grep_in_quick_fix_list_files()
|
|
||||||
local qf_items = vim.fn.getqflist()
|
|
||||||
local files = {}
|
|
||||||
|
|
||||||
for _, item in ipairs(qf_items) do
|
|
||||||
if item.bufnr > 0 then
|
|
||||||
local filename = vim.api.nvim_buf_get_name(item.bufnr)
|
|
||||||
if filename ~= "" then
|
|
||||||
table.insert(files, filename)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
if #files > 0 then
|
|
||||||
fzf_lua.live_grep({
|
|
||||||
search_dirs = files,
|
|
||||||
})
|
|
||||||
else
|
|
||||||
print("No files in quickfix list")
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
local function find_all_files_including_hidden()
|
|
||||||
fzf_lua.files(
|
|
||||||
{
|
|
||||||
fd_opts = "--type f --hidden --no-ignore"
|
|
||||||
}
|
|
||||||
)
|
|
||||||
end
|
|
||||||
|
|
||||||
-- Function for getting filename and copy it to + buffer
|
|
||||||
local function copy_filename()
|
|
||||||
local filepath = vim.fn.expand('%:t')
|
|
||||||
local output = string.format("%s", filepath)
|
|
||||||
vim.fn.setreg("+", output)
|
|
||||||
print("Copied: " .. output)
|
|
||||||
end
|
|
||||||
|
|
||||||
vim.api.nvim_create_user_command('FzfLuaGrepGlob', live_grep_with_glob, {})
|
|
||||||
|
|
||||||
local keymap = vim.keymap.set
|
|
||||||
|
|
||||||
|
|
||||||
keymap("n", "<leader>ff", function() fzf_lua.files() end, { desc = "FZF: find files in cwd" })
|
|
||||||
keymap("n", "<leader>fg", function() fzf_lua.live_grep() end, { desc = "FZF: find string in cwd" })
|
|
||||||
keymap("n", "<leader>fs", function() fzf_lua.grep_cword() end, { desc = "FZF: find string under cursor" })
|
|
||||||
keymap("n", "<leader>fb", function() fzf_lua.buffers() end, { desc = "FZF: display opened buffers" })
|
|
||||||
keymap("n", "<leader>fh", function() fzf_lua.help_tags() end, { desc = "FZF: display help tags" })
|
|
||||||
|
|
||||||
-- Your custom commands
|
|
||||||
keymap("n", "<leader>fa", find_all_files_including_hidden, { desc = "FZF: Find all files" })
|
|
||||||
keymap('n', '<leader>fp', live_grep_with_glob, { desc = 'Live grep with glob pattern' })
|
|
||||||
keymap('n', '<leader>fcp', live_grep_in_current_dir, { desc = 'Live grep in current directory' })
|
|
||||||
keymap('n', '<leader>ccp', copy_file_path_and_position, { desc = "Copy cursor position" })
|
|
||||||
keymap('n', '<leader>ccd', copy_current_file_path, { desc = 'Copy current file path' })
|
|
||||||
keymap('n', '<leader>ccf', copy_filename, { desc = 'Copy current file path' })
|
|
||||||
keymap("n", "<leader>fcgb", function()
|
|
||||||
fzf_lua.git_blame({
|
|
||||||
winopts = {
|
|
||||||
preview = { hidden = "hidden" }
|
|
||||||
}
|
|
||||||
})
|
|
||||||
end, { desc = "Grep: Document symbols" })
|
|
||||||
|
|
||||||
keymap('n', '<leader>fq', live_grep_in_quick_fix_list_files, { desc = "Live grep in quickfix files" })
|
|
||||||
|
|
||||||
keymap('n', '<leader>fcf', function()
|
|
||||||
fzf_lua.live_grep({
|
|
||||||
cwd = vim.fn.expand('%:p:h'),
|
|
||||||
search = '',
|
|
||||||
fzf_cli_args = '--no-sort',
|
|
||||||
})
|
|
||||||
end, { desc = "Live grep in current file" })
|
|
||||||
|
|
||||||
keymap("n", "<leader>fml", function() fzf_lua.marks() end, { desc = "FZF: find marks list" })
|
|
||||||
keymap("n", "<leader>fmp", function() fzf_lua.man_pages() end, { desc = "FZF: find available man pages" })
|
|
||||||
keymap("n", "<leader>fds", function() fzf_lua.lsp_document_symbols() end, { desc = "Grep: Document symbols" })
|
|
||||||
-- keymap("n", "<leader>fgb", function() fzf_lua.git_blame() end, { desc = "Grep: Document symbols" })
|
|
||||||
keymap("n", "<leader>ft", function() fzf_lua.tabs() end, { desc = "Pick opened tabs" })
|
|
||||||
|
|
||||||
keymap("n", "<leader>fn", function()
|
|
||||||
fzf_lua.grep({
|
|
||||||
prompt = 'Todo❯ ',
|
|
||||||
search = 'TODO|FIXME|XXX|HACK|BUG|NOTE|PERF|OPTIMIZE',
|
|
||||||
no_esc = true,
|
|
||||||
})
|
|
||||||
end, { desc = "FZF: display TODO comments" })
|
|
||||||
|
|
@ -1,235 +0,0 @@
|
||||||
-- Using vim.lsp.config() instead of require('lspconfig') (nvim-lspconfig >= 0.11)
|
|
||||||
|
|
||||||
local keymap = vim.keymap
|
|
||||||
local picker = "FzfLua"
|
|
||||||
|
|
||||||
local capabilities = nil
|
|
||||||
if pcall(require, "cmp_nvim_lsp") then
|
|
||||||
capabilities = require("cmp_nvim_lsp").default_capabilities()
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
local servers = {
|
|
||||||
gopls = {
|
|
||||||
settings = {
|
|
||||||
gopls = {
|
|
||||||
hints = {
|
|
||||||
assignVariableTypes = true,
|
|
||||||
compositeLiteralFields = true,
|
|
||||||
compositeLiteralTypes = true,
|
|
||||||
constantValues = true,
|
|
||||||
functionTypeParameters = true,
|
|
||||||
parameterNames = true,
|
|
||||||
rangeVariableTypes = true,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
ruff = {
|
|
||||||
init_options = {
|
|
||||||
settings = {
|
|
||||||
-- Ruff language server settings go here
|
|
||||||
logLevel = "error",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
pyright = {
|
|
||||||
settings = {
|
|
||||||
pyright = {
|
|
||||||
-- Using Ruff's import organizer
|
|
||||||
disableOrganizeImports = true,
|
|
||||||
},
|
|
||||||
python = {
|
|
||||||
analysis = {
|
|
||||||
-- Ignore all files for analysis to exclusively use Ruff for linting
|
|
||||||
-- ignore = { "*" },
|
|
||||||
diagnosticMode = "off",
|
|
||||||
-- typeCheckingMode = "off",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
lua_ls = {
|
|
||||||
capabilities = capabilities,
|
|
||||||
settings = {
|
|
||||||
Lua = {
|
|
||||||
-- make the language server recognize "vim" global
|
|
||||||
diagnostics = {
|
|
||||||
globals = { "vim" },
|
|
||||||
},
|
|
||||||
completion = {
|
|
||||||
callSnippet = "Replace",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
clangd = {
|
|
||||||
filetypes = { "c", "cpp" },
|
|
||||||
cmd = {
|
|
||||||
"clangd",
|
|
||||||
"--offset-encoding=utf-16",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
html = {
|
|
||||||
filetypes = { "html", "gohtml" },
|
|
||||||
},
|
|
||||||
eslint = {
|
|
||||||
filetypes = { "javascript", "typescript", "html", "gohtml" },
|
|
||||||
},
|
|
||||||
ts_ls = {
|
|
||||||
filetypes = { "javascript", "typescript" },
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
local servers_to_install = vim.tbl_filter(function(key)
|
|
||||||
local t = servers[key]
|
|
||||||
if type(t) == "table" then
|
|
||||||
return not t.manual_install
|
|
||||||
else
|
|
||||||
return t
|
|
||||||
end
|
|
||||||
end, vim.tbl_keys(servers))
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
require("mason").setup()
|
|
||||||
local ensure_installed = {
|
|
||||||
-- Normal settings
|
|
||||||
"stylua",
|
|
||||||
"lua_ls",
|
|
||||||
"gofumpt",
|
|
||||||
"golines",
|
|
||||||
"prettier",
|
|
||||||
}
|
|
||||||
|
|
||||||
local function get_python_version()
|
|
||||||
local handle = io.popen("python --version 2>&1") -- Redirect stderr to stdout
|
|
||||||
if handle then
|
|
||||||
local result = handle:read("*a")
|
|
||||||
handle:close()
|
|
||||||
-- Check if the output contains a version number
|
|
||||||
local version = result:match("Python (%d+%.%d+%.%d+)")
|
|
||||||
if version then
|
|
||||||
return version
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
handle = io.popen("python3 --version 2>&1") -- Redirect stderr to stdout
|
|
||||||
if handle then
|
|
||||||
local result = handle:read("*a")
|
|
||||||
handle:close()
|
|
||||||
-- Check if the output contains a version number
|
|
||||||
local version = result:match("Python (%d+%.%d+%.%d+)")
|
|
||||||
if version then
|
|
||||||
return version
|
|
||||||
end
|
|
||||||
end
|
|
||||||
-- TODO: Add some exception handling if python not installed on user machine
|
|
||||||
return "Python 0.0.0"
|
|
||||||
end
|
|
||||||
|
|
||||||
-- Now we need to make things work in Astra
|
|
||||||
-- Main Astra cockblock - low python version, that prevents installation of
|
|
||||||
-- some modules, so in order to prevent mason from whining - disable some
|
|
||||||
-- autoinstall modules depending on currently installed python version
|
|
||||||
-- NOTE: You must install removed dependencies manually
|
|
||||||
local python_version = get_python_version()
|
|
||||||
if python_version == nil then
|
|
||||||
python_version = "Python 3.13"
|
|
||||||
end
|
|
||||||
local _, minor, _ = python_version:match(".*(%d+)%.(%d+)%.(%d+)")
|
|
||||||
if tonumber(minor) < 8 then
|
|
||||||
for i, k in pairs(servers_to_install) do
|
|
||||||
-- Ruff is not supported for python lower than 3.8
|
|
||||||
if k == "ruff" then
|
|
||||||
table.remove(servers_to_install, i)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
vim.list_extend(ensure_installed, servers_to_install)
|
|
||||||
require("mason-tool-installer").setup { ensure_installed = ensure_installed }
|
|
||||||
|
|
||||||
for name, config in pairs(servers) do
|
|
||||||
if config == true then
|
|
||||||
config = {}
|
|
||||||
end
|
|
||||||
config = vim.tbl_deep_extend("force", {}, {
|
|
||||||
capabilities = capabilities,
|
|
||||||
}, config)
|
|
||||||
|
|
||||||
vim.lsp.config(name, config)
|
|
||||||
end
|
|
||||||
|
|
||||||
-- Enable the configured servers
|
|
||||||
vim.lsp.enable(vim.tbl_keys(servers))
|
|
||||||
|
|
||||||
-- Here it is used the LSP server attaches to file
|
|
||||||
vim.api.nvim_create_autocmd("LspAttach", {
|
|
||||||
-- Grouping together autocommands.
|
|
||||||
-- Here we creating new group and calling it "UserLspConfig"
|
|
||||||
group = vim.api.nvim_create_augroup("UserLspConfig", {}),
|
|
||||||
-- callback defining logic to execute on the event
|
|
||||||
callback = function(ev)
|
|
||||||
-- Buffer local mappings.
|
|
||||||
-- See `:help vim.lsp.*` for documentation on any of the below functions
|
|
||||||
local opts = { buffer = ev.buf, silent = true }
|
|
||||||
|
|
||||||
-- set keybinds
|
|
||||||
-- show definition, references
|
|
||||||
opts.desc = "Show LSP references"
|
|
||||||
keymap.set("n", "gR", string.format("<cmd>%s lsp_references<CR>", picker), opts)
|
|
||||||
|
|
||||||
-- go to declaration
|
|
||||||
opts.desc = "Go to declaration"
|
|
||||||
keymap.set("n", "gD", vim.lsp.buf.declaration, opts)
|
|
||||||
|
|
||||||
-- show lsp definitions
|
|
||||||
opts.desc = "Show LSP definitions"
|
|
||||||
keymap.set("n", "gd", string.format("<cmd>%s lsp_definitions<CR>", picker), opts)
|
|
||||||
|
|
||||||
-- show lsp implementations
|
|
||||||
opts.desc = "Show LSP implementations"
|
|
||||||
keymap.set("n", "gi", string.format("<cmd>%s lsp_implementations<CR>", picker), opts)
|
|
||||||
|
|
||||||
-- show lsp type definitions
|
|
||||||
opts.desc = "Show LSP type definitions"
|
|
||||||
keymap.set("n", "glt", string.format("<cmd>%s lsp_type_definitions<CR>", picker), opts)
|
|
||||||
|
|
||||||
-- see available code actions, in visual mode will apply to selection
|
|
||||||
opts.desc = "See available code actions"
|
|
||||||
keymap.set({ "n", "v" }, "<leader>ca", vim.lsp.buf.code_action, opts)
|
|
||||||
|
|
||||||
-- smart rename
|
|
||||||
opts.desc = "Smart rename"
|
|
||||||
keymap.set("n", "<leader>rn", vim.lsp.buf.rename, opts)
|
|
||||||
|
|
||||||
-- show diagnostics for file
|
|
||||||
opts.desc = "Show buffer diagnostics"
|
|
||||||
keymap.set("n", "<leader>D", string.format("<cmd>%s diagnostics bufnr=0<CR>", picker), opts)
|
|
||||||
|
|
||||||
-- show diagnostics for line
|
|
||||||
opts.desc = "Show line diagnostics"
|
|
||||||
keymap.set("n", "<leader>d", vim.diagnostic.open_float, opts)
|
|
||||||
|
|
||||||
-- jump to previous diagnostic in buffer
|
|
||||||
opts.desc = "Go to previous diagnostic"
|
|
||||||
keymap.set("n", "[d", vim.diagnostic.goto_prev, opts)
|
|
||||||
|
|
||||||
-- jump to next diagnostic in buffer
|
|
||||||
opts.desc = "Go to next diagnostic"
|
|
||||||
keymap.set("n", "]d", vim.diagnostic.goto_next, opts)
|
|
||||||
|
|
||||||
-- show documentation for what is under cursor
|
|
||||||
opts.desc = "Show documentation for what is under cursor"
|
|
||||||
keymap.set("n", "K", vim.lsp.buf.hover, opts)
|
|
||||||
|
|
||||||
-- mapping to restart lsp if necessary
|
|
||||||
opts.desc = "Restart LSP"
|
|
||||||
keymap.set("n", "<leader>rs", ":LspRestart<CR>", opts)
|
|
||||||
|
|
||||||
opts.desc = "Run formatting on current buffer"
|
|
||||||
keymap.set("n", "<space>f", function()
|
|
||||||
vim.lsp.buf.format({ async = true })
|
|
||||||
end, opts)
|
|
||||||
end,
|
|
||||||
})
|
|
||||||
|
|
@ -1,14 +0,0 @@
|
||||||
require("lualine").setup({
|
|
||||||
options = {
|
|
||||||
theme = "catppuccin-mocha",
|
|
||||||
},
|
|
||||||
sections = {
|
|
||||||
lualine_c = {
|
|
||||||
{
|
|
||||||
"filename",
|
|
||||||
file_status = true,
|
|
||||||
path = 2,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
})
|
|
||||||
|
|
@ -1,34 +0,0 @@
|
||||||
local ls = require "luasnip"
|
|
||||||
local types = require "luasnip.util.types"
|
|
||||||
|
|
||||||
ls.config.set_config {
|
|
||||||
history = true,
|
|
||||||
updateevents = "TextChanged, TextChangedI",
|
|
||||||
enable_autosnippets = true,
|
|
||||||
store_selection_keys = "<c-s>",
|
|
||||||
}
|
|
||||||
|
|
||||||
vim.keymap.set({ "i", "s" }, "<c-j>", function()
|
|
||||||
if ls.expand_or_jumpable() then
|
|
||||||
ls.expand_or_jump()
|
|
||||||
end
|
|
||||||
end, { silent = true })
|
|
||||||
|
|
||||||
vim.keymap.set({ "i", "s" }, "<c-k>", function()
|
|
||||||
if ls.jumpable() then
|
|
||||||
ls.jump(-1)
|
|
||||||
end
|
|
||||||
end, { silent = true })
|
|
||||||
|
|
||||||
vim.keymap.set({ "i", "s" }, "<c-l>", function()
|
|
||||||
if ls.choice_active() then
|
|
||||||
ls.change_choice(1)
|
|
||||||
end
|
|
||||||
end, { silent = true })
|
|
||||||
|
|
||||||
vim.keymap.set("n", "<leader><leader>s", "<cmd>source ~/.config/nvim/lua/custom/luasnip.lua<CR>")
|
|
||||||
|
|
||||||
-- Load custom snippets
|
|
||||||
for _, ft_path in ipairs(vim.api.nvim_get_runtime_file("lua/custom/snippets/*.lua", true)) do
|
|
||||||
loadfile(ft_path)()
|
|
||||||
end
|
|
||||||
|
|
@ -1,14 +0,0 @@
|
||||||
require("neogen").setup {
|
|
||||||
enabled = true,
|
|
||||||
languages = {
|
|
||||||
python = {
|
|
||||||
template = {
|
|
||||||
annotation_convention = "reST"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
local keymap = vim.keymap
|
|
||||||
local opts = { noremap = true, silent = true }
|
|
||||||
keymap.set("n", "<Leader>ids", ":lua require('neogen').generate()<CR>", opts)
|
|
||||||
|
|
@ -1,72 +0,0 @@
|
||||||
require("obsidian").setup {
|
|
||||||
-- Set workspace setting
|
|
||||||
workspaces = {
|
|
||||||
{
|
|
||||||
name = "personal",
|
|
||||||
path = "~/Documents/t0xa_vault",
|
|
||||||
}
|
|
||||||
},
|
|
||||||
-- Disable conceal level to supress varning log message
|
|
||||||
ui = {
|
|
||||||
enable = false
|
|
||||||
},
|
|
||||||
-- Set notes subdir to store new notes
|
|
||||||
notes_subdir = "Unsorted",
|
|
||||||
new_notes_location = "notes_subdir",
|
|
||||||
-- Set template params
|
|
||||||
templates = {
|
|
||||||
folder = "Templates",
|
|
||||||
date_format = "%Y-%m-%d",
|
|
||||||
time_format = "%H:%M",
|
|
||||||
substitutions = {
|
|
||||||
yesterday = function()
|
|
||||||
return os.date("%Y-%m-%d", os.time() - 86400)
|
|
||||||
end
|
|
||||||
}
|
|
||||||
},
|
|
||||||
-- Set behaviour of following links
|
|
||||||
follow_url_func = function(url)
|
|
||||||
-- vim.fn.jobstart({ "open", url }) -- Mac OS
|
|
||||||
vim.fn.jobstart({ "xdg-open", url }) -- linux
|
|
||||||
-- vim.cmd(':silent exec "!start ' .. url .. '"') -- Windows
|
|
||||||
-- vim.ui.open(url) -- need Neovim 0.10.0+
|
|
||||||
end,
|
|
||||||
-- Set behaviour for opening images
|
|
||||||
follow_img_func = function(img)
|
|
||||||
-- vim.fn.jobstart { "qlmanage", "-p", img } -- Mac OS quick look preview
|
|
||||||
vim.fn.jobstart({ "xdg-open", url }) -- linux
|
|
||||||
-- vim.cmd(':silent exec "!start ' .. url .. '"') -- Windows
|
|
||||||
end,
|
|
||||||
-- Set sorting for creation date
|
|
||||||
sort_by = "created",
|
|
||||||
-- Set attachements new folder
|
|
||||||
attachments = {
|
|
||||||
img_folder = "Media"
|
|
||||||
},
|
|
||||||
-- Disable auto formatter for files
|
|
||||||
disable_frontmatter = true,
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
-- Obsidian-related keybinds
|
|
||||||
vim.keymap.set("n", "<leader>oit", "<cmd>ObsidianTemplate<CR>",
|
|
||||||
{ silent = true, noremap = true, desc = "Obsidian: insert template" })
|
|
||||||
vim.keymap.set("n", "<leader>oo", "<cmd>ObsidianQuickSwitch<CR>",
|
|
||||||
{ silent = true, noremap = true, desc = "Obsidian: open file" })
|
|
||||||
vim.keymap.set("n", "<leader>opi", "<cmd>ObsidianPasteImg<CR>",
|
|
||||||
{ silent = true, noremap = true, desc = "Obsidian: paste image" })
|
|
||||||
vim.keymap.set("n", "<leader>or", "<cmd>ObsidianRename<CR>",
|
|
||||||
{ silent = true, noremap = true, desc = "Obsidian: rename file" })
|
|
||||||
vim.keymap.set("n", "<leader>oc", "<cmd>ObsidianToggleCheckbox<CR>",
|
|
||||||
{ silent = true, noremap = true, desc = "Obsidian: toggle checkbox" })
|
|
||||||
vim.keymap.set("n", "<leader>on", "<cmd>ObsidianNew<CR>", { silent = true, noremap = true, desc = "Obsidian: new file" })
|
|
||||||
vim.keymap.set("n", "<leader>otoc", "<cmd>ObsidianTOC<CR>",
|
|
||||||
{ silent = true, noremap = true, desc = "Obsidian: open TOC" })
|
|
||||||
vim.keymap.set("n", "<leader>ofl", "<cmd>ObsidianFollowLink<CR>",
|
|
||||||
{ silent = true, noremap = true, desc = "Obsidian: follow link" })
|
|
||||||
vim.keymap.set("n", "<leader>olt", "<cmd>ObsidianTags<CR>",
|
|
||||||
{ silent = true, noremap = true, desc = "Obsidian: Get tags list" })
|
|
||||||
vim.keymap.set("n", "<leader>osb", "<cmd>ObsidianBacklinks<CR>",
|
|
||||||
{ silent = true, noremap = true, desc = "Obsidian: Show Backlinks" })
|
|
||||||
vim.keymap.set("n", "<leader>osl", "<cmd>ObsidianLinks<CR>",
|
|
||||||
{ silent = true, noremap = true, desc = "Obsidian: Show Links" })
|
|
||||||
|
|
@ -1,27 +0,0 @@
|
||||||
require("oil").setup {
|
|
||||||
keymaps = {
|
|
||||||
["g?"] = "actions.show_help",
|
|
||||||
["<CR>"] = "actions.select",
|
|
||||||
["<C-s>"] = { "actions.select", opts = { vertical = true }, desc = "Open the entry in a vertical split" },
|
|
||||||
["<C-h>"] = false,
|
|
||||||
["<C-t>"] = { "actions.select", opts = { tab = true }, desc = "Open the entry in new tab" },
|
|
||||||
["<C-p>"] = "actions.preview",
|
|
||||||
["<C-c>"] = "actions.close",
|
|
||||||
["<C-l>"] = false,
|
|
||||||
["-"] = "actions.parent",
|
|
||||||
["_"] = "actions.open_cwd",
|
|
||||||
["`"] = "actions.cd",
|
|
||||||
["~"] = { "actions.cd", opts = { scope = "tab" }, desc = ":tcd to the current oil directory", mode = "n" },
|
|
||||||
["gs"] = "actions.change_sort",
|
|
||||||
["gx"] = "actions.open_external",
|
|
||||||
["g."] = "actions.toggle_hidden",
|
|
||||||
["g\\"] = "actions.toggle_trash",
|
|
||||||
["gr"] = "actions.refresh",
|
|
||||||
},
|
|
||||||
view_options = {
|
|
||||||
show_hidden = true,
|
|
||||||
},
|
|
||||||
-- Open parent directory in current window
|
|
||||||
}
|
|
||||||
|
|
||||||
vim.keymap.set("n", "-", "<CMD>Oil<CR>", { desc = "Open parent directory" })
|
|
||||||
|
|
@ -1,20 +0,0 @@
|
||||||
-- TODO: Need to refactor ways of downloading colorschemes
|
|
||||||
-- Now it is just a hack to download all colorschemes as dependecies
|
|
||||||
return {
|
|
||||||
"folke/tokyonight.nvim",
|
|
||||||
dependencies = {
|
|
||||||
"ellisonleao/gruvbox.nvim",
|
|
||||||
"sainnhe/everforest",
|
|
||||||
"sainnhe/gruvbox-material",
|
|
||||||
"rebelot/kanagawa.nvim",
|
|
||||||
"catppuccin/nvim",
|
|
||||||
"folke/tokyonight.nvim",
|
|
||||||
"luisiacc/gruvbox-baby",
|
|
||||||
},
|
|
||||||
lazy = false,
|
|
||||||
priority = 1000,
|
|
||||||
config = function()
|
|
||||||
require "custom/colorschemes"
|
|
||||||
end,
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
@ -1,20 +0,0 @@
|
||||||
return {
|
|
||||||
"hrsh7th/nvim-cmp",
|
|
||||||
event = "InsertEnter", -- Only load plugin when in INSERT mode
|
|
||||||
dependencies = {
|
|
||||||
"hrsh7th/cmp-buffer", -- source for text in buffer
|
|
||||||
"hrsh7th/cmp-path", -- source for file system paths
|
|
||||||
{
|
|
||||||
"L3MON4D3/LuaSnip",
|
|
||||||
-- follow latest release.
|
|
||||||
version = "v2.*", -- Replace <CurrentMajor> by the latest released major (first number of latest release)
|
|
||||||
},
|
|
||||||
"saadparwaiz1/cmp_luasnip", -- for autocompletion
|
|
||||||
"rafamadriz/friendly-snippets", -- useful snippets
|
|
||||||
"onsails/lspkind.nvim", -- vs-code like pictograms
|
|
||||||
"hrsh7th/cmp-nvim-lsp",
|
|
||||||
},
|
|
||||||
config = function()
|
|
||||||
require "custom/completion"
|
|
||||||
end,
|
|
||||||
}
|
|
||||||
|
|
@ -1,4 +0,0 @@
|
||||||
return {
|
|
||||||
"stevearc/dressing.nvim",
|
|
||||||
event = "VeryLazy"
|
|
||||||
}
|
|
||||||
|
|
@ -1,9 +0,0 @@
|
||||||
return {
|
|
||||||
"ibhagwan/fzf-lua",
|
|
||||||
dependencies = { "nvim-tree/nvim-web-devicons" },
|
|
||||||
opts = {},
|
|
||||||
config = function()
|
|
||||||
require "custom.fzf_lua"
|
|
||||||
end
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
@ -1,35 +0,0 @@
|
||||||
return {
|
|
||||||
{
|
|
||||||
"neovim/nvim-lspconfig",
|
|
||||||
dependencies = {
|
|
||||||
{
|
|
||||||
--`lazydev` configures Lua LSP for your Neovim config, runtime and plugins
|
|
||||||
-- used for completion, annotations and signatures of Neovim apis
|
|
||||||
"folke/lazydev.nvim",
|
|
||||||
ft = "lua",
|
|
||||||
opts = {
|
|
||||||
library = {
|
|
||||||
-- Load luvit types when the `vim.uv` word is found
|
|
||||||
{ path = "luvit-meta/library", words = { "vim%.uv" } },
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{ "Bilal2453/luvit-meta", lazy = true },
|
|
||||||
"williamboman/mason.nvim",
|
|
||||||
"williamboman/mason-lspconfig.nvim",
|
|
||||||
"WhoIsSethDaniel/mason-tool-installer.nvim",
|
|
||||||
|
|
||||||
-- Some enhancements for notifications in bottom-right corner
|
|
||||||
{ "j-hui/fidget.nvim", opts = {} },
|
|
||||||
|
|
||||||
-- Following plugin enables enhancements for diagnostics info
|
|
||||||
-- { "https://git.sr.ht/~whynothugo/lsp_lines.nvim" },
|
|
||||||
|
|
||||||
-- Autoformatting
|
|
||||||
"stevearc/conform.nvim",
|
|
||||||
},
|
|
||||||
config = function()
|
|
||||||
require "custom/lsp"
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
@ -1,7 +0,0 @@
|
||||||
return {
|
|
||||||
"nvim-lualine/lualine.nvim",
|
|
||||||
dependencies = { "nvim-tree/nvim-web-devicons" },
|
|
||||||
config = function()
|
|
||||||
require "custom/lualine"
|
|
||||||
end,
|
|
||||||
}
|
|
||||||
|
|
@ -1,9 +0,0 @@
|
||||||
return {
|
|
||||||
{
|
|
||||||
"L3MON4D3/LuaSnip",
|
|
||||||
-- follow latest release.
|
|
||||||
version = "v2.*", -- Replace <CurrentMajor> by the latest released major (first number of latest release)
|
|
||||||
-- install jsregexp (optional!).
|
|
||||||
build = "make install_jsregexp"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,11 +0,0 @@
|
||||||
return {
|
|
||||||
"iamcco/markdown-preview.nvim",
|
|
||||||
cmd = { "MarkdownPreviewToggle", "MarkdownPreview", "MarkdownPreviewStop" },
|
|
||||||
build = "cd app && npm install && git restore .",
|
|
||||||
-- or if you use yarn: (I have not checked this, I use npm)
|
|
||||||
-- build = "cd app && yarn install && git restore .",
|
|
||||||
init = function()
|
|
||||||
vim.g.mkdp_filetypes = { "markdown" }
|
|
||||||
end,
|
|
||||||
ft = { "markdown" },
|
|
||||||
}
|
|
||||||
|
|
@ -1,12 +0,0 @@
|
||||||
-- Plugin for generating annotations
|
|
||||||
return {
|
|
||||||
{
|
|
||||||
"danymat/neogen",
|
|
||||||
config = true,
|
|
||||||
-- Uncomment next line if you want to follow only stable versions
|
|
||||||
version = "*",
|
|
||||||
config = function()
|
|
||||||
require "custom/neogen"
|
|
||||||
end,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,16 +0,0 @@
|
||||||
if vim.g.obsidian_enabled then
|
|
||||||
return {
|
|
||||||
"epwalsh/obsidian.nvim",
|
|
||||||
version = "*",
|
|
||||||
lazy = true,
|
|
||||||
ft = "markdown",
|
|
||||||
dependencies = {
|
|
||||||
"nvim-lua/plenary.nvim",
|
|
||||||
},
|
|
||||||
config = function()
|
|
||||||
require "custom.obsidian"
|
|
||||||
end
|
|
||||||
}
|
|
||||||
else
|
|
||||||
return {}
|
|
||||||
end
|
|
||||||
|
|
@ -1,8 +0,0 @@
|
||||||
return {
|
|
||||||
"stevearc/oil.nvim",
|
|
||||||
dependencies = { { "echasnovski/mini.icons", opts = {} } },
|
|
||||||
config = function()
|
|
||||||
require "custom/oil"
|
|
||||||
end,
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
@ -1,13 +0,0 @@
|
||||||
return {
|
|
||||||
"nvim-telescope/telescope.nvim",
|
|
||||||
enabled = false,
|
|
||||||
dependencies = {
|
|
||||||
{ "nvim-telescope/telescope-fzf-native.nvim", build = "make" },
|
|
||||||
"nvim-lua/plenary.nvim",
|
|
||||||
"nvim-tree/nvim-web-devicons",
|
|
||||||
"folke/todo-comments.nvim",
|
|
||||||
},
|
|
||||||
config = function()
|
|
||||||
require "custom.telescope"
|
|
||||||
end
|
|
||||||
}
|
|
||||||
|
|
@ -1,19 +0,0 @@
|
||||||
return {
|
|
||||||
"christoomey/vim-tmux-navigator",
|
|
||||||
cmd = {
|
|
||||||
"TmuxNavigateLeft",
|
|
||||||
"TmuxNavigateDown",
|
|
||||||
"TmuxNavigateUp",
|
|
||||||
"TmuxNavigateRight",
|
|
||||||
"TmuxNavigatePrevious",
|
|
||||||
"TmuxNavigatorProcessList",
|
|
||||||
},
|
|
||||||
keys = {
|
|
||||||
{ "<c-h>", "<cmd><C-U>TmuxNavigateLeft<cr>" },
|
|
||||||
{ "<c-j>", "<cmd><C-U>TmuxNavigateDown<cr>" },
|
|
||||||
{ "<c-k>", "<cmd><C-U>TmuxNavigateUp<cr>" },
|
|
||||||
{ "<c-l>", "<cmd><C-U>TmuxNavigateRight<cr>" },
|
|
||||||
{ "<c-\\>", "<cmd><C-U>TmuxNavigatePrevious<cr>" },
|
|
||||||
},
|
|
||||||
}
|
|
||||||
-- return {}
|
|
||||||
|
|
@ -1,8 +0,0 @@
|
||||||
return {
|
|
||||||
"folke/todo-comments.nvim",
|
|
||||||
event = { "BufReadPre", "BufNewFile" },
|
|
||||||
dependencies = { "nvim-lua/plenary.nvim" },
|
|
||||||
config = function()
|
|
||||||
require "custom/todo"
|
|
||||||
end,
|
|
||||||
}
|
|
||||||
|
|
@ -1,14 +0,0 @@
|
||||||
return {
|
|
||||||
"nvim-treesitter/nvim-treesitter",
|
|
||||||
-- open this plugin on two events:
|
|
||||||
-- BufReadPre - open existing file
|
|
||||||
-- BufNewFile - open new file
|
|
||||||
event = { "BufReadPre", "BufNewFile" },
|
|
||||||
build = ":TSUpdate", -- Run whenever this plugin is installed or updated
|
|
||||||
dependencies = {
|
|
||||||
"windwp/nvim-ts-autotag", -- Auto-closing functionality within treesitter
|
|
||||||
},
|
|
||||||
config = function()
|
|
||||||
require "custom/treesitter"
|
|
||||||
end,
|
|
||||||
}
|
|
||||||
|
|
@ -1,10 +0,0 @@
|
||||||
return {
|
|
||||||
{
|
|
||||||
"folke/trouble.nvim",
|
|
||||||
opts = {}, -- for default options, refer to the configuration section for custom setup.
|
|
||||||
cmd = "Trouble",
|
|
||||||
config = function()
|
|
||||||
require "custom/trouble"
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
@ -1,20 +0,0 @@
|
||||||
return {
|
|
||||||
"folke/which-key.nvim",
|
|
||||||
-- Telling nvim that it can load this plugin later, and that it is not
|
|
||||||
-- that important for initial UI
|
|
||||||
event = "VeryLazy",
|
|
||||||
-- Function that will run while neovim startup instead of when plugin is actualy loads
|
|
||||||
init = function()
|
|
||||||
-- How long which-key will wait until activation
|
|
||||||
vim.o.timeout = true
|
|
||||||
vim.o.timeoutlen = 500
|
|
||||||
end,
|
|
||||||
-- Options that will pass to setup function, but we are leaving it empty to use
|
|
||||||
-- default configuration
|
|
||||||
opts = {
|
|
||||||
-- your configuration comes here
|
|
||||||
-- or leave it empty to use the default settings
|
|
||||||
-- refer to the configuration section below
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
@ -1,133 +0,0 @@
|
||||||
require("telescope").setup {
|
|
||||||
defaults = {
|
|
||||||
vimgrep_arguments = {
|
|
||||||
"rg",
|
|
||||||
"--color=never",
|
|
||||||
"--no-heading",
|
|
||||||
"--with-filename",
|
|
||||||
"--line-number",
|
|
||||||
"--column",
|
|
||||||
"--smart-case",
|
|
||||||
},
|
|
||||||
path_display = { shorten = 4 },
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
-- Load fzf extension to imporve performance
|
|
||||||
pcall(require("telescope").load_extension, "fzf")
|
|
||||||
|
|
||||||
-- Glob pattern searcher
|
|
||||||
local function live_grep_with_glob()
|
|
||||||
vim.ui.input({
|
|
||||||
prompt = "Glob pattern: ",
|
|
||||||
default = "/home/user/Work/root/ivideon/audio_storage/", -- Optional default value
|
|
||||||
}, function(input)
|
|
||||||
if input then
|
|
||||||
require('telescope.builtin').live_grep({
|
|
||||||
-- glob_pattern = input,
|
|
||||||
search_dirs = { input }
|
|
||||||
})
|
|
||||||
end
|
|
||||||
end)
|
|
||||||
end
|
|
||||||
|
|
||||||
local function live_grep_in_current_dir()
|
|
||||||
-- Get currentp path
|
|
||||||
local search_dirs = { vim.fn.expand('%:p') }
|
|
||||||
-- Extract path from table
|
|
||||||
local current_dir = search_dirs[1]
|
|
||||||
-- Get path, cutting last entry (current file)
|
|
||||||
local result = current_dir:match(".*/")
|
|
||||||
vim.ui.input({
|
|
||||||
prompt = "Glob pattern: ",
|
|
||||||
default = result, -- Optional default value
|
|
||||||
}, function(input)
|
|
||||||
if input then
|
|
||||||
require('telescope.builtin').live_grep({
|
|
||||||
search_dirs = { input }
|
|
||||||
})
|
|
||||||
end
|
|
||||||
end)
|
|
||||||
end
|
|
||||||
|
|
||||||
-- Function for copying current file path
|
|
||||||
local function copy_current_file_path()
|
|
||||||
local filepath = vim.fn.expand('%:p')
|
|
||||||
vim.fn.setreg("+", filepath)
|
|
||||||
print("Copied: " .. filepath)
|
|
||||||
end
|
|
||||||
|
|
||||||
-- Function for gettings snapshot of current cursor position
|
|
||||||
local function copy_file_path_and_position()
|
|
||||||
local filepath = vim.fn.expand('%:p')
|
|
||||||
local cursor_pos = vim.api.nvim_win_get_cursor(0)
|
|
||||||
local line = cursor_pos[1]
|
|
||||||
local col = cursor_pos[2]
|
|
||||||
|
|
||||||
local output = string.format("%s:%d:%d", filepath, line, col)
|
|
||||||
|
|
||||||
vim.fn.setreg("+", output)
|
|
||||||
|
|
||||||
print("Copied: " .. output)
|
|
||||||
end
|
|
||||||
|
|
||||||
-- Function for getting filename and copy it to + buffer
|
|
||||||
local function copy_filename()
|
|
||||||
local filepath = vim.fn.expand('%:t')
|
|
||||||
local output = string.format("%s", filepath)
|
|
||||||
vim.fn.setreg("+", output)
|
|
||||||
print("Copied: " .. output)
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
local builtin = require("telescope.builtin")
|
|
||||||
local keymap = vim.keymap
|
|
||||||
|
|
||||||
-- Live grep in quickfix list
|
|
||||||
local function live_grep_in_quick_fix_list_files()
|
|
||||||
builtin.live_grep({
|
|
||||||
search_dirs = vim.fn.getqflist({ items = 0 }).items
|
|
||||||
and vim.tbl_map(function(item)
|
|
||||||
return vim.fn.bufname(item.bufnr)
|
|
||||||
end, vim.fn.getqflist())
|
|
||||||
or nil
|
|
||||||
})
|
|
||||||
end
|
|
||||||
|
|
||||||
-- Find files with hidden included
|
|
||||||
local function find_files_with_hidden_included()
|
|
||||||
require('telescope.builtin').find_files({
|
|
||||||
hidden = true,
|
|
||||||
no_ignore = true,
|
|
||||||
})
|
|
||||||
end
|
|
||||||
|
|
||||||
-- Create a Neovim command
|
|
||||||
vim.api.nvim_create_user_command('TelescopeGrepGlob', live_grep_with_glob, {})
|
|
||||||
|
|
||||||
keymap.set("n", "<leader>ff", builtin.find_files, { desc = "FZF: find files in cwd" })
|
|
||||||
keymap.set("n", "<leader>fml", builtin.marks, { desc = "FZF: find marks list" })
|
|
||||||
keymap.set("n", "<leader>fmp", builtin.man_pages, { desc = "FZF: find available man pages" })
|
|
||||||
keymap.set("n", "<leader>fg", builtin.live_grep, { desc = "FZF: find string in cwd" })
|
|
||||||
keymap.set("n", "<leader>fs", builtin.grep_string, { desc = "FZF: find string under cursor" })
|
|
||||||
keymap.set("n", "<leader>fb", builtin.buffers, { desc = "FZF: display opened buffers" })
|
|
||||||
keymap.set("n", "<leader>fh", builtin.help_tags, { desc = "FZF: display help tags" })
|
|
||||||
keymap.set("n", "<leader>ft", "<cmd>TodoTelescope<cr>", { desc = "FZF: display TODO comments" })
|
|
||||||
keymap.set("n", "<leader>fds", builtin.lsp_document_symbols, { desc = "Grep: Document symbols" })
|
|
||||||
keymap.set('n', '<leader>fp', live_grep_with_glob, { desc = 'Live grep with glob pattern' })
|
|
||||||
keymap.set('n', '<leader>fcp', live_grep_in_current_dir, { desc = 'Live grep in current directory' })
|
|
||||||
keymap.set('n', '<leader>ccp', copy_file_path_and_position, { desc = "Copy cursor position" })
|
|
||||||
keymap.set('n', '<leader>ccf', copy_filename, { desc = "Copy only filename" })
|
|
||||||
keymap.set('n', '<leader>ccd', copy_current_file_path, { desc = 'Live grep in current directory' })
|
|
||||||
keymap.set('n', '<leader>fq', live_grep_in_quick_fix_list_files, { desc = "Live grep in quickfix files" })
|
|
||||||
keymap.set('n', '<leader>fa', find_files_with_hidden_included, { desc = "Find all files (hidden + no ignore)" })
|
|
||||||
|
|
||||||
-- Live grep in current file
|
|
||||||
vim.keymap.set('n', '<leader>fcf', function()
|
|
||||||
require('telescope.builtin').live_grep({
|
|
||||||
search_dirs = { vim.fn.expand('%:p') }, -- Current file's full path
|
|
||||||
-- disable_coordinates = true, -- Hide line/column numbers
|
|
||||||
-- fname_width = 0, -- Hide filename column
|
|
||||||
path_display = { 'hidden' },
|
|
||||||
})
|
|
||||||
end, { desc = 'Live grep in current file' })
|
|
||||||
|
|
@ -1,12 +0,0 @@
|
||||||
local todo_comments = require("todo-comments")
|
|
||||||
local keymap = vim.keymap
|
|
||||||
|
|
||||||
keymap.set("n", "]t", function()
|
|
||||||
todo_comments.jump_next()
|
|
||||||
end, { desc = "Next todo comment" })
|
|
||||||
|
|
||||||
keymap.set("n", "[t", function()
|
|
||||||
todo_comments.jump_prev()
|
|
||||||
end, { desc = "Previous todo comment" })
|
|
||||||
|
|
||||||
todo_comments.setup(opts)
|
|
||||||
|
|
@ -1,16 +0,0 @@
|
||||||
require 'nvim-treesitter.configs'.setup {
|
|
||||||
ensure_installed = {
|
|
||||||
"python",
|
|
||||||
"lua",
|
|
||||||
"vim",
|
|
||||||
"vimdoc",
|
|
||||||
"query",
|
|
||||||
"javascript",
|
|
||||||
"html",
|
|
||||||
"go",
|
|
||||||
"markdown",
|
|
||||||
},
|
|
||||||
sync_install = false,
|
|
||||||
highlight = { enable = true },
|
|
||||||
indent = { enable = true },
|
|
||||||
}
|
|
||||||
|
|
@ -1,38 +0,0 @@
|
||||||
local trouble = require("trouble")
|
|
||||||
|
|
||||||
-- Setup Trouble
|
|
||||||
trouble.setup()
|
|
||||||
|
|
||||||
-- Keybindings
|
|
||||||
vim.keymap.set("n", "<leader>xx", "<cmd>Trouble diagnostics toggle<cr>", { desc = "Diagnostics (Trouble)" })
|
|
||||||
vim.keymap.set("n", "<leader>xX", "<cmd>Trouble diagnostics toggle filter.buf=0<cr>",
|
|
||||||
{ desc = "Buffer Diagnostics (Trouble)" })
|
|
||||||
vim.keymap.set("n", "<leader>cs", "<cmd>Trouble symbols toggle focus=false<cr>", { desc = "Symbols (Trouble)" })
|
|
||||||
vim.keymap.set("n", "<leader>cl", "<cmd>Trouble lsp toggle focus=false win.position=right<cr>",
|
|
||||||
{ desc = "LSP Definitions / references / ... (Trouble)" })
|
|
||||||
vim.keymap.set("n", "<leader>xL", "<cmd>Trouble loclist toggle<cr>", { desc = "Location List (Trouble)" })
|
|
||||||
vim.keymap.set("n", "<leader>xQ", "<cmd>Trouble qflist toggle<cr>", { desc = "Quickfix List (Trouble)" })
|
|
||||||
|
|
||||||
-- Telescope integration
|
|
||||||
-- local actions = require("telescope.actions")
|
|
||||||
-- local add_to_trouble = require("trouble.sources.telescope").add
|
|
||||||
local ok, telescope = pcall(require, "telescope")
|
|
||||||
if ok then
|
|
||||||
local open_with_trouble = require("trouble.sources.telescope").open
|
|
||||||
telescope.setup({
|
|
||||||
defaults = {
|
|
||||||
mappings = {
|
|
||||||
i = { ["<c-t>"] = open_with_trouble },
|
|
||||||
n = { ["<c-t>"] = open_with_trouble },
|
|
||||||
},
|
|
||||||
},
|
|
||||||
})
|
|
||||||
end
|
|
||||||
|
|
||||||
-- For fzf-lua settings
|
|
||||||
local ok_fzf, fzf_lua_config = pcall(require, "fzf-lua.config")
|
|
||||||
if ok_fzf then
|
|
||||||
local actions = require("trouble.sources.fzf").actions
|
|
||||||
fzf_lua_config.defaults.actions.files["ctrl-t"] = actions.open
|
|
||||||
end
|
|
||||||
|
|
||||||
1
main.py
1
main.py
|
|
@ -1 +0,0 @@
|
||||||
|
|
||||||
1
neovim
Submodule
1
neovim
Submodule
|
|
@ -0,0 +1 @@
|
||||||
|
Subproject commit fc7e5cf6c93fef08effc183087a2c8cc9bf0d75a
|
||||||
117
nvim-pack-lock.json
Normal file
117
nvim-pack-lock.json
Normal file
|
|
@ -0,0 +1,117 @@
|
||||||
|
{
|
||||||
|
"plugins": {
|
||||||
|
"LuaSnip": {
|
||||||
|
"rev": "642b0c595e11608b4c18219e93b88d7637af27bc",
|
||||||
|
"src": "https://github.com/L3MON4D3/LuaSnip"
|
||||||
|
},
|
||||||
|
"blink.cmp": {
|
||||||
|
"rev": "b4b7cbb52bab6c716b317433fa9348a070cccee5",
|
||||||
|
"src": "https://github.com/Saghen/blink.cmp",
|
||||||
|
"version": "'v1.*'"
|
||||||
|
},
|
||||||
|
"cmp-buffer": {
|
||||||
|
"rev": "b74fab3656eea9de20a9b8116afa3cfc4ec09657",
|
||||||
|
"src": "https://github.com/hrsh7th/cmp-buffer"
|
||||||
|
},
|
||||||
|
"cmp-nvim-lsp": {
|
||||||
|
"rev": "cbc7b02bb99fae35cb42f514762b89b5126651ef",
|
||||||
|
"src": "https://github.com/hrsh7th/cmp-nvim-lsp"
|
||||||
|
},
|
||||||
|
"cmp-path": {
|
||||||
|
"rev": "c642487086dbd9a93160e1679a1327be111cbc25",
|
||||||
|
"src": "https://github.com/hrsh7th/cmp-path"
|
||||||
|
},
|
||||||
|
"cmp_luasnip": {
|
||||||
|
"rev": "98d9cb5c2c38532bd9bdb481067b20fea8f32e90",
|
||||||
|
"src": "https://github.com/saadparwaiz1/cmp_luasnip"
|
||||||
|
},
|
||||||
|
"everforest": {
|
||||||
|
"rev": "b03a03148c8b34c24c96960b93da9c8883d11f54",
|
||||||
|
"src": "https://github.com/sainnhe/everforest"
|
||||||
|
},
|
||||||
|
"friendly-snippets": {
|
||||||
|
"rev": "6cd7280adead7f586db6fccbd15d2cac7e2188b9",
|
||||||
|
"src": "https://github.com/rafamadriz/friendly-snippets"
|
||||||
|
},
|
||||||
|
"fzf-lua": {
|
||||||
|
"rev": "8f5a5ae708451adc3e2ac4d965ac3452dc3ce5a6",
|
||||||
|
"src": "https://github.com/ibhagwan/fzf-lua"
|
||||||
|
},
|
||||||
|
"gruvbox-baby": {
|
||||||
|
"rev": "bd52e62d8134647090108189e69c8b3cd18bdbbf",
|
||||||
|
"src": "https://github.com/luisiacc/gruvbox-baby"
|
||||||
|
},
|
||||||
|
"gruvbox-material": {
|
||||||
|
"rev": "afb275d8e6dc379762d122bd24e1773fc057abf3",
|
||||||
|
"src": "https://github.com/sainnhe/gruvbox-material"
|
||||||
|
},
|
||||||
|
"gruvbox.nvim": {
|
||||||
|
"rev": "334d5fd49fc8033f26408425366c66c6390c57bb",
|
||||||
|
"src": "https://github.com/ellisonleao/gruvbox.nvim"
|
||||||
|
},
|
||||||
|
"kanagawa.nvim": {
|
||||||
|
"rev": "aef7f5cec0a40dbe7f3304214850c472e2264b10",
|
||||||
|
"src": "https://github.com/rebelot/kanagawa.nvim"
|
||||||
|
},
|
||||||
|
"lspkind.nvim": {
|
||||||
|
"rev": "c7274c48137396526b59d86232eabcdc7fed8a32",
|
||||||
|
"src": "https://github.com/onsails/lspkind.nvim"
|
||||||
|
},
|
||||||
|
"lualine.nvim": {
|
||||||
|
"rev": "8811f3f3f4dc09d740c67e9ce399e7a541e2e5b2",
|
||||||
|
"src": "https://github.com/nvim-lualine/lualine.nvim"
|
||||||
|
},
|
||||||
|
"mason.nvim": {
|
||||||
|
"rev": "44d1e90e1f66e077268191e3ee9d2ac97cc18e65",
|
||||||
|
"src": "https://github.com/mason-org/mason.nvim"
|
||||||
|
},
|
||||||
|
"mini.completion": {
|
||||||
|
"rev": "09884c629cac1a8c999ffb6c57dc8424450aea5e",
|
||||||
|
"src": "https://github.com/nvim-mini/mini.completion"
|
||||||
|
},
|
||||||
|
"neogen": {
|
||||||
|
"rev": "23e7e9f883d01289ebd90e98025acc860ea26366",
|
||||||
|
"src": "https://github.com/danymat/neogen"
|
||||||
|
},
|
||||||
|
"nvim": {
|
||||||
|
"rev": "16408d203973da7e43fab87c6f9d3bf7fa98fa8b",
|
||||||
|
"src": "https://github.com/catppuccin/nvim"
|
||||||
|
},
|
||||||
|
"nvim-cmp": {
|
||||||
|
"rev": "a1d504892f2bc56c2e79b65c6faded2fd21f3eca",
|
||||||
|
"src": "https://github.com/hrsh7th/nvim-cmp"
|
||||||
|
},
|
||||||
|
"nvim-lspconfig": {
|
||||||
|
"rev": "9ccd58a7949091c0cc2777d4e92a45a209c808c1",
|
||||||
|
"src": "https://github.com/neovim/nvim-lspconfig"
|
||||||
|
},
|
||||||
|
"nvim-treesitter": {
|
||||||
|
"rev": "4916d6592ede8c07973490d9322f187e07dfefac",
|
||||||
|
"src": "https://github.com/nvim-treesitter/nvim-treesitter"
|
||||||
|
},
|
||||||
|
"oil.nvim": {
|
||||||
|
"rev": "0fcc83805ad11cf714a949c98c605ed717e0b83e",
|
||||||
|
"src": "https://github.com/stevearc/oil.nvim"
|
||||||
|
},
|
||||||
|
"snacks.nvim": {
|
||||||
|
"rev": "ad9ede6a9cddf16cedbd31b8932d6dcdee9b716e",
|
||||||
|
"src": "https://github.com/folke/snacks.nvim"
|
||||||
|
},
|
||||||
|
"todo-comments.nvim": {
|
||||||
|
"rev": "31e3c38ce9b29781e4422fc0322eb0a21f4e8668",
|
||||||
|
"src": "https://github.com/folke/todo-comments.nvim"
|
||||||
|
},
|
||||||
|
"tokyonight.nvim": {
|
||||||
|
"rev": "cdc07ac78467a233fd62c493de29a17e0cf2b2b6",
|
||||||
|
"src": "https://github.com/folke/tokyonight.nvim"
|
||||||
|
},
|
||||||
|
"vim-tmux-navigator": {
|
||||||
|
"rev": "e41c431a0c7b7388ae7ba341f01a0d217eb3a432",
|
||||||
|
"src": "https://github.com/christoomey/vim-tmux-navigator"
|
||||||
|
},
|
||||||
|
"which-key.nvim": {
|
||||||
|
"rev": "3aab2147e74890957785941f0c1ad87d0a44c15a",
|
||||||
|
"src": "https://github.com/folke/which-key.nvim"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in a new issue