formatting
This commit is contained in:
parent
52c0368e1a
commit
2628a09534
38 changed files with 1553 additions and 1553 deletions
|
@ -1,78 +1,78 @@
|
||||||
local autocmds = {
|
local autocmds = {
|
||||||
{ -- Handles the automatic line numeration changes
|
{ -- Handles the automatic line numeration changes
|
||||||
{ "BufEnter", "FocusGained", "InsertLeave", "WinEnter" },
|
{ "BufEnter", "FocusGained", "InsertLeave", "WinEnter" },
|
||||||
{
|
{
|
||||||
pattern = "*",
|
pattern = "*",
|
||||||
command = 'if &nu && mode() != "i" | set rnu | endif',
|
command = 'if &nu && mode() != "i" | set rnu | endif',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{ -- Handles the automatic line numeration changes
|
{ -- Handles the automatic line numeration changes
|
||||||
{ "BufLeave", "FocusLost", "InsertEnter", "WinLeave" },
|
{ "BufLeave", "FocusLost", "InsertEnter", "WinLeave" },
|
||||||
{
|
{
|
||||||
pattern = "*",
|
pattern = "*",
|
||||||
command = "if &nu | set nornu | endif",
|
command = "if &nu | set nornu | endif",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{ -- Use 'q' to quit from common plugins
|
{ -- Use 'q' to quit from common plugins
|
||||||
"FileType",
|
"FileType",
|
||||||
{
|
{
|
||||||
pattern = { "help", "man" },
|
pattern = { "help", "man" },
|
||||||
callback = function()
|
callback = function()
|
||||||
vim.cmd([[
|
vim.cmd([[
|
||||||
nnoremap <silent> <buffer> q :close<CR>
|
nnoremap <silent> <buffer> q :close<CR>
|
||||||
set nobuflisted
|
set nobuflisted
|
||||||
]])
|
]])
|
||||||
end,
|
end,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"Filetype",
|
"Filetype",
|
||||||
{
|
{
|
||||||
pattern = { "gitcommit", "markdown" },
|
pattern = { "gitcommit", "markdown" },
|
||||||
callback = function()
|
callback = function()
|
||||||
vim.opt_local.spell = true
|
vim.opt_local.spell = true
|
||||||
end,
|
end,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{ -- Fix auto comment
|
{ -- Fix auto comment
|
||||||
"BufWinEnter",
|
"BufWinEnter",
|
||||||
{
|
{
|
||||||
command = "set formatoptions-=cro",
|
command = "set formatoptions-=cro",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{ -- Highlight yanked text
|
{ -- Highlight yanked text
|
||||||
"TextYankPost",
|
"TextYankPost",
|
||||||
{
|
{
|
||||||
callback = function()
|
callback = function()
|
||||||
vim.highlight.on_yank({ higroup = "Visual", timeout = 200 })
|
vim.highlight.on_yank({ higroup = "Visual", timeout = 200 })
|
||||||
end,
|
end,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{ -- Trigger shortcuts script
|
{ -- Trigger shortcuts script
|
||||||
"BufWritePost",
|
"BufWritePost",
|
||||||
{
|
{
|
||||||
pattern = { "directories", "files" },
|
pattern = { "directories", "files" },
|
||||||
command = "!shortcuts"
|
command = "!shortcuts"
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{ -- Trigger xrdb
|
{ -- Trigger xrdb
|
||||||
"BufWritePost",
|
"BufWritePost",
|
||||||
{
|
{
|
||||||
pattern = { "xresources" },
|
pattern = { "xresources" },
|
||||||
command = "!xrdb %"
|
command = "!xrdb %"
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
vim.api.nvim_create_augroup("user_config", { clear = true })
|
vim.api.nvim_create_augroup("user_config", { clear = true })
|
||||||
for _, entry in ipairs(autocmds) do
|
for _, entry in ipairs(autocmds) do
|
||||||
local event = entry[1]
|
local event = entry[1]
|
||||||
local opts = entry[2]
|
local opts = entry[2]
|
||||||
if type(opts.group) == "string" and opts.group ~= "" then
|
if type(opts.group) == "string" and opts.group ~= "" then
|
||||||
local exists, _ = pcall(vim.api.nvim_get_autocmds, { group = opts.group })
|
local exists, _ = pcall(vim.api.nvim_get_autocmds, { group = opts.group })
|
||||||
if not exists then
|
if not exists then
|
||||||
vim.api.nvim_create_augroup(opts.group, {})
|
vim.api.nvim_create_augroup(opts.group, {})
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
vim.api.nvim_create_autocmd(event, opts)
|
vim.api.nvim_create_autocmd(event, opts)
|
||||||
end
|
end
|
||||||
|
|
|
@ -2,26 +2,26 @@ local ansible_test = function(path, bufnr)
|
||||||
if string.find(path, "templates") or string.find(path, "files") then
|
if string.find(path, "templates") or string.find(path, "files") then
|
||||||
return "yaml"
|
return "yaml"
|
||||||
end
|
end
|
||||||
local find = { "tasks", "roles", "handlers", "group_vars", "host_vars", "ansible.cfg", ".ansible-lint" }
|
local find = { "tasks", "roles", "handlers", "group_vars", "host_vars", "ansible.cfg", ".ansible-lint" }
|
||||||
local opts = { stop = os.getenv("HOME"), upward = true, limit = 1, path = path }
|
local opts = { stop = os.getenv("HOME"), upward = true, limit = 1, path = path }
|
||||||
if next(vim.fs.find(find, opts)) ~= nil then
|
if next(vim.fs.find(find, opts)) ~= nil then
|
||||||
return "yaml.ansible"
|
return "yaml.ansible"
|
||||||
else
|
else
|
||||||
return "yaml"
|
return "yaml"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
local filetypes = {
|
local filetypes = {
|
||||||
extension = {
|
extension = {
|
||||||
yml = ansible_test,
|
yml = ansible_test,
|
||||||
yaml = ansible_test,
|
yaml = ansible_test,
|
||||||
},
|
},
|
||||||
filename = {
|
filename = {
|
||||||
["Xresources"] = "xdefaults",
|
["Xresources"] = "xdefaults",
|
||||||
["Xdefaults"] = "xdefaults",
|
["Xdefaults"] = "xdefaults",
|
||||||
["xresources"] = "xdefaults",
|
["xresources"] = "xdefaults",
|
||||||
["xdefaults"] = "xdefaults",
|
["xdefaults"] = "xdefaults",
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
vim.filetype.add(filetypes)
|
vim.filetype.add(filetypes)
|
||||||
|
|
|
@ -1,81 +1,81 @@
|
||||||
return {
|
return {
|
||||||
Diagnostic = "",
|
Diagnostic = "",
|
||||||
Error = "",
|
Error = "",
|
||||||
Hint = "",
|
Hint = "",
|
||||||
Info = "",
|
Info = "",
|
||||||
Warn = "",
|
Warn = "",
|
||||||
Bug = "",
|
Bug = "",
|
||||||
True = "",
|
True = "",
|
||||||
Pending = "",
|
Pending = "",
|
||||||
False = "",
|
False = "",
|
||||||
Close = "",
|
Close = "",
|
||||||
Selected = "",
|
Selected = "",
|
||||||
Console = "",
|
Console = "",
|
||||||
Gear = "",
|
Gear = "",
|
||||||
Event = "",
|
Event = "",
|
||||||
File = "",
|
File = "",
|
||||||
NewFile = "",
|
NewFile = "",
|
||||||
FileTree = "",
|
FileTree = "",
|
||||||
Import = "",
|
Import = "",
|
||||||
Keyboard = "",
|
Keyboard = "",
|
||||||
Sleep = "",
|
Sleep = "",
|
||||||
Package = "",
|
Package = "",
|
||||||
Runtime = "",
|
Runtime = "",
|
||||||
Source = "",
|
Source = "",
|
||||||
Code = "",
|
Code = "",
|
||||||
Start = "",
|
Start = "",
|
||||||
Task = "",
|
Task = "",
|
||||||
Buffer = "",
|
Buffer = "",
|
||||||
Search = "",
|
Search = "",
|
||||||
Speed = "",
|
Speed = "",
|
||||||
Test = "",
|
Test = "",
|
||||||
Flame = "",
|
Flame = "",
|
||||||
Leave = "",
|
Leave = "",
|
||||||
Git = "",
|
Git = "",
|
||||||
Loaded = "",
|
Loaded = "",
|
||||||
Unloaded = "",
|
Unloaded = "",
|
||||||
Added = "",
|
Added = "",
|
||||||
Modified = "",
|
Modified = "",
|
||||||
Removed = "",
|
Removed = "",
|
||||||
Untracked = "",
|
Untracked = "",
|
||||||
ChangeDelete = "",
|
ChangeDelete = "",
|
||||||
Truncate = "",
|
Truncate = "",
|
||||||
Note = "",
|
Note = "",
|
||||||
lspkind = {
|
lspkind = {
|
||||||
Array = "",
|
Array = "",
|
||||||
Boolean = "⊨",
|
Boolean = "⊨",
|
||||||
Class = "",
|
Class = "",
|
||||||
Color = "",
|
Color = "",
|
||||||
Constant = "",
|
Constant = "",
|
||||||
Constructor = "",
|
Constructor = "",
|
||||||
Enum = "",
|
Enum = "",
|
||||||
EnumMember = "",
|
EnumMember = "",
|
||||||
Event = "",
|
Event = "",
|
||||||
Field = "",
|
Field = "",
|
||||||
File = "",
|
File = "",
|
||||||
Folder = "",
|
Folder = "",
|
||||||
Function = "",
|
Function = "",
|
||||||
Interface = "",
|
Interface = "",
|
||||||
Key = "",
|
Key = "",
|
||||||
Keyword = "",
|
Keyword = "",
|
||||||
Method = "",
|
Method = "",
|
||||||
Module = "",
|
Module = "",
|
||||||
Namespace = "",
|
Namespace = "",
|
||||||
Null = "",
|
Null = "",
|
||||||
Number = "",
|
Number = "",
|
||||||
Object = "",
|
Object = "",
|
||||||
Operator = "",
|
Operator = "",
|
||||||
Package = "",
|
Package = "",
|
||||||
Property = "",
|
Property = "",
|
||||||
Reference = "",
|
Reference = "",
|
||||||
Snippet = "",
|
Snippet = "",
|
||||||
String = "",
|
String = "",
|
||||||
Struct = "",
|
Struct = "",
|
||||||
Text = "",
|
Text = "",
|
||||||
TypeParameter = "",
|
TypeParameter = "",
|
||||||
Unit = "",
|
Unit = "",
|
||||||
Value = "",
|
Value = "",
|
||||||
Variable = "",
|
Variable = "",
|
||||||
},
|
},
|
||||||
-- progress = { "", "", "", "", "", "", "", "", "", "", "", "", "" },
|
-- progress = { "", "", "", "", "", "", "", "", "", "", "", "", "" },
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,7 +25,6 @@ M.maps = function()
|
||||||
maps.n["<Leader>w"] = { "<Cmd>w<CR>", desc = "Write buffer" }
|
maps.n["<Leader>w"] = { "<Cmd>w<CR>", desc = "Write buffer" }
|
||||||
maps.n["<Leader>c"] = { "<Cmd>conf q<CR>", desc = "Quit" }
|
maps.n["<Leader>c"] = { "<Cmd>conf q<CR>", desc = "Quit" }
|
||||||
maps.n["<Leader>C"] = { "<Cmd>conf qa<CR>", desc = "Quit all" }
|
maps.n["<Leader>C"] = { "<Cmd>conf qa<CR>", desc = "Quit all" }
|
||||||
maps.n["<Leader>n"] = { "<Cmd>ene<CR>", desc = "New buffer" }
|
|
||||||
maps.n["<Leader>h"] = { "<Cmd>noh<CR>", desc = "Clear highlight" }
|
maps.n["<Leader>h"] = { "<Cmd>noh<CR>", desc = "Clear highlight" }
|
||||||
maps.n["<C-s>"] = { "<Cmd>w!<cr>", desc = "Force write buffer" }
|
maps.n["<C-s>"] = { "<Cmd>w!<cr>", desc = "Force write buffer" }
|
||||||
maps.n["<C-q>"] = { "<Cmd>qa!<cr>", desc = "Force quit all" }
|
maps.n["<C-q>"] = { "<Cmd>qa!<cr>", desc = "Force quit all" }
|
||||||
|
@ -38,6 +37,7 @@ M.maps = function()
|
||||||
maps.n["<C-f>"] = { "<Nop>" }
|
maps.n["<C-f>"] = { "<Nop>" }
|
||||||
maps.i["<C-h>"] = { "<C-W>" }
|
maps.i["<C-h>"] = { "<C-W>" }
|
||||||
maps.v["p"] = { "pgvy" }
|
maps.v["p"] = { "pgvy" }
|
||||||
|
maps.n["<Leader>bn"] = { "<Cmd>ene<CR>", desc = "New buffer" }
|
||||||
|
|
||||||
-- Utility --
|
-- Utility --
|
||||||
if f.is_available("nvim-colorizer.lua") then
|
if f.is_available("nvim-colorizer.lua") then
|
||||||
|
@ -496,7 +496,7 @@ M.maps = function()
|
||||||
function()
|
function()
|
||||||
local worktree = f.file_worktree()
|
local worktree = f.file_worktree()
|
||||||
local flags = worktree
|
local flags = worktree
|
||||||
and (" --work-tree=%s --git-dir=%s"):format(worktree.toplevel, worktree.gitdir)
|
and (" --work-tree=%s --git-dir=%s"):format(worktree.toplevel, worktree.gitdir)
|
||||||
or ""
|
or ""
|
||||||
f.toggle_term_cmd("lazygit " .. flags)
|
f.toggle_term_cmd("lazygit " .. flags)
|
||||||
end,
|
end,
|
||||||
|
|
|
@ -2,29 +2,29 @@ local conf = { handlers = {} }
|
||||||
|
|
||||||
-- https://github.com/bmewburn/intelephense-docs/blob/master/installation.md#configuration-options
|
-- https://github.com/bmewburn/intelephense-docs/blob/master/installation.md#configuration-options
|
||||||
conf.handlers["intelephense"] = {
|
conf.handlers["intelephense"] = {
|
||||||
init_options = {
|
init_options = {
|
||||||
storagePath = os.getenv("XDG_CACHE_HOME") .. "/intelephense",
|
storagePath = os.getenv("XDG_CACHE_HOME") .. "/intelephense",
|
||||||
globalStoragePath = os.getenv("XDG_CONFIG_HOME") .. "/intelephense",
|
globalStoragePath = os.getenv("XDG_CONFIG_HOME") .. "/intelephense",
|
||||||
licenceKey = os.getenv("XDG_CONFIG_HOME") .. "/intelephense/license.txt",
|
licenceKey = os.getenv("XDG_CONFIG_HOME") .. "/intelephense/license.txt",
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
conf.handlers["bashls"] = {
|
conf.handlers["bashls"] = {
|
||||||
settings = {
|
settings = {
|
||||||
bashIde = {
|
bashIde = {
|
||||||
shellcheckPath = vim.fn.stdpath("data") .. "mason/bin/shellcheck",
|
shellcheckPath = vim.fn.stdpath("data") .. "mason/bin/shellcheck",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
conf.required = {
|
conf.required = {
|
||||||
"zk",
|
"zk",
|
||||||
"jsonls",
|
"jsonls",
|
||||||
"yamlls",
|
"yamlls",
|
||||||
"lua_ls",
|
"lua_ls",
|
||||||
"bashls",
|
"bashls",
|
||||||
"ansiblels",
|
"ansiblels",
|
||||||
"dockerls",
|
"dockerls",
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -7,7 +7,7 @@ g.mapleader = " "
|
||||||
g.maplocalleader = " "
|
g.maplocalleader = " "
|
||||||
g.vim_json_conceal = 0
|
g.vim_json_conceal = 0
|
||||||
g.git_worktrees = {
|
g.git_worktrees = {
|
||||||
{ toplevel = vim.env.HOME, gitdir = vim.env.XDG_DATA_HOME .. "/dots" },
|
{ toplevel = vim.env.HOME, gitdir = vim.env.XDG_DATA_HOME .. "/dots" },
|
||||||
}
|
}
|
||||||
g.max_lines = 1000
|
g.max_lines = 1000
|
||||||
g.max_size = 1024 * 100
|
g.max_size = 1024 * 100
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -1,13 +1,13 @@
|
||||||
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
|
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
|
||||||
if not vim.loop.fs_stat(lazypath) then
|
if not vim.loop.fs_stat(lazypath) then
|
||||||
vim.fn.system({
|
vim.fn.system({
|
||||||
"git",
|
"git",
|
||||||
"clone",
|
"clone",
|
||||||
"--filter=blob:none",
|
"--filter=blob:none",
|
||||||
"https://github.com/folke/lazy.nvim.git",
|
"https://github.com/folke/lazy.nvim.git",
|
||||||
"--branch=stable",
|
"--branch=stable",
|
||||||
lazypath,
|
lazypath,
|
||||||
})
|
})
|
||||||
end
|
end
|
||||||
vim.opt.rtp:prepend(lazypath)
|
vim.opt.rtp:prepend(lazypath)
|
||||||
require("lazy").setup("plugins", require("plugins.lazy").opts)
|
require("lazy").setup("plugins", require("plugins.lazy").opts)
|
||||||
|
|
|
@ -1,111 +1,111 @@
|
||||||
local M = { "hrsh7th/nvim-cmp" }
|
local M = { "hrsh7th/nvim-cmp" }
|
||||||
|
|
||||||
M.dependencies = {
|
M.dependencies = {
|
||||||
"saadparwaiz1/cmp_luasnip",
|
"saadparwaiz1/cmp_luasnip",
|
||||||
"hrsh7th/cmp-buffer",
|
"hrsh7th/cmp-buffer",
|
||||||
"hrsh7th/cmp-path",
|
"hrsh7th/cmp-path",
|
||||||
"hrsh7th/cmp-nvim-lsp",
|
"hrsh7th/cmp-nvim-lsp",
|
||||||
}
|
}
|
||||||
|
|
||||||
M.event = "InsertEnter"
|
M.event = "InsertEnter"
|
||||||
|
|
||||||
M.opts = function()
|
M.opts = function()
|
||||||
local cmp = require("cmp")
|
local cmp = require("cmp")
|
||||||
local snip_status_ok, luasnip = pcall(require, "luasnip")
|
local snip_status_ok, luasnip = pcall(require, "luasnip")
|
||||||
local lspkind_status_ok, lspkind = pcall(require, "lspkind")
|
local lspkind_status_ok, lspkind = pcall(require, "lspkind")
|
||||||
if not snip_status_ok then
|
if not snip_status_ok then
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
local border_opts = {
|
local border_opts = {
|
||||||
border = "rounded",
|
border = "rounded",
|
||||||
winhighlight = "Normal:NormalFloat,FloatBorder:FloatBorder,CursorLine:PmenuSel,Search:None",
|
winhighlight = "Normal:NormalFloat,FloatBorder:FloatBorder,CursorLine:PmenuSel,Search:None",
|
||||||
}
|
}
|
||||||
|
|
||||||
local function has_words_before()
|
local function has_words_before()
|
||||||
local line, col = (unpack or table.unpack)(vim.api.nvim_win_get_cursor(0))
|
local line, col = (unpack or table.unpack)(vim.api.nvim_win_get_cursor(0))
|
||||||
return col ~= 0 and vim.api.nvim_buf_get_lines(0, line - 1, line, true)[1]:sub(col, col):match("%s") == nil
|
return col ~= 0 and vim.api.nvim_buf_get_lines(0, line - 1, line, true)[1]:sub(col, col):match("%s") == nil
|
||||||
end
|
end
|
||||||
|
|
||||||
return {
|
return {
|
||||||
enabled = function()
|
enabled = function()
|
||||||
local dap_prompt = require("funcs").is_available("cmp-dap")
|
local dap_prompt = require("funcs").is_available("cmp-dap")
|
||||||
and vim.tbl_contains(
|
and vim.tbl_contains(
|
||||||
{ "dap-repl", "dapui_watches", "dapui_hover" },
|
{ "dap-repl", "dapui_watches", "dapui_hover" },
|
||||||
vim.api.nvim_get_option_value("filetype", { buf = 0 })
|
vim.api.nvim_get_option_value("filetype", { buf = 0 })
|
||||||
)
|
)
|
||||||
if vim.api.nvim_get_option_value("buftype", { buf = 0 }) == "prompt" and not dap_prompt then
|
if vim.api.nvim_get_option_value("buftype", { buf = 0 }) == "prompt" and not dap_prompt then
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
return true
|
return true
|
||||||
end,
|
end,
|
||||||
preselect = cmp.PreselectMode.None,
|
preselect = cmp.PreselectMode.None,
|
||||||
formatting = {
|
formatting = {
|
||||||
fields = { "kind", "abbr", "menu" },
|
fields = { "kind", "abbr", "menu" },
|
||||||
format = lspkind_status_ok and lspkind.cmp_format(require("plugins.misc.lspkind").opts) or nil,
|
format = lspkind_status_ok and lspkind.cmp_format(require("plugins.misc.lspkind").opts) or nil,
|
||||||
},
|
},
|
||||||
snippet = {
|
snippet = {
|
||||||
expand = function(args)
|
expand = function(args)
|
||||||
luasnip.lsp_expand(args.body)
|
luasnip.lsp_expand(args.body)
|
||||||
end,
|
end,
|
||||||
},
|
},
|
||||||
duplicates = {
|
duplicates = {
|
||||||
nvim_lsp = 1,
|
nvim_lsp = 1,
|
||||||
luasnip = 1,
|
luasnip = 1,
|
||||||
cmp_tabnine = 1,
|
cmp_tabnine = 1,
|
||||||
buffer = 1,
|
buffer = 1,
|
||||||
path = 1,
|
path = 1,
|
||||||
},
|
},
|
||||||
confirm_opts = {
|
confirm_opts = {
|
||||||
behavior = cmp.ConfirmBehavior.Replace,
|
behavior = cmp.ConfirmBehavior.Replace,
|
||||||
select = false,
|
select = false,
|
||||||
},
|
},
|
||||||
window = {
|
window = {
|
||||||
completion = cmp.config.window.bordered(border_opts),
|
completion = cmp.config.window.bordered(border_opts),
|
||||||
documentation = cmp.config.window.bordered(border_opts),
|
documentation = cmp.config.window.bordered(border_opts),
|
||||||
},
|
},
|
||||||
-- TODO: Move to config.keymaps
|
-- TODO: Move to config.keymaps
|
||||||
mapping = {
|
mapping = {
|
||||||
["<Up>"] = cmp.mapping.select_prev_item({ behavior = cmp.SelectBehavior.Select }),
|
["<Up>"] = cmp.mapping.select_prev_item({ behavior = cmp.SelectBehavior.Select }),
|
||||||
["<Down>"] = cmp.mapping.select_next_item({ behavior = cmp.SelectBehavior.Select }),
|
["<Down>"] = cmp.mapping.select_next_item({ behavior = cmp.SelectBehavior.Select }),
|
||||||
["<C-p>"] = cmp.mapping.select_prev_item({ behavior = cmp.SelectBehavior.Insert }),
|
["<C-p>"] = cmp.mapping.select_prev_item({ behavior = cmp.SelectBehavior.Insert }),
|
||||||
["<C-n>"] = cmp.mapping.select_next_item({ behavior = cmp.SelectBehavior.Insert }),
|
["<C-n>"] = cmp.mapping.select_next_item({ behavior = cmp.SelectBehavior.Insert }),
|
||||||
["<C-k>"] = cmp.mapping.select_prev_item({ behavior = cmp.SelectBehavior.Insert }),
|
["<C-k>"] = cmp.mapping.select_prev_item({ behavior = cmp.SelectBehavior.Insert }),
|
||||||
["<C-j>"] = cmp.mapping.select_next_item({ behavior = cmp.SelectBehavior.Insert }),
|
["<C-j>"] = cmp.mapping.select_next_item({ behavior = cmp.SelectBehavior.Insert }),
|
||||||
["<C-u>"] = cmp.mapping(cmp.mapping.scroll_docs(-4), { "i", "c" }),
|
["<C-u>"] = cmp.mapping(cmp.mapping.scroll_docs(-4), { "i", "c" }),
|
||||||
["<C-d>"] = cmp.mapping(cmp.mapping.scroll_docs(4), { "i", "c" }),
|
["<C-d>"] = cmp.mapping(cmp.mapping.scroll_docs(4), { "i", "c" }),
|
||||||
["<C-Space>"] = cmp.mapping(cmp.mapping.complete(), { "i", "c" }),
|
["<C-Space>"] = cmp.mapping(cmp.mapping.complete(), { "i", "c" }),
|
||||||
["<C-y>"] = cmp.config.disable,
|
["<C-y>"] = cmp.config.disable,
|
||||||
["<C-e>"] = cmp.mapping({ i = cmp.mapping.abort(), c = cmp.mapping.close() }),
|
["<C-e>"] = cmp.mapping({ i = cmp.mapping.abort(), c = cmp.mapping.close() }),
|
||||||
["<CR>"] = cmp.mapping.confirm({ select = false }),
|
["<CR>"] = cmp.mapping.confirm({ select = false }),
|
||||||
["<Tab>"] = cmp.mapping(function(fallback)
|
["<Tab>"] = cmp.mapping(function(fallback)
|
||||||
if cmp.visible() then
|
if cmp.visible() then
|
||||||
cmp.select_next_item()
|
cmp.select_next_item()
|
||||||
elseif luasnip.expand_or_locally_jumpable() then
|
elseif luasnip.expand_or_locally_jumpable() then
|
||||||
luasnip.expand_or_jump()
|
luasnip.expand_or_jump()
|
||||||
elseif has_words_before() then
|
elseif has_words_before() then
|
||||||
cmp.complete()
|
cmp.complete()
|
||||||
else
|
else
|
||||||
fallback()
|
fallback()
|
||||||
end
|
end
|
||||||
end, { "i", "s" }),
|
end, { "i", "s" }),
|
||||||
["<S-Tab>"] = cmp.mapping(function(fallback)
|
["<S-Tab>"] = cmp.mapping(function(fallback)
|
||||||
if cmp.visible() then
|
if cmp.visible() then
|
||||||
cmp.select_prev_item()
|
cmp.select_prev_item()
|
||||||
elseif luasnip.jumpable(-1) then
|
elseif luasnip.jumpable(-1) then
|
||||||
luasnip.jump(-1)
|
luasnip.jump(-1)
|
||||||
else
|
else
|
||||||
fallback()
|
fallback()
|
||||||
end
|
end
|
||||||
end, { "i", "s" }),
|
end, { "i", "s" }),
|
||||||
},
|
},
|
||||||
sources = cmp.config.sources({
|
sources = cmp.config.sources({
|
||||||
{ name = "nvim_lsp", priority = 1000 },
|
{ name = "nvim_lsp", priority = 1000 },
|
||||||
{ name = "luasnip", priority = 750 },
|
{ name = "luasnip", priority = 750 },
|
||||||
{ name = "buffer", priority = 500 },
|
{ name = "buffer", priority = 500 },
|
||||||
{ name = "path", priority = 250 },
|
{ name = "path", priority = 250 },
|
||||||
}),
|
}),
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
return M
|
return M
|
||||||
|
|
|
@ -2,11 +2,11 @@ local M = { "rcarriga/cmp-dap" }
|
||||||
|
|
||||||
M.dependencies = { "nvim-cmp" }
|
M.dependencies = { "nvim-cmp" }
|
||||||
M.config = function()
|
M.config = function()
|
||||||
require("cmp").setup.filetype({ "dap-repl", "dapui_watches", "dapui_hover" }, {
|
require("cmp").setup.filetype({ "dap-repl", "dapui_watches", "dapui_hover" }, {
|
||||||
sources = {
|
sources = {
|
||||||
{ name = "dap" },
|
{ name = "dap" },
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
end
|
end
|
||||||
|
|
||||||
return M
|
return M
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
return {
|
return {
|
||||||
require("plugins.cmp.cmp"),
|
require("plugins.cmp.cmp"),
|
||||||
require("plugins.cmp.dap"),
|
require("plugins.cmp.dap"),
|
||||||
require("plugins.cmp.luasnip"),
|
require("plugins.cmp.luasnip"),
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,16 +7,16 @@ M.build = "make install_jsregexp"
|
||||||
M.dependencies = { "rafamadriz/friendly-snippets" }
|
M.dependencies = { "rafamadriz/friendly-snippets" }
|
||||||
|
|
||||||
M.opts = {
|
M.opts = {
|
||||||
history = true,
|
history = true,
|
||||||
delete_check_events = "TextChanged",
|
delete_check_events = "TextChanged",
|
||||||
region_check_events = "CursorMoved",
|
region_check_events = "CursorMoved",
|
||||||
}
|
}
|
||||||
|
|
||||||
M.config = function(_, opts)
|
M.config = function(_, opts)
|
||||||
require("luasnip").config.setup(opts)
|
require("luasnip").config.setup(opts)
|
||||||
vim.tbl_map(function(type)
|
vim.tbl_map(function(type)
|
||||||
require("luasnip.loaders.from_" .. type).lazy_load()
|
require("luasnip.loaders.from_" .. type).lazy_load()
|
||||||
end, { "vscode", "snipmate", "lua" })
|
end, { "vscode", "snipmate", "lua" })
|
||||||
end
|
end
|
||||||
|
|
||||||
return M
|
return M
|
||||||
|
|
|
@ -3,21 +3,21 @@ local M = { "rcarriga/nvim-dap-ui" }
|
||||||
M.dependencies = { "mason-nvim-dap.nvim" }
|
M.dependencies = { "mason-nvim-dap.nvim" }
|
||||||
|
|
||||||
M.opts = {
|
M.opts = {
|
||||||
floating = { border = "rounded" },
|
floating = { border = "rounded" },
|
||||||
}
|
}
|
||||||
|
|
||||||
M.config = function(_, opts)
|
M.config = function(_, opts)
|
||||||
local dap, dapui = require("dap"), require("dapui")
|
local dap, dapui = require("dap"), require("dapui")
|
||||||
dap.listeners.after.event_initialized["dapui_config"] = function()
|
dap.listeners.after.event_initialized["dapui_config"] = function()
|
||||||
dapui.open()
|
dapui.open()
|
||||||
end
|
end
|
||||||
dap.listeners.before.event_terminated["dapui_config"] = function()
|
dap.listeners.before.event_terminated["dapui_config"] = function()
|
||||||
dapui.close()
|
dapui.close()
|
||||||
end
|
end
|
||||||
dap.listeners.before.event_exited["dapui_config"] = function()
|
dap.listeners.before.event_exited["dapui_config"] = function()
|
||||||
dapui.close()
|
dapui.close()
|
||||||
end
|
end
|
||||||
dapui.setup(opts)
|
dapui.setup(opts)
|
||||||
end
|
end
|
||||||
|
|
||||||
return M
|
return M
|
||||||
|
|
|
@ -2,33 +2,33 @@ local M = { "folke/lazy.nvim" }
|
||||||
local icons = require("config.icons")
|
local icons = require("config.icons")
|
||||||
|
|
||||||
M.opts = {
|
M.opts = {
|
||||||
dev = {
|
dev = {
|
||||||
path = (os.getenv("XDG_DOCUMENTS_DIR") or "~/Documents") .. "/dev/nvim",
|
path = (os.getenv("XDG_DOCUMENTS_DIR") or "~/Documents") .. "/dev/nvim",
|
||||||
},
|
},
|
||||||
install = {
|
install = {
|
||||||
missing = true,
|
missing = true,
|
||||||
colorscheme = { "tokyonight" },
|
colorscheme = { "tokyonight" },
|
||||||
},
|
},
|
||||||
ui = {
|
ui = {
|
||||||
border = "single",
|
border = "single",
|
||||||
icons = {
|
icons = {
|
||||||
cmd = icons.Console .. " ",
|
cmd = icons.Console .. " ",
|
||||||
config = icons.Gear,
|
config = icons.Gear,
|
||||||
event = icons.Event,
|
event = icons.Event,
|
||||||
ft = icons.File .. " ",
|
ft = icons.File .. " ",
|
||||||
init = icons.Gear .. " ",
|
init = icons.Gear .. " ",
|
||||||
import = icons.Import .. " ",
|
import = icons.Import .. " ",
|
||||||
keys = icons.Keyboard .. " ",
|
keys = icons.Keyboard .. " ",
|
||||||
lazy = icons.Sleep .. " ",
|
lazy = icons.Sleep .. " ",
|
||||||
loaded = icons.Loaded,
|
loaded = icons.Loaded,
|
||||||
not_loaded = icons.Unloaded,
|
not_loaded = icons.Unloaded,
|
||||||
plugin = icons.Package,
|
plugin = icons.Package,
|
||||||
runtime = icons.Runtime .. " ",
|
runtime = icons.Runtime .. " ",
|
||||||
source = icons.Source .. " ",
|
source = icons.Source .. " ",
|
||||||
start = icons.Start,
|
start = icons.Start,
|
||||||
task = icons.Task,
|
task = icons.Task,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
return M
|
return M
|
||||||
|
|
|
@ -3,20 +3,20 @@ local M = { "stevearc/aerial.nvim" }
|
||||||
M.event = { "BufReadPost", "BufNewFile", "BufNew" }
|
M.event = { "BufReadPost", "BufNewFile", "BufNew" }
|
||||||
|
|
||||||
M.opts = {
|
M.opts = {
|
||||||
attach_mode = "global",
|
attach_mode = "global",
|
||||||
backends = { "lsp", "treesitter", "markdown", "man" },
|
backends = { "lsp", "treesitter", "markdown", "man" },
|
||||||
disable_max_lines = vim.g.max_lines,
|
disable_max_lines = vim.g.max_lines,
|
||||||
disable_max_size = vim.g.max_size,
|
disable_max_size = vim.g.max_size,
|
||||||
layout = { min_width = 28 },
|
layout = { min_width = 28 },
|
||||||
show_guides = true,
|
show_guides = true,
|
||||||
filter_kind = false,
|
filter_kind = false,
|
||||||
guides = {
|
guides = {
|
||||||
mid_item = "├ ",
|
mid_item = "├ ",
|
||||||
last_item = "└ ",
|
last_item = "└ ",
|
||||||
nested_top = "│ ",
|
nested_top = "│ ",
|
||||||
whitespace = " ",
|
whitespace = " ",
|
||||||
},
|
},
|
||||||
keymaps = require("config.keymaps").aerial,
|
keymaps = require("config.keymaps").aerial,
|
||||||
}
|
}
|
||||||
|
|
||||||
return M
|
return M
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
return {
|
return {
|
||||||
{ "neovim/nvim-lspconfig" },
|
{ "neovim/nvim-lspconfig" },
|
||||||
{ "folke/neoconf.nvim", config = true },
|
{ "folke/neoconf.nvim", config = true },
|
||||||
{ "folke/neodev.nvim", config = true },
|
{ "folke/neodev.nvim", config = true },
|
||||||
require("plugins.lsp.mason-lspconfig"),
|
require("plugins.lsp.mason-lspconfig"),
|
||||||
require("plugins.lsp.mason-null-ls"),
|
require("plugins.lsp.mason-null-ls"),
|
||||||
require("plugins.lsp.null-ls"),
|
require("plugins.lsp.null-ls"),
|
||||||
require("plugins.lsp.aerial"),
|
require("plugins.lsp.aerial"),
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,13 +12,13 @@ capabilities.textDocument.completion.completionItem.deprecatedSupport = true
|
||||||
capabilities.textDocument.completion.completionItem.commitCharactersSupport = true
|
capabilities.textDocument.completion.completionItem.commitCharactersSupport = true
|
||||||
capabilities.textDocument.completion.completionItem.tagSupport = { valueSet = { 1 } }
|
capabilities.textDocument.completion.completionItem.tagSupport = { valueSet = { 1 } }
|
||||||
capabilities.textDocument.completion.completionItem.resolveSupport = {
|
capabilities.textDocument.completion.completionItem.resolveSupport = {
|
||||||
properties = { "documentation", "detail", "additionalTextEdits" },
|
properties = { "documentation", "detail", "additionalTextEdits" },
|
||||||
}
|
}
|
||||||
capabilities.textDocument.foldingRange = { dynamicRegistration = false, lineFoldingOnly = true }
|
capabilities.textDocument.foldingRange = { dynamicRegistration = false, lineFoldingOnly = true }
|
||||||
|
|
||||||
local function merge(table, overwrite)
|
local function merge(table, overwrite)
|
||||||
overwrite = overwrite or {}
|
overwrite = overwrite or {}
|
||||||
return table and vim.tbl_deep_extend("force", table, overwrite) or overwrite
|
return table and vim.tbl_deep_extend("force", table, overwrite) or overwrite
|
||||||
end
|
end
|
||||||
|
|
||||||
M.dependencies = { "mason.nvim", "neoconf.nvim", "neodev.nvim" }
|
M.dependencies = { "mason.nvim", "neoconf.nvim", "neodev.nvim" }
|
||||||
|
@ -28,63 +28,63 @@ M.event = { "BufReadPost", "BufNewFile", "BufNew" }
|
||||||
M.cmd = { "LspInstall", "LspUninstall" }
|
M.cmd = { "LspInstall", "LspUninstall" }
|
||||||
|
|
||||||
M.config = function()
|
M.config = function()
|
||||||
local icons = require("config.icons")
|
local icons = require("config.icons")
|
||||||
local signs = {
|
local signs = {
|
||||||
{ name = "DiagnosticSignError", text = icons.Error, texthl = "DiagnosticSignError" },
|
{ name = "DiagnosticSignError", text = icons.Error, texthl = "DiagnosticSignError" },
|
||||||
{ name = "DiagnosticSignWarn", text = icons.Warn, texthl = "DiagnosticSignWarn" },
|
{ name = "DiagnosticSignWarn", text = icons.Warn, texthl = "DiagnosticSignWarn" },
|
||||||
{ name = "DiagnosticSignHint", text = icons.Hint, texthl = "DiagnosticSignHint" },
|
{ name = "DiagnosticSignHint", text = icons.Hint, texthl = "DiagnosticSignHint" },
|
||||||
{ name = "DiagnosticSignInfo", text = icons.Info, texthl = "DiagnosticSignInfo" },
|
{ name = "DiagnosticSignInfo", text = icons.Info, texthl = "DiagnosticSignInfo" },
|
||||||
{ name = "DapStopped", text = icons.DapStopped, texthl = "DiagnosticWarn" },
|
{ name = "DapStopped", text = icons.DapStopped, texthl = "DiagnosticWarn" },
|
||||||
{ name = "DapBreakpoint", text = icons.DapBreakpoint, texthl = "DiagnosticInfo" },
|
{ name = "DapBreakpoint", text = icons.DapBreakpoint, texthl = "DiagnosticInfo" },
|
||||||
{ name = "DapBreakpointRejected", text = icons.DapBreakpointRejected, texthl = "DiagnosticError" },
|
{ name = "DapBreakpointRejected", text = icons.DapBreakpointRejected, texthl = "DiagnosticError" },
|
||||||
{ name = "DapBreakpointCondition", text = icons.DapBreakpointCondition, texthl = "DiagnosticInfo" },
|
{ name = "DapBreakpointCondition", text = icons.DapBreakpointCondition, texthl = "DiagnosticInfo" },
|
||||||
{ name = "DapLogPoint", text = icons.DapLogPoint, texthl = "DiagnosticInfo" },
|
{ name = "DapLogPoint", text = icons.DapLogPoint, texthl = "DiagnosticInfo" },
|
||||||
}
|
}
|
||||||
for _, sign in ipairs(signs) do
|
for _, sign in ipairs(signs) do
|
||||||
vim.fn.sign_define(sign.name, sign)
|
vim.fn.sign_define(sign.name, sign)
|
||||||
end
|
end
|
||||||
|
|
||||||
vim.diagnostic.config({
|
vim.diagnostic.config({
|
||||||
virtual_text = true,
|
virtual_text = true,
|
||||||
signs = {
|
signs = {
|
||||||
text = {
|
text = {
|
||||||
[vim.diagnostic.severity.ERROR] = icons.Error,
|
[vim.diagnostic.severity.ERROR] = icons.Error,
|
||||||
[vim.diagnostic.severity.HINT] = icons.Hint,
|
[vim.diagnostic.severity.HINT] = icons.Hint,
|
||||||
[vim.diagnostic.severity.WARN] = icons.Warn,
|
[vim.diagnostic.severity.WARN] = icons.Warn,
|
||||||
[vim.diagnostic.severity.INFO] = icons.Info,
|
[vim.diagnostic.severity.INFO] = icons.Info,
|
||||||
},
|
},
|
||||||
active = signs,
|
active = signs,
|
||||||
},
|
},
|
||||||
update_in_insert = true,
|
update_in_insert = true,
|
||||||
underline = true,
|
underline = true,
|
||||||
severity_sort = true,
|
severity_sort = true,
|
||||||
float = {
|
float = {
|
||||||
focused = false,
|
focused = false,
|
||||||
style = "minimal",
|
style = "minimal",
|
||||||
border = "rounded",
|
border = "rounded",
|
||||||
source = "always",
|
source = "always",
|
||||||
header = "",
|
header = "",
|
||||||
prefix = "",
|
prefix = "",
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
vim.lsp.handlers["textDocument/hover"] = vim.lsp.with(vim.lsp.handlers.hover, { border = "rounded", silent = true })
|
vim.lsp.handlers["textDocument/hover"] = vim.lsp.with(vim.lsp.handlers.hover, { border = "rounded", silent = true })
|
||||||
vim.lsp.handlers["textDocument/signatureHelp"] =
|
vim.lsp.handlers["textDocument/signatureHelp"] =
|
||||||
vim.lsp.with(vim.lsp.handlers.signature_help, { border = "rounded", silent = true })
|
vim.lsp.with(vim.lsp.handlers.signature_help, { border = "rounded", silent = true })
|
||||||
|
|
||||||
local mlsp = require("mason-lspconfig")
|
local mlsp = require("mason-lspconfig")
|
||||||
mlsp.setup({ ensure_installed = serverconf.required })
|
mlsp.setup({ ensure_installed = serverconf.required })
|
||||||
|
|
||||||
mlsp.setup_handlers({
|
mlsp.setup_handlers({
|
||||||
function(server)
|
function(server)
|
||||||
if not f.has_value(serverconf.ignore, server) then
|
if not f.has_value(serverconf.ignore, server) then
|
||||||
local ls = require("lspconfig")[server]
|
local ls = require("lspconfig")[server]
|
||||||
local ls_opts = merge(ls, { capabilities = capabilities, on_attach = require("funcs").lsp_on_attach })
|
local ls_opts = merge(ls, { capabilities = capabilities, on_attach = require("funcs").lsp_on_attach })
|
||||||
local opts = merge(ls_opts, serverconf.handlers[server])
|
local opts = merge(ls_opts, serverconf.handlers[server])
|
||||||
require("lspconfig")[server].setup(opts)
|
require("lspconfig")[server].setup(opts)
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
})
|
})
|
||||||
end
|
end
|
||||||
|
|
||||||
return M
|
return M
|
||||||
|
|
|
@ -5,7 +5,7 @@ M.event = { "BufReadPost", "BufNewFile", "BufNew" }
|
||||||
M.dependencies = { "mason-null-ls.nvim" }
|
M.dependencies = { "mason-null-ls.nvim" }
|
||||||
|
|
||||||
M.opts = {
|
M.opts = {
|
||||||
on_attach = require("funcs").lsp_on_attach,
|
on_attach = require("funcs").lsp_on_attach,
|
||||||
}
|
}
|
||||||
|
|
||||||
return M
|
return M
|
||||||
|
|
|
@ -3,163 +3,163 @@ local M = { "goolord/alpha-nvim" }
|
||||||
M.dependencies = { "telescope.nvim", "todo-comments.nvim" }
|
M.dependencies = { "telescope.nvim", "todo-comments.nvim" }
|
||||||
|
|
||||||
M.opts = function()
|
M.opts = function()
|
||||||
local icons = require("config.icons")
|
local icons = require("config.icons")
|
||||||
local dashboard = require("alpha.themes.dashboard")
|
local dashboard = require("alpha.themes.dashboard")
|
||||||
|
|
||||||
dashboard.section.header.opts.hl = "DashboardHeader"
|
dashboard.section.header.opts.hl = "DashboardHeader"
|
||||||
dashboard.section.footer.opts.hl = "DashboardFooter"
|
dashboard.section.footer.opts.hl = "DashboardFooter"
|
||||||
|
|
||||||
local banners = {
|
local banners = {
|
||||||
[1] = {
|
[1] = {
|
||||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣴⣶⣿⣿⣿⣷⣶⣤⡀⠀⠀⠀⠀⠀⠀",
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣴⣶⣿⣿⣿⣷⣶⣤⡀⠀⠀⠀⠀⠀⠀",
|
||||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣴⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧⡀⠀⠀⠀⠀",
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣴⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧⡀⠀⠀⠀⠀",
|
||||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⠀⠀⠀⠀",
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⠀⠀⠀⠀",
|
||||||
"⠀⣀⣴⣶⣶⣶⣶⣤⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣼⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡄⠀⠀⠀",
|
"⠀⣀⣴⣶⣶⣶⣶⣤⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣼⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡄⠀⠀⠀",
|
||||||
"⣰⣿⣿⠿⠛⠿⢿⣿⣿⣷⣦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣤⣶⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀⠀⠀⠀",
|
"⣰⣿⣿⠿⠛⠿⢿⣿⣿⣷⣦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣤⣶⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀⠀⠀⠀",
|
||||||
"⣿⣿⡇⠀⠀⠀⠀⠈⠛⢿⣿⣿⣦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣰⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡟⠀⠀⠀⠀",
|
"⣿⣿⡇⠀⠀⠀⠀⠈⠛⢿⣿⣿⣦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣰⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡟⠀⠀⠀⠀",
|
||||||
"⠹⣿⣧⠀⠀⠀⠀⠀⠀⠀⠙⢿⣿⣿⣦⣄⠀⠀⠀⠀⠀⠀⠀⢀⣿⣿⣿⣿⣿⣿⣿⡿⠛⠉⠀⢀⣿⣿⣿⣿⣿⣿⣿⠟⠀⠀⠀⠀⠀",
|
"⠹⣿⣧⠀⠀⠀⠀⠀⠀⠀⠙⢿⣿⣿⣦⣄⠀⠀⠀⠀⠀⠀⠀⢀⣿⣿⣿⣿⣿⣿⣿⡿⠛⠉⠀⢀⣿⣿⣿⣿⣿⣿⣿⠟⠀⠀⠀⠀⠀",
|
||||||
"⠀⠙⢿⣧⡀⠀⠀⠀⠀⠀⠀⠀⠙⢿⣿⣿⣿⣷⣶⣶⣶⣶⣶⣿⣿⣿⣿⣿⣿⣿⣿⣷⣤⣤⣶⣿⣿⣿⣿⣿⡿⠟⠁⠀⠀⠀⠀⠀⠀",
|
"⠀⠙⢿⣧⡀⠀⠀⠀⠀⠀⠀⠀⠙⢿⣿⣿⣿⣷⣶⣶⣶⣶⣶⣿⣿⣿⣿⣿⣿⣿⣿⣷⣤⣤⣶⣿⣿⣿⣿⣿⡿⠟⠁⠀⠀⠀⠀⠀⠀",
|
||||||
"⠀⠀⠀⠉⠻⠷⡄⠀⠀⠀⠀⠀⠀⠀⠈⠛⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⠛⠉⠀⢀⣠⣤⣤⣄⡀⠀⠀",
|
"⠀⠀⠀⠉⠻⠷⡄⠀⠀⠀⠀⠀⠀⠀⠈⠛⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⠛⠉⠀⢀⣠⣤⣤⣄⡀⠀⠀",
|
||||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣼⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⠋⠁⠀⠀⠀⠀⢠⣿⣿⣿⣿⣿⣿⣷⡀",
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣼⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⠋⠁⠀⠀⠀⠀⢠⣿⣿⣿⣿⣿⣿⣷⡀",
|
||||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣦⣄⡀⠀⠀⠀⠀⣿⠟⠉⠉⠙⢿⣿⣿⣷",
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣦⣄⡀⠀⠀⠀⠀⣿⠟⠉⠉⠙⢿⣿⣿⣷",
|
||||||
"⠀⠀⠀⣀⣠⣤⣤⣤⣶⣶⣶⣤⣤⠀⣴⣿⣿⣿⡿⠟⠛⠛⠛⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣦⡀⠀⠀⠉⠀⠀⠀⢀⣼⣿⣿⡿",
|
"⠀⠀⠀⣀⣠⣤⣤⣤⣶⣶⣶⣤⣤⠀⣴⣿⣿⣿⡿⠟⠛⠛⠛⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣦⡀⠀⠀⠉⠀⠀⠀⢀⣼⣿⣿⡿",
|
||||||
"⠀⠀⠀⠈⠉⠉⠉⠉⠉⠉⠛⠻⠏⣼⣿⣿⡿⣋⣀⣤⣤⣴⣶⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣶⣤⣄⣀⣠⣴⣾⣿⣿⡿⠁",
|
"⠀⠀⠀⠈⠉⠉⠉⠉⠉⠉⠛⠻⠏⣼⣿⣿⡿⣋⣀⣤⣤⣴⣶⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣶⣤⣄⣀⣠⣴⣾⣿⣿⡿⠁",
|
||||||
"⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣾⣿⡿⠋⠘⠿⠟⠛⠛⢻⣿⣿⣿⠋⠁⠈⠉⢿⣿⣿⣧⠀⠙⠻⢿⣿⣿⣿⣿⣿⣿⣿⡿⠟⠉⠀⠀",
|
"⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣾⣿⡿⠋⠘⠿⠟⠛⠛⢻⣿⣿⣿⠋⠁⠈⠉⢿⣿⣿⣧⠀⠙⠻⢿⣿⣿⣿⣿⣿⣿⣿⡿⠟⠉⠀⠀",
|
||||||
"⠙⣷⣤⣀⠀⠀⠀⢀⣀⣤⣶⣿⡿⠋⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⡟⠀⠀⠀⢠⣿⣿⣿⡟⠀⠀⠀⠀⠀⠉⠉⠉⠉⠉⠀⠀⠀⠀⠀⠀",
|
"⠙⣷⣤⣀⠀⠀⠀⢀⣀⣤⣶⣿⡿⠋⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⡟⠀⠀⠀⢠⣿⣿⣿⡟⠀⠀⠀⠀⠀⠉⠉⠉⠉⠉⠀⠀⠀⠀⠀⠀",
|
||||||
"⠀⠈⠛⠿⢿⣿⣿⣿⠿⠿⠛⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⣿⡀⠀⢠⣿⣿⣿⣿⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
"⠀⠈⠛⠿⢿⣿⣿⣿⠿⠿⠛⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⣿⡀⠀⢠⣿⣿⣿⣿⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⣿⣿⣿⣷⣶⣶⣶⣶⣦⣤⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⣿⣿⣿⣷⣶⣶⣶⣶⣦⣤⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⣙⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⣙⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠐⢶⣦⣤⣶⣾⣿⣿⡶⠈⠉⠛⠿⣿⣿⣿⣿⣿⣷⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠐⢶⣦⣤⣶⣾⣿⣿⡶⠈⠉⠛⠿⣿⣿⣿⣿⣿⣷⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠉⠉⠉⠉⠀⠀⠀⠀⠀⠀⠀⠙⣿⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠉⠉⠉⠉⠀⠀⠀⠀⠀⠀⠀⠙⣿⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣼⣿⣿⡿⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣼⣿⣿⡿⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣤⣤⣶⡿⠿⠟⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣤⣤⣶⡿⠿⠟⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
},
|
},
|
||||||
[2] = {
|
[2] = {
|
||||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⢒⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⢒⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢘⡈⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢘⡈⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⢣⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⢣⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡌⡦⢠⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡌⡦⢠⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡐⣸⠂⠆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡐⣸⠂⠆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
"⠀⠀⠀⠀⠀⠀⠀⠸⡢⡀⠀⠀⠀⠀⠀⠔⣰⠏⡌⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
"⠀⠀⠀⠀⠀⠀⠀⠸⡢⡀⠀⠀⠀⠀⠀⠔⣰⠏⡌⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
"⠀⠀⠀⠀⠀⠀⢖⡠⣨⠊⠒⠠⣀⢀⠊⣠⠃⡰⠀⠀⠀⠀⠀⠀⠀⠀⠀⡀⠠⠀⠀⠠⠠⠀⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
"⠀⠀⠀⠀⠀⠀⢖⡠⣨⠊⠒⠠⣀⢀⠊⣠⠃⡰⠀⠀⠀⠀⠀⠀⠀⠀⠀⡀⠠⠀⠀⠠⠠⠀⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
"⠀⠀⠀⠀⠀⠀⠀⢰⠑⠚⠀⠀⠀⡉⠀⢇⡰⠀⠀⠀⠀⠀⢀⠠⠐⠈⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠐⠤⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
"⠀⠀⠀⠀⠀⠀⠀⢰⠑⠚⠀⠀⠀⡉⠀⢇⡰⠀⠀⠀⠀⠀⢀⠠⠐⠈⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠐⠤⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
"⠀⠀⠀⠀⠀⠀⠀⠈⡄⠀⠀⠀⠀⠘⠠⠐⡇⠀⠀⠀⠠⠐⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠢⡀⠀⠀⠀⠀⠀⠀⠀⠀",
|
"⠀⠀⠀⠀⠀⠀⠀⠈⡄⠀⠀⠀⠀⠘⠠⠐⡇⠀⠀⠀⠠⠐⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠢⡀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
"⠀⠀⠀⠀⠀⠀⠀⠀⢃⠀⠀⠀⠀⠀⠀⢀⠁⠀⢀⠌⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡠⠀⠀⠼⢄⠀⠀⠀⠀⠀⠀⠀",
|
"⠀⠀⠀⠀⠀⠀⠀⠀⢃⠀⠀⠀⠀⠀⠀⢀⠁⠀⢀⠌⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡠⠀⠀⠼⢄⠀⠀⠀⠀⠀⠀⠀",
|
||||||
"⠀⠀⠀⠀⠀⠀⠀⠀⢸⠀⠀⠀⠀⠀⠀⢸⠀⢠⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠎⠀⠀⠀⠀⠀⠈⠢⠄⠀⠀⠀⠀",
|
"⠀⠀⠀⠀⠀⠀⠀⠀⢸⠀⠀⠀⠀⠀⠀⢸⠀⢠⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠎⠀⠀⠀⠀⠀⠈⠢⠄⠀⠀⠀⠀",
|
||||||
"⠀⠀⠀⠀⠀⠀⠀⠀⢸⠀⠀⠀⠀⠀⠀⠸⠀⡆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠎⠀⠀⠀⠀⠀⠀⡠⠀⠈⢆⠀⠀⠀",
|
"⠀⠀⠀⠀⠀⠀⠀⠀⢸⠀⠀⠀⠀⠀⠀⠸⠀⡆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠎⠀⠀⠀⠀⠀⠀⡠⠀⠈⢆⠀⠀⠀",
|
||||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠨⠀⠀⠀⠀⠀⠀⠀⢆⠇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⠀⠀⠀⠀⠀⠀⡌⠀⠀⢎⠨⡄⠀⠀",
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠨⠀⠀⠀⠀⠀⠀⠀⢆⠇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⠀⠀⠀⠀⠀⠀⡌⠀⠀⢎⠨⡄⠀⠀",
|
||||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⡂⠀⠀⠀⠀⠀⠀⠈⢎⢆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠇⠀⠀⠀⠀⠀⠸⠀⠀⢸⠸⢀⠇⠀⠀",
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⡂⠀⠀⠀⠀⠀⠀⠈⢎⢆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠇⠀⠀⠀⠀⠀⠸⠀⠀⢸⠸⢀⠇⠀⠀",
|
||||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⡇⠀⠀⠀⠀⠀⠀⠀⠀⠡⢕⠠⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⠀⠀⠀⠀⠀⠀⢐⠀⠀⠈⠢⠥⠀⠀⠀",
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⡇⠀⠀⠀⠀⠀⠀⠀⠀⠡⢕⠠⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⠀⠀⠀⠀⠀⠀⢐⠀⠀⠈⠢⠥⠀⠀⠀",
|
||||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⢱⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠑⢄⡉⠒⠠⣀⠀⠀⠀⠀⠀⠀⠀⡇⠀⠀⠀⠀⠀⠀⠰⡀⠀⠀⡰⠁⠀⠀⠀",
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⢱⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠑⢄⡉⠒⠠⣀⠀⠀⠀⠀⠀⠀⠀⡇⠀⠀⠀⠀⠀⠀⠰⡀⠀⠀⡰⠁⠀⠀⠀",
|
||||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠑⠠⢄⠈⠑⠒⠤⡀⠀⢐⠅⠀⠀⠀⠀⠀⠀⠀⡁⡂⠉⠀⠀⠀⠀⠀",
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠑⠠⢄⠈⠑⠒⠤⡀⠀⢐⠅⠀⠀⠀⠀⠀⠀⠀⡁⡂⠉⠀⠀⠀⠀⠀",
|
||||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠁⠂⠤⢀⠓⠈⠢⢀⢀⠠⠤⠐⠀⡉⠌⠀⠀⠀⠀⠀⠀⠀",
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠁⠂⠤⢀⠓⠈⠢⢀⢀⠠⠤⠐⠀⡉⠌⠀⠀⠀⠀⠀⠀⠀",
|
||||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠢⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠠⠰⠐⠪⠤⢀⢀⠀⠀⠀⠀⠀⠀",
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠢⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠠⠰⠐⠪⠤⢀⢀⠀⠀⠀⠀⠀⠀",
|
||||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠁⠢⠄⢀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠁⠂⠒⡠⠄",
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠁⠢⠄⢀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠁⠂⠒⡠⠄",
|
||||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠉⠀⠂⠐⠐⠐⠂⠂⠠⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠄⠐⠂⠂⠀⠉⠀⠀⠀",
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠉⠀⠂⠐⠐⠐⠂⠂⠠⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠄⠐⠂⠂⠀⠉⠀⠀⠀",
|
||||||
},
|
},
|
||||||
[3] = {
|
[3] = {
|
||||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⣤⣴⣶⣶⣾⣿⣿⣿⣿⣿⣷⣶⣶⣦⣤⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⣤⣴⣶⣶⣾⣿⣿⣿⣿⣿⣷⣶⣶⣦⣤⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣴⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣦⣄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣴⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣦⣄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣶⣿⣿⣿⣿⣿⣿⠿⠟⠛⠉⠉⠉⠉⠉⢉⣭⡉⠉⠛⠻⠿⣿⣿⣿⣿⣿⣿⣶⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣶⣿⣿⣿⣿⣿⣿⠿⠟⠛⠉⠉⠉⠉⠉⢉⣭⡉⠉⠛⠻⠿⣿⣿⣿⣿⣿⣿⣶⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
"⠀⠀⠀⠀⠀⠀⠀⣠⣾⣿⣿⣿⣿⡿⠛⠉⠀⠀⠀⠀⠀⠀⠀⢀⣴⣿⣿⣿⣦⡀⠀⠀⠀⠉⠛⢿⣿⣿⣿⣿⣷⣄⠀⠀⠀⠀⠀⠀⠀",
|
"⠀⠀⠀⠀⠀⠀⠀⣠⣾⣿⣿⣿⣿⡿⠛⠉⠀⠀⠀⠀⠀⠀⠀⢀⣴⣿⣿⣿⣦⡀⠀⠀⠀⠉⠛⢿⣿⣿⣿⣿⣷⣄⠀⠀⠀⠀⠀⠀⠀",
|
||||||
"⠀⠀⠀⠀⠀⣠⣾⣿⣿⣿⡿⠟⠁⠀⠀⠀⠀⠀⠀⠀⠀⢀⣴⣿⣿⣿⣿⡿⠋⠀⠀⠀⠀⠀⠀⠀⠈⠻⢿⣿⣿⣿⣷⣄⠀⠀⠀⠀⠀",
|
"⠀⠀⠀⠀⠀⣠⣾⣿⣿⣿⡿⠟⠁⠀⠀⠀⠀⠀⠀⠀⠀⢀⣴⣿⣿⣿⣿⡿⠋⠀⠀⠀⠀⠀⠀⠀⠈⠻⢿⣿⣿⣿⣷⣄⠀⠀⠀⠀⠀",
|
||||||
"⠀⠀⠀⢀⣴⣿⣿⣿⣿⠟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣾⣿⣿⣿⡿⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠻⣿⣿⣿⣿⣦⡀⠀⠀⠀",
|
"⠀⠀⠀⢀⣴⣿⣿⣿⣿⠟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣾⣿⣿⣿⡿⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠻⣿⣿⣿⣿⣦⡀⠀⠀⠀",
|
||||||
"⠀⠀⢀⣾⣿⣿⣿⡿⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣾⣿⣿⣿⡿⠋⠀⠀⠀⠀⠀⠀⠀⢀⣴⣦⡀⠀⠀⠀⠀⠈⢿⣿⣿⣿⣷⡀⠀⠀",
|
"⠀⠀⢀⣾⣿⣿⣿⡿⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣾⣿⣿⣿⡿⠋⠀⠀⠀⠀⠀⠀⠀⢀⣴⣦⡀⠀⠀⠀⠀⠈⢿⣿⣿⣿⣷⡀⠀⠀",
|
||||||
"⠀⠀⣾⣿⣿⣿⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣾⣿⣿⣿⡿⠋⠀⠀⠀⠀⠀⠀⠀⢀⣴⣿⣿⣿⣿⡦⠀⠀⠀⠀⠀⢻⣿⣿⣿⣷⠀⠀",
|
"⠀⠀⣾⣿⣿⣿⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣾⣿⣿⣿⡿⠋⠀⠀⠀⠀⠀⠀⠀⢀⣴⣿⣿⣿⣿⡦⠀⠀⠀⠀⠀⢻⣿⣿⣿⣷⠀⠀",
|
||||||
"⠀⣼⣿⣿⣿⡟⠀⠀⠀⠀⠀⠀⠀⠀⣠⣾⣿⣿⣿⣿⠛⠀⠀⠀⠀⠀⠀⠀⢀⣴⣿⣿⣿⣿⡿⠋⠀⠀⠀⠀⠀⠀⠀⢻⣿⣿⣿⣧⠀",
|
"⠀⣼⣿⣿⣿⡟⠀⠀⠀⠀⠀⠀⠀⠀⣠⣾⣿⣿⣿⣿⠛⠀⠀⠀⠀⠀⠀⠀⢀⣴⣿⣿⣿⣿⡿⠋⠀⠀⠀⠀⠀⠀⠀⢻⣿⣿⣿⣧⠀",
|
||||||
"⢠⣿⣿⣿⣿⠁⠀⠀⠀⠀⠀⠀⣠⣾⣿⣿⣿⣿⠟⠁⠀⠀⠀⠀⠀⠀⢀⣴⣿⣿⣿⣿⡿⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⣿⣿⣿⣿⡄",
|
"⢠⣿⣿⣿⣿⠁⠀⠀⠀⠀⠀⠀⣠⣾⣿⣿⣿⣿⠟⠁⠀⠀⠀⠀⠀⠀⢀⣴⣿⣿⣿⣿⡿⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⣿⣿⣿⣿⡄",
|
||||||
"⢸⣿⣿⣿⡇⠀⡀⠀⠀⠀⣠⣾⣿⣿⣿⣿⠟⠁⠀⠀⠀⠀⠀⠀⠀⣴⣿⣿⣿⣿⡿⠋⠀⠀⠀⠀⠀⠀⠀⢀⣴⣿⣦⡀⢸⣿⣿⣿⡇",
|
"⢸⣿⣿⣿⡇⠀⡀⠀⠀⠀⣠⣾⣿⣿⣿⣿⠟⠁⠀⠀⠀⠀⠀⠀⠀⣴⣿⣿⣿⣿⡿⠋⠀⠀⠀⠀⠀⠀⠀⢀⣴⣿⣦⡀⢸⣿⣿⣿⡇",
|
||||||
"⣿⣿⣿⣿⡇⠀⣿⣦⣤⣾⣿⣿⣿⣿⠟⠁⠀⠀⠀⠀⠀⠀⠀⣠⣿⣿⣿⣿⡿⠋⠀⠀⠀⠀⠀⠀⠀⢀⣴⣿⣿⣿⣿⡿⢸⣿⣿⣿⣿",
|
"⣿⣿⣿⣿⡇⠀⣿⣦⣤⣾⣿⣿⣿⣿⠟⠁⠀⠀⠀⠀⠀⠀⠀⣠⣿⣿⣿⣿⡿⠋⠀⠀⠀⠀⠀⠀⠀⢀⣴⣿⣿⣿⣿⡿⢸⣿⣿⣿⣿",
|
||||||
"⣿⣿⣿⣿⠀⠀⣿⣿⣿⣿⣿⣿⠟⠁⠀⠀⠀⠀⠀⠀⠀⣠⣾⣿⣿⣿⡿⠋⠀⠀⠀⠀⠀⠀⠀⢀⣴⣿⣿⣿⣿⡿⠋⠀⠀⣿⣿⣿⣿",
|
"⣿⣿⣿⣿⠀⠀⣿⣿⣿⣿⣿⣿⠟⠁⠀⠀⠀⠀⠀⠀⠀⣠⣾⣿⣿⣿⡿⠋⠀⠀⠀⠀⠀⠀⠀⢀⣴⣿⣿⣿⣿⡿⠋⠀⠀⣿⣿⣿⣿",
|
||||||
"⣿⣿⣿⣿⡇⠀⣿⣿⣿⣿⣿⣧⡀⠀⠀⠀⠀⠀⠀⣠⣾⣿⣿⣿⣿⠋⠀⠀⠀⠀⠀⠀⠀⢀⣴⣿⣿⣿⣿⡿⠋⠀⠀⠀⢸⣿⣿⣿⣿",
|
"⣿⣿⣿⣿⡇⠀⣿⣿⣿⣿⣿⣧⡀⠀⠀⠀⠀⠀⠀⣠⣾⣿⣿⣿⣿⠋⠀⠀⠀⠀⠀⠀⠀⢀⣴⣿⣿⣿⣿⡿⠋⠀⠀⠀⢸⣿⣿⣿⣿",
|
||||||
"⢸⣿⣿⣿⡇⠀⠉⠉⠉⠉⠉⠉⠉⢠⡀⠀⠀⣠⣾⣿⣿⣿⣿⠟⠀⠀⠀⠀⠀⠀⠀⢀⣴⣿⣿⣿⣿⡿⠋⠀⠀⠀⠀⠀⢸⣿⣿⣿⡇",
|
"⢸⣿⣿⣿⡇⠀⠉⠉⠉⠉⠉⠉⠉⢠⡀⠀⠀⣠⣾⣿⣿⣿⣿⠟⠀⠀⠀⠀⠀⠀⠀⢀⣴⣿⣿⣿⣿⡿⠋⠀⠀⠀⠀⠀⢸⣿⣿⣿⡇",
|
||||||
"⠘⣿⣿⣿⣿⡀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣦⣾⣿⣿⣿⣿⠟⠁⠀⠀⠀⠀⠀⠀⢀⣴⣿⣿⣿⣿⡿⠋⠀⠀⠀⠀⠀⠀⢀⣿⣿⣿⣿⠃",
|
"⠘⣿⣿⣿⣿⡀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣦⣾⣿⣿⣿⣿⠟⠁⠀⠀⠀⠀⠀⠀⢀⣴⣿⣿⣿⣿⡿⠋⠀⠀⠀⠀⠀⠀⢀⣿⣿⣿⣿⠃",
|
||||||
"⠀⢻⣿⣿⣿⣧⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⣿⣿⣿⠟⠁⠀⠀⠀⠀⠀⠀⠀⣤⣿⣿⣿⣿⡿⠋⠀⠀⠀⠀⠀⠀⠀⠀⣼⣿⣿⣿⡟⠀",
|
"⠀⢻⣿⣿⣿⣧⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⣿⣿⣿⠟⠁⠀⠀⠀⠀⠀⠀⠀⣤⣿⣿⣿⣿⡿⠋⠀⠀⠀⠀⠀⠀⠀⠀⣼⣿⣿⣿⡟⠀",
|
||||||
"⠀⠀⢿⣿⣿⣿⣧⠀⠀⠀⠀⠀⠀⢸⣿⣿⣿⣿⣿⣦⡀⠀⠀⠀⠀⠀⣠⣾⣿⣿⣿⡿⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⣼⣿⣿⣿⡿⠀⠀",
|
"⠀⠀⢿⣿⣿⣿⣧⠀⠀⠀⠀⠀⠀⢸⣿⣿⣿⣿⣿⣦⡀⠀⠀⠀⠀⠀⣠⣾⣿⣿⣿⡿⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⣼⣿⣿⣿⡿⠀⠀",
|
||||||
"⠀⠀⠈⢿⣿⣿⣿⣷⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣦⡀⠀⣠⣾⣿⣿⣿⡿⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣾⣿⣿⣿⡿⠁⠀⠀",
|
"⠀⠀⠈⢿⣿⣿⣿⣷⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣦⡀⠀⣠⣾⣿⣿⣿⡿⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣾⣿⣿⣿⡿⠁⠀⠀",
|
||||||
"⠀⠀⠀⠈⠻⣿⣿⣿⣿⣦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⣾⣿⣿⣿⡿⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣴⣿⣿⣿⣿⠟⠁⠀⠀⠀",
|
"⠀⠀⠀⠈⠻⣿⣿⣿⣿⣦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⣾⣿⣿⣿⡿⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣴⣿⣿⣿⣿⠟⠁⠀⠀⠀",
|
||||||
"⠀⠀⠀⠀⠀⠙⢿⣿⣿⣿⣷⣦⡀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⣿⣿⣿⡟⠁⠀⠀⠀⠀⠀⠀⠀⠀⢀⣴⣾⣿⣿⣿⡿⠋⠀⠀⠀⠀⠀",
|
"⠀⠀⠀⠀⠀⠙⢿⣿⣿⣿⣷⣦⡀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⣿⣿⣿⡟⠁⠀⠀⠀⠀⠀⠀⠀⠀⢀⣴⣾⣿⣿⣿⡿⠋⠀⠀⠀⠀⠀",
|
||||||
"⠀⠀⠀⠀⠀⠀⠀⠙⢿⣿⣿⣿⣿⣷⣤⣀⠀⠀⠀⠀⠀⠿⠿⠿⠿⠿⠿⠦⠀⠀⠀⠀⠀⣀⣤⣾⣿⣿⣿⣿⡿⠋⠀⠀⠀⠀⠀⠀⠀",
|
"⠀⠀⠀⠀⠀⠀⠀⠙⢿⣿⣿⣿⣿⣷⣤⣀⠀⠀⠀⠀⠀⠿⠿⠿⠿⠿⠿⠦⠀⠀⠀⠀⠀⣀⣤⣾⣿⣿⣿⣿⡿⠋⠀⠀⠀⠀⠀⠀⠀",
|
||||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⠿⣿⣿⣿⣿⣿⣿⣶⣦⣤⣀⣀⣀⣀⣀⣀⣀⣀⣀⣤⣴⣶⣿⣿⣿⣿⣿⣿⠿⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⠿⣿⣿⣿⣿⣿⣿⣶⣦⣤⣀⣀⣀⣀⣀⣀⣀⣀⣀⣤⣴⣶⣿⣿⣿⣿⣿⣿⠿⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠙⠻⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠟⠋⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠙⠻⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠟⠋⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠉⠛⠻⠿⠿⢿⣿⣿⣿⣿⣿⡿⠿⠿⠟⠛⠉⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠉⠛⠻⠿⠿⢿⣿⣿⣿⣿⣿⡿⠿⠿⠟⠛⠉⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
},
|
},
|
||||||
[4] = {
|
[4] = {
|
||||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⡠⠤⠤⠤⠤⠤⠤⠤⠀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⡠⠤⠤⠤⠤⠤⠤⠤⠀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠤⠒⠊⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠂⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠤⠒⠊⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠂⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡤⠊⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠓⢄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡤⠊⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠓⢄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
"⠀⠀⠀⠀⠀⠀⠀⠀⢀⡴⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⢦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
"⠀⠀⠀⠀⠀⠀⠀⠀⢀⡴⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⢦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
"⠀⠀⠀⠀⠀⠀⠀⡴⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠳⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
"⠀⠀⠀⠀⠀⠀⠀⡴⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠳⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
"⠀⠀⠀⠀⠀⢀⡞⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⢦⠀⠀⠀⠀⠀⠀⠀⠀",
|
"⠀⠀⠀⠀⠀⢀⡞⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⢦⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
"⠀⠀⠀⠀⢀⡞⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢇⠀⠀⠀⠀⠀⠀⠀",
|
"⠀⠀⠀⠀⢀⡞⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢇⠀⠀⠀⠀⠀⠀⠀",
|
||||||
"⠀⠀⠀⠀⡾⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⡆⠀⠀⠀⠀⠀⠀",
|
"⠀⠀⠀⠀⡾⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⡆⠀⠀⠀⠀⠀⠀",
|
||||||
"⠀⠀⠀⢸⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢻⡀⠀⠀⠀⠀⠀",
|
"⠀⠀⠀⢸⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢻⡀⠀⠀⠀⠀⠀",
|
||||||
"⠀⠀⠀⣾⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣼⣿⣿⣿⣆⠀⠀⠀⠀⠀⠀⢀⣴⣿⣿⡇⠀⠀⠀⠀⠀",
|
"⠀⠀⠀⣾⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣼⣿⣿⣿⣆⠀⠀⠀⠀⠀⠀⢀⣴⣿⣿⡇⠀⠀⠀⠀⠀",
|
||||||
"⠀⠀⢠⣯⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠰⣿⣿⣿⣿⡿⠀⠀⠀⠀⠀⠀⢸⣿⣿⣿⣿⠀⠀⠀⠀⠀",
|
"⠀⠀⢠⣯⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠰⣿⣿⣿⣿⡿⠀⠀⠀⠀⠀⠀⢸⣿⣿⣿⣿⠀⠀⠀⠀⠀",
|
||||||
"⠀⠀⢸⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⠿⠿⠟⠁⠀⠀⠀⠀⠀⠀⠘⢿⣿⣿⣿⠀⠀⠀⠀⠀",
|
"⠀⠀⢸⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⠿⠿⠟⠁⠀⠀⠀⠀⠀⠀⠘⢿⣿⣿⣿⠀⠀⠀⠀⠀",
|
||||||
"⠀⠀⣸⣿⣆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣀⣀⣀⣀⡀⠀⠀⢉⣿⣿⠀⠀⠀⠀⠀",
|
"⠀⠀⣸⣿⣆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣀⣀⣀⣀⡀⠀⠀⢉⣿⣿⠀⠀⠀⠀⠀",
|
||||||
"⠀⠀⣿⣿⣿⣿⣶⣦⣤⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⠻⠿⠿⠿⠟⠀⠀⣼⣿⡏⠀⠀⠀⠀⠀",
|
"⠀⠀⣿⣿⣿⣿⣶⣦⣤⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⠻⠿⠿⠿⠟⠀⠀⣼⣿⡏⠀⠀⠀⠀⠀",
|
||||||
"⠀⠀⠈⢻⣿⣿⣿⣿⣿⣿⣿⣿⣷⣶⣤⣤⣀⡀⠀⠀⢀⣀⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⡀⢀⣴⣿⣿⡇⠀⠀⠀⠀⠀",
|
"⠀⠀⠈⢻⣿⣿⣿⣿⣿⣿⣿⣿⣷⣶⣤⣤⣀⡀⠀⠀⢀⣀⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⡀⢀⣴⣿⣿⡇⠀⠀⠀⠀⠀",
|
||||||
"⠀⠀⠀⠘⣿⣿⣿⣯⡉⠙⠛⠻⠿⢿⣿⣿⣿⣿⣿⣶⣿⣿⣿⣿⣶⣦⣄⣀⡀⠀⠀⠀⣀⣀⣠⣤⣾⣿⣿⣿⣿⣿⡟⠁⠀⠀⠀⠀⠀",
|
"⠀⠀⠀⠘⣿⣿⣿⣯⡉⠙⠛⠻⠿⢿⣿⣿⣿⣿⣿⣶⣿⣿⣿⣿⣶⣦⣄⣀⡀⠀⠀⠀⣀⣀⣠⣤⣾⣿⣿⣿⣿⣿⡟⠁⠀⠀⠀⠀⠀",
|
||||||
"⠀⠀⠀⠀⠸⣿⣿⣿⣷⣤⠀⠀⠀⠀⠀⠉⠙⠛⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡟⠀⠀⠀⠀⠀⠀⠀",
|
"⠀⠀⠀⠀⠸⣿⣿⣿⣷⣤⠀⠀⠀⠀⠀⠉⠙⠛⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡟⠀⠀⠀⠀⠀⠀⠀",
|
||||||
"⠀⠀⠀⠀⠀⠙⣿⣿⣿⣿⣿⣶⣀⠀⠀⠀⠀⠀⠈⠛⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡟⠀⠀⠀⠀⠀⠀⠀⠀",
|
"⠀⠀⠀⠀⠀⠙⣿⣿⣿⣿⣿⣶⣀⠀⠀⠀⠀⠀⠈⠛⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡟⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||||
"⠀⠀⠀⠀⠀⠀⠘⢿⣿⣿⣿⣿⣿⣿⣶⣶⣤⣄⠀⢀⠀⠉⢿⣿⣿⣿⣿⣿⣿⣿⣿⠉⠀⠈⠙⠛⠻⠿⠿⠿⠀⢀⣠⣴⣶⣦⡀⠀⠀",
|
"⠀⠀⠀⠀⠀⠀⠘⢿⣿⣿⣿⣿⣿⣿⣶⣶⣤⣄⠀⢀⠀⠉⢿⣿⣿⣿⣿⣿⣿⣿⣿⠉⠀⠈⠙⠛⠻⠿⠿⠿⠀⢀⣠⣴⣶⣦⡀⠀⠀",
|
||||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠙⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣶⣾⣿⣿⣿⣿⣿⣿⣿⣷⡀⢀⠀⠀⠀⠀⠀⠀⡀⢠⣿⠟⠉⠀⠀⠁⣀⡀",
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠙⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣶⣾⣿⣿⣿⣿⣿⣿⣿⣷⡀⢀⠀⠀⠀⠀⠀⠀⡀⢠⣿⠟⠉⠀⠀⠁⣀⡀",
|
||||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣾⣷⣤⣦⣀⣤⣿⣿⣿⡀⠀⢀⣠⣾⣿⣿",
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣾⣷⣤⣦⣀⣤⣿⣿⣿⡀⠀⢀⣠⣾⣿⣿",
|
||||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠛⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠿⠿⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⠃",
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠛⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠿⠿⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⠃",
|
||||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠙⠛⠻⠿⠿⠿⣿⡿⠿⠿⠿⠛⠉⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠉⠉⠉⠉⠀⠀⠀",
|
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠙⠛⠻⠿⠿⠿⣿⡿⠿⠿⠿⠛⠉⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠉⠉⠉⠉⠀⠀⠀",
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
dashboard.section.header.val = banners[1]
|
dashboard.section.header.val = banners[1]
|
||||||
|
|
||||||
dashboard.section.buttons.val = {
|
dashboard.section.buttons.val = {
|
||||||
dashboard.button("n", icons.File .. " New file", "<Cmd>ene<CR>"),
|
dashboard.button("n", icons.File .. " New file", "<Cmd>ene<CR>"),
|
||||||
dashboard.button("f", icons.Search .. " Find file", "<Cmd>lua require('telescope.builtin').find_files()<CR>"),
|
dashboard.button("f", icons.Search .. " Find file", "<Cmd>lua require('telescope.builtin').find_files()<CR>"),
|
||||||
dashboard.button(
|
dashboard.button(
|
||||||
"e",
|
"e",
|
||||||
icons.FileTree .. " Browse files",
|
icons.FileTree .. " Browse files",
|
||||||
"<Cmd>lua require('taolf').start({ dir = 'gwd' })<CR>"
|
"<Cmd>lua require('taolf').start({ dir = 'gwd' })<CR>"
|
||||||
),
|
),
|
||||||
dashboard.button(
|
dashboard.button(
|
||||||
"t",
|
"t",
|
||||||
icons.Task .. " Find todo",
|
icons.Task .. " Find todo",
|
||||||
"<Cmd>:lua require('telescope').extensions['todo-comments'].todo()<CR>"
|
"<Cmd>:lua require('telescope').extensions['todo-comments'].todo()<CR>"
|
||||||
),
|
),
|
||||||
dashboard.button("q", icons.Leave .. " Quit", "<Cmd>qa<CR>"),
|
dashboard.button("q", icons.Leave .. " Quit", "<Cmd>qa<CR>"),
|
||||||
}
|
}
|
||||||
|
|
||||||
dashboard.section.footer.val = "Behold: a Snail's Vim"
|
dashboard.section.footer.val = "Behold: a Snail's Vim"
|
||||||
|
|
||||||
dashboard.config.layout = {
|
dashboard.config.layout = {
|
||||||
{ type = "padding", val = vim.fn.max({ 2, vim.fn.floor(vim.fn.winheight(0) * 0.2) }) },
|
{ type = "padding", val = vim.fn.max({ 2, vim.fn.floor(vim.fn.winheight(0) * 0.2) }) },
|
||||||
dashboard.section.header,
|
dashboard.section.header,
|
||||||
{ type = "padding", val = 5 },
|
{ type = "padding", val = 5 },
|
||||||
dashboard.section.buttons,
|
dashboard.section.buttons,
|
||||||
{ type = "padding", val = 3 },
|
{ type = "padding", val = 3 },
|
||||||
dashboard.section.footer,
|
dashboard.section.footer,
|
||||||
}
|
}
|
||||||
|
|
||||||
dashboard.config.opts.noautocmd = true
|
dashboard.config.opts.noautocmd = true
|
||||||
|
|
||||||
return dashboard
|
return dashboard
|
||||||
end
|
end
|
||||||
|
|
||||||
M.config = function(_, opts)
|
M.config = function(_, opts)
|
||||||
require("alpha").setup(opts.config)
|
require("alpha").setup(opts.config)
|
||||||
|
|
||||||
vim.api.nvim_create_autocmd("User", {
|
vim.api.nvim_create_autocmd("User", {
|
||||||
pattern = "LazyVimStarted",
|
pattern = "LazyVimStarted",
|
||||||
desc = "Add Alpha dashboard footer",
|
desc = "Add Alpha dashboard footer",
|
||||||
once = true,
|
once = true,
|
||||||
callback = function()
|
callback = function()
|
||||||
local stats = require("lazy").stats()
|
local stats = require("lazy").stats()
|
||||||
local ms = math.floor(stats.startuptime * 100 + 0.5) / 100
|
local ms = math.floor(stats.startuptime * 100 + 0.5) / 100
|
||||||
opts.section.footer.val = { "Behold: a Snail's Vim | " .. stats.count .. " " .. ms .. "ms" }
|
opts.section.footer.val = { "Behold: a Snail's Vim | " .. stats.count .. " " .. ms .. "ms" }
|
||||||
pcall(vim.cmd.AlphaRedraw)
|
pcall(vim.cmd.AlphaRedraw)
|
||||||
end,
|
end,
|
||||||
})
|
})
|
||||||
end
|
end
|
||||||
|
|
||||||
return M
|
return M
|
||||||
|
|
|
@ -3,13 +3,13 @@ local M = { "windwp/nvim-autopairs" }
|
||||||
M.event = { "BufReadPost", "BufNewFile", "BufNew" }
|
M.event = { "BufReadPost", "BufNewFile", "BufNew" }
|
||||||
|
|
||||||
M.opts = {
|
M.opts = {
|
||||||
check_ts = true,
|
check_ts = true,
|
||||||
disable_filetype = { "TelescopePrompt", "vim" },
|
disable_filetype = { "TelescopePrompt", "vim" },
|
||||||
ts_config = {
|
ts_config = {
|
||||||
lua = { "string", "source" },
|
lua = { "string", "source" },
|
||||||
javascript = { "string", "template_string" },
|
javascript = { "string", "template_string" },
|
||||||
java = false,
|
java = false,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
return M
|
return M
|
||||||
|
|
|
@ -3,56 +3,56 @@ local M = { "akinsho/bufferline.nvim" }
|
||||||
M.event = { "BufReadPost", "BufNewFile", "BufNew" }
|
M.event = { "BufReadPost", "BufNewFile", "BufNew" }
|
||||||
|
|
||||||
M.opts = function()
|
M.opts = function()
|
||||||
local icons = require("config.icons")
|
local icons = require("config.icons")
|
||||||
|
|
||||||
local function diagnostics_indicator(_, _, diagnostics, _)
|
local function diagnostics_indicator(_, _, diagnostics, _)
|
||||||
local result = {}
|
local result = {}
|
||||||
local symbols = {
|
local symbols = {
|
||||||
error = icons.Error,
|
error = icons.Error,
|
||||||
warning = icons.Warn,
|
warning = icons.Warn,
|
||||||
info = icons.Info,
|
info = icons.Info,
|
||||||
}
|
}
|
||||||
for name, count in pairs(diagnostics) do
|
for name, count in pairs(diagnostics) do
|
||||||
if symbols[name] and count > 0 then
|
if symbols[name] and count > 0 then
|
||||||
table.insert(result, symbols[name] .. " " .. count)
|
table.insert(result, symbols[name] .. " " .. count)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
local result_str = table.concat(result, " ")
|
local result_str = table.concat(result, " ")
|
||||||
return #result_str > 0 and result_str or ""
|
return #result_str > 0 and result_str or ""
|
||||||
end
|
end
|
||||||
|
|
||||||
local config = {
|
local config = {
|
||||||
highlights = {
|
highlights = {
|
||||||
background = {
|
background = {
|
||||||
italic = true,
|
italic = true,
|
||||||
bold = false,
|
bold = false,
|
||||||
},
|
},
|
||||||
buffer_selected = {
|
buffer_selected = {
|
||||||
italic = false,
|
italic = false,
|
||||||
bold = true,
|
bold = true,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
options = {
|
options = {
|
||||||
indicator = {
|
indicator = {
|
||||||
style = "none",
|
style = "none",
|
||||||
},
|
},
|
||||||
buffer_close_icon = icons.Close,
|
buffer_close_icon = icons.Close,
|
||||||
modified_icon = icons.Modified,
|
modified_icon = icons.Modified,
|
||||||
close_icon = icons.Close,
|
close_icon = icons.Close,
|
||||||
left_trunc_marker = icons.Truncate,
|
left_trunc_marker = icons.Truncate,
|
||||||
right_trunc_marker = icons.Truncate,
|
right_trunc_marker = icons.Truncate,
|
||||||
diagnostics = "nvim_lsp",
|
diagnostics = "nvim_lsp",
|
||||||
diagnostics_indicator = diagnostics_indicator,
|
diagnostics_indicator = diagnostics_indicator,
|
||||||
offsets = {},
|
offsets = {},
|
||||||
show_buffer_close_icons = false,
|
show_buffer_close_icons = false,
|
||||||
show_close_icon = false,
|
show_close_icon = false,
|
||||||
separator_style = { "", "" },
|
separator_style = { "", "" },
|
||||||
move_wraps_at_ends = true,
|
move_wraps_at_ends = true,
|
||||||
always_show_bufferline = false,
|
always_show_bufferline = false,
|
||||||
sort_by = "id",
|
sort_by = "id",
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
return config
|
return config
|
||||||
end
|
end
|
||||||
|
|
||||||
return M
|
return M
|
||||||
|
|
|
@ -3,10 +3,10 @@ local M = { "numToStr/Comment.nvim" }
|
||||||
M.event = { "BufReadPost", "BufNewFile", "BufNew" }
|
M.event = { "BufReadPost", "BufNewFile", "BufNew" }
|
||||||
|
|
||||||
M.opts = {
|
M.opts = {
|
||||||
mappings = {
|
mappings = {
|
||||||
basic = false,
|
basic = false,
|
||||||
extra = false,
|
extra = false,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
return M
|
return M
|
||||||
|
|
|
@ -5,14 +5,14 @@ M.event = { "BufReadPost", "BufNewFile", "BufNew" }
|
||||||
local icons = require("config.icons")
|
local icons = require("config.icons")
|
||||||
|
|
||||||
M.opts = {
|
M.opts = {
|
||||||
signs = {
|
signs = {
|
||||||
add = { text = icons.Added },
|
add = { text = icons.Added },
|
||||||
change = { text = icons.Modified },
|
change = { text = icons.Modified },
|
||||||
delete = { text = icons.Removed },
|
delete = { text = icons.Removed },
|
||||||
topdelete = { text = icons.Removed },
|
topdelete = { text = icons.Removed },
|
||||||
changedelete = { text = icons.ChangeDelete },
|
changedelete = { text = icons.ChangeDelete },
|
||||||
untracked = { text = icons.Untracked },
|
untracked = { text = icons.Untracked },
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
return M
|
return M
|
||||||
|
|
|
@ -5,31 +5,31 @@ M.main = "ibl"
|
||||||
M.event = { "BufReadPost", "BufNewFile", "BufNew" }
|
M.event = { "BufReadPost", "BufNewFile", "BufNew" }
|
||||||
|
|
||||||
M.dependencies = {
|
M.dependencies = {
|
||||||
"nvim-treesitter",
|
"nvim-treesitter",
|
||||||
}
|
}
|
||||||
|
|
||||||
M.opts = {
|
M.opts = {
|
||||||
indent = {
|
indent = {
|
||||||
char = "▏",
|
char = "▏",
|
||||||
tab_char = "▏",
|
tab_char = "▏",
|
||||||
},
|
},
|
||||||
scope = {
|
scope = {
|
||||||
char = "▎",
|
char = "▎",
|
||||||
enabled = true,
|
enabled = true,
|
||||||
show_start = false,
|
show_start = true,
|
||||||
show_end = false,
|
show_end = true,
|
||||||
},
|
},
|
||||||
exclude = {
|
exclude = {
|
||||||
filetypes = {
|
filetypes = {
|
||||||
"help",
|
"help",
|
||||||
"packer",
|
"packer",
|
||||||
"NvimTree",
|
"NvimTree",
|
||||||
},
|
},
|
||||||
buftypes = {
|
buftypes = {
|
||||||
"terminal",
|
"terminal",
|
||||||
"nofile",
|
"nofile",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
return M
|
return M
|
||||||
|
|
|
@ -1,30 +1,30 @@
|
||||||
return {
|
return {
|
||||||
{ "nvim-lua/plenary.nvim", lazy = true },
|
{ "nvim-lua/plenary.nvim", lazy = true },
|
||||||
{ "kyazdani42/nvim-web-devicons", lazy = true },
|
{ "kyazdani42/nvim-web-devicons", lazy = true },
|
||||||
{ "zk-org/zk-nvim", opts = { picker = "telescope" }, main = "zk" },
|
{ "zk-org/zk-nvim", opts = { picker = "telescope" }, main = "zk" },
|
||||||
{ "NMAC427/guess-indent.nvim" },
|
{ "NMAC427/guess-indent.nvim" },
|
||||||
{ "JoosepAlviste/nvim-ts-context-commentstring" },
|
{ "JoosepAlviste/nvim-ts-context-commentstring" },
|
||||||
require("plugins.misc.alpha"),
|
require("plugins.misc.alpha"),
|
||||||
require("plugins.misc.autopairs"),
|
require("plugins.misc.autopairs"),
|
||||||
require("plugins.misc.bufferline"),
|
require("plugins.misc.bufferline"),
|
||||||
require("plugins.misc.colorizer"),
|
require("plugins.misc.colorizer"),
|
||||||
require("plugins.misc.comment"),
|
require("plugins.misc.comment"),
|
||||||
require("plugins.misc.gitsigns"),
|
require("plugins.misc.gitsigns"),
|
||||||
require("plugins.misc.indent-blankline"),
|
require("plugins.misc.indent-blankline"),
|
||||||
require("plugins.misc.taolf"),
|
require("plugins.misc.taolf"),
|
||||||
require("plugins.misc.lspkind"),
|
require("plugins.misc.lspkind"),
|
||||||
require("plugins.misc.lualine"),
|
require("plugins.misc.lualine"),
|
||||||
require("plugins.misc.mason"),
|
require("plugins.misc.mason"),
|
||||||
require("plugins.misc.rustacean"),
|
require("plugins.misc.rustacean"),
|
||||||
require("plugins.misc.surround"),
|
require("plugins.misc.surround"),
|
||||||
require("plugins.misc.telescope"),
|
require("plugins.misc.telescope"),
|
||||||
require("plugins.misc.telescope-fzf-native"),
|
require("plugins.misc.telescope-fzf-native"),
|
||||||
require("plugins.misc.todo-comments"),
|
require("plugins.misc.todo-comments"),
|
||||||
require("plugins.misc.toggleterm"),
|
require("plugins.misc.toggleterm"),
|
||||||
require("plugins.misc.tokyonight"),
|
require("plugins.misc.tokyonight"),
|
||||||
require("plugins.misc.treesitter"),
|
require("plugins.misc.treesitter"),
|
||||||
require("plugins.misc.ufo"),
|
require("plugins.misc.ufo"),
|
||||||
require("plugins.misc.vimtex"),
|
require("plugins.misc.vimtex"),
|
||||||
require("plugins.misc.which-key"),
|
require("plugins.misc.which-key"),
|
||||||
-- require("plugins.misc.tabnine"),
|
-- require("plugins.misc.tabnine"),
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,13 +3,13 @@ local M = { "onsails/lspkind.nvim" }
|
||||||
M.lazy = true
|
M.lazy = true
|
||||||
|
|
||||||
M.opts = {
|
M.opts = {
|
||||||
mode = "symbol",
|
mode = "symbol",
|
||||||
symbol_map = require("config.icons").lspkind,
|
symbol_map = require("config.icons").lspkind,
|
||||||
menu = {},
|
menu = {},
|
||||||
}
|
}
|
||||||
|
|
||||||
M.config = function(_, opts)
|
M.config = function(_, opts)
|
||||||
require("lspkind").init(opts)
|
require("lspkind").init(opts)
|
||||||
end
|
end
|
||||||
|
|
||||||
return M
|
return M
|
||||||
|
|
|
@ -1,217 +1,217 @@
|
||||||
local M = { "nvim-lualine/lualine.nvim" }
|
local M = { "nvim-lualine/lualine.nvim" }
|
||||||
|
|
||||||
M.opts = function()
|
M.opts = function()
|
||||||
local colors = require("tokyonight.colors").setup({ transform = true })
|
local colors = require("tokyonight.colors").setup({ transform = true })
|
||||||
local icons = require("config.icons")
|
local icons = require("config.icons")
|
||||||
local conditions = {
|
local conditions = {
|
||||||
buffer_not_empty = function()
|
buffer_not_empty = function()
|
||||||
return vim.fn.empty(vim.fn.expand("%:t")) ~= 1
|
return vim.fn.empty(vim.fn.expand("%:t")) ~= 1
|
||||||
end,
|
end,
|
||||||
hide_in_width = function()
|
hide_in_width = function()
|
||||||
return vim.fn.winwidth(0) > 80
|
return vim.fn.winwidth(0) > 80
|
||||||
end,
|
end,
|
||||||
check_git_workspace = function()
|
check_git_workspace = function()
|
||||||
local filepath = vim.fn.expand("%:p:h")
|
local filepath = vim.fn.expand("%:p:h")
|
||||||
local gitdir = vim.fn.finddir(".git", filepath .. ";")
|
local gitdir = vim.fn.finddir(".git", filepath .. ";")
|
||||||
return gitdir and #gitdir > 0 and #gitdir < #filepath
|
return gitdir and #gitdir > 0 and #gitdir < #filepath
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
|
|
||||||
-- local function search_result()
|
-- local function search_result()
|
||||||
-- if vim.v.hlsearch == 0 then
|
-- if vim.v.hlsearch == 0 then
|
||||||
-- return ""
|
-- return ""
|
||||||
-- end
|
-- end
|
||||||
-- local last_search = vim.fn.getreg("/")
|
-- local last_search = vim.fn.getreg("/")
|
||||||
-- if not last_search or last_search == "" then
|
-- if not last_search or last_search == "" then
|
||||||
-- return ""
|
-- return ""
|
||||||
-- end
|
-- end
|
||||||
-- local searchcount = vim.fn.searchcount({ maxcount = 9999 })
|
-- local searchcount = vim.fn.searchcount({ maxcount = 9999 })
|
||||||
-- return last_search .. "(" .. searchcount.current .. "/" .. searchcount.total .. ")"
|
-- return last_search .. "(" .. searchcount.current .. "/" .. searchcount.total .. ")"
|
||||||
-- end
|
-- end
|
||||||
|
|
||||||
local config = {
|
local config = {
|
||||||
options = {
|
options = {
|
||||||
component_separators = "",
|
component_separators = "",
|
||||||
section_separators = "",
|
section_separators = "",
|
||||||
-- theme = {
|
-- theme = {
|
||||||
-- normal = { c = { fg = colors.fg, bg = colors.bg } },
|
-- normal = { c = { fg = colors.fg, bg = colors.bg } },
|
||||||
-- inactive = { c = { fg = colors.fg, bg = colors.bg } },
|
-- inactive = { c = { fg = colors.fg, bg = colors.bg } },
|
||||||
-- },
|
-- },
|
||||||
disabled_filetypes = {
|
disabled_filetypes = {
|
||||||
statusline = { "alpha" },
|
statusline = { "alpha" },
|
||||||
},
|
},
|
||||||
ignore_focus = { "toggleterm", "NvimTree" },
|
ignore_focus = { "toggleterm", "NvimTree" },
|
||||||
globalstatus = true,
|
globalstatus = true,
|
||||||
},
|
},
|
||||||
sections = {
|
sections = {
|
||||||
lualine_a = {},
|
lualine_a = {},
|
||||||
lualine_b = {},
|
lualine_b = {},
|
||||||
lualine_y = {},
|
lualine_y = {},
|
||||||
lualine_z = {},
|
lualine_z = {},
|
||||||
lualine_c = {},
|
lualine_c = {},
|
||||||
lualine_x = {},
|
lualine_x = {},
|
||||||
},
|
},
|
||||||
inactive_sections = {
|
inactive_sections = {
|
||||||
lualine_a = {},
|
lualine_a = {},
|
||||||
lualine_b = {},
|
lualine_b = {},
|
||||||
lualine_y = {},
|
lualine_y = {},
|
||||||
lualine_z = {},
|
lualine_z = {},
|
||||||
lualine_c = {},
|
lualine_c = {},
|
||||||
lualine_x = {},
|
lualine_x = {},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
local function ins_left(component)
|
local function ins_left(component)
|
||||||
table.insert(config.sections.lualine_c, component)
|
table.insert(config.sections.lualine_c, component)
|
||||||
end
|
end
|
||||||
|
|
||||||
local function ins_right(component)
|
local function ins_right(component)
|
||||||
table.insert(config.sections.lualine_x, component)
|
table.insert(config.sections.lualine_x, component)
|
||||||
end
|
end
|
||||||
|
|
||||||
local function mode_color()
|
local function mode_color()
|
||||||
local color = {
|
local color = {
|
||||||
n = colors.red,
|
n = colors.red,
|
||||||
i = colors.green,
|
i = colors.green,
|
||||||
v = colors.magenta,
|
v = colors.magenta,
|
||||||
[string.char(22)] = colors.magenta,
|
[string.char(22)] = colors.magenta,
|
||||||
V = colors.magenta,
|
V = colors.magenta,
|
||||||
c = colors.blue,
|
c = colors.blue,
|
||||||
no = colors.red,
|
no = colors.red,
|
||||||
s = colors.orange,
|
s = colors.orange,
|
||||||
S = colors.orange,
|
S = colors.orange,
|
||||||
[string.char(19)] = colors.orange,
|
[string.char(19)] = colors.orange,
|
||||||
ic = colors.yellow,
|
ic = colors.yellow,
|
||||||
R = colors.purple,
|
R = colors.purple,
|
||||||
Rv = colors.purple,
|
Rv = colors.purple,
|
||||||
cv = colors.red,
|
cv = colors.red,
|
||||||
ce = colors.red,
|
ce = colors.red,
|
||||||
r = colors.cyan,
|
r = colors.cyan,
|
||||||
rm = colors.cyan,
|
rm = colors.cyan,
|
||||||
["r?"] = colors.cyan,
|
["r?"] = colors.cyan,
|
||||||
["!"] = colors.red,
|
["!"] = colors.red,
|
||||||
t = colors.red,
|
t = colors.red,
|
||||||
}
|
}
|
||||||
return { fg = color[vim.fn.mode()] }
|
return { fg = color[vim.fn.mode()] }
|
||||||
end
|
end
|
||||||
|
|
||||||
ins_left({
|
ins_left({
|
||||||
function()
|
function()
|
||||||
return "▊"
|
return "▊"
|
||||||
end,
|
end,
|
||||||
color = function()
|
color = function()
|
||||||
return mode_color()
|
return mode_color()
|
||||||
end,
|
end,
|
||||||
padding = { right = 1 },
|
padding = { right = 1 },
|
||||||
})
|
})
|
||||||
|
|
||||||
ins_left({
|
ins_left({
|
||||||
"filename",
|
"filename",
|
||||||
cond = conditions.buffer_not_empty,
|
cond = conditions.buffer_not_empty,
|
||||||
color = { fg = colors.magenta, gui = "bold" },
|
color = { fg = colors.magenta, gui = "bold" },
|
||||||
})
|
})
|
||||||
|
|
||||||
ins_left({
|
ins_left({
|
||||||
"fileformat",
|
"fileformat",
|
||||||
fmt = string.upper,
|
fmt = string.upper,
|
||||||
icons_enabled = false,
|
icons_enabled = false,
|
||||||
color = { fg = colors.green },
|
color = { fg = colors.green },
|
||||||
})
|
})
|
||||||
|
|
||||||
ins_left({
|
ins_left({
|
||||||
"o:encoding",
|
"o:encoding",
|
||||||
fmt = string.upper,
|
fmt = string.upper,
|
||||||
cond = conditions.hide_in_width,
|
cond = conditions.hide_in_width,
|
||||||
color = { fg = colors.green },
|
color = { fg = colors.green },
|
||||||
})
|
})
|
||||||
|
|
||||||
ins_left({
|
ins_left({
|
||||||
"filesize",
|
"filesize",
|
||||||
fmt = string.upper,
|
fmt = string.upper,
|
||||||
icons_enabled = false,
|
icons_enabled = false,
|
||||||
color = { fg = colors.green },
|
color = { fg = colors.green },
|
||||||
})
|
})
|
||||||
|
|
||||||
ins_left({
|
ins_left({
|
||||||
"%04l:%04c",
|
"%04l:%04c",
|
||||||
})
|
})
|
||||||
|
|
||||||
-- NOTE: My beloved :(
|
-- NOTE: My beloved :(
|
||||||
|
|
||||||
-- ins_left {
|
-- ins_left {
|
||||||
-- function()
|
-- function()
|
||||||
-- local current_line = vim.fn.line "."
|
-- local current_line = vim.fn.line "."
|
||||||
-- local total_lines = vim.fn.line "$"
|
-- local total_lines = vim.fn.line "$"
|
||||||
-- local chars = icons.progress
|
-- local chars = icons.progress
|
||||||
-- local line_ratio = current_line / total_lines
|
-- local line_ratio = current_line / total_lines
|
||||||
-- local index = math.ceil(line_ratio * #chars)
|
-- local index = math.ceil(line_ratio * #chars)
|
||||||
-- return chars[index]
|
-- return chars[index]
|
||||||
-- end,
|
-- end,
|
||||||
-- color = { fg = colors.yellow }
|
-- color = { fg = colors.yellow }
|
||||||
-- }
|
-- }
|
||||||
|
|
||||||
-- ins_right({
|
-- ins_right({
|
||||||
-- search_result,
|
-- search_result,
|
||||||
-- color = { fg = colors.fg },
|
-- color = { fg = colors.fg },
|
||||||
-- padding = { left = 1 },
|
-- padding = { left = 1 },
|
||||||
-- })
|
-- })
|
||||||
|
|
||||||
-- ins_right({
|
-- ins_right({
|
||||||
-- 'tabnine',
|
-- 'tabnine',
|
||||||
-- color = { fg = colors.green1, gui = "bold" },
|
-- color = { fg = colors.green1, gui = "bold" },
|
||||||
-- })
|
-- })
|
||||||
|
|
||||||
ins_right({
|
ins_right({
|
||||||
function()
|
function()
|
||||||
local msg = ""
|
local msg = ""
|
||||||
local buf_ft = vim.api.nvim_buf_get_option(0, "filetype")
|
local buf_ft = vim.api.nvim_buf_get_option(0, "filetype")
|
||||||
local clients = vim.lsp.get_active_clients()
|
local clients = vim.lsp.get_active_clients()
|
||||||
if next(clients) == nil then
|
if next(clients) == nil then
|
||||||
return "No LSP"
|
return "No LSP"
|
||||||
end
|
end
|
||||||
for _, client in ipairs(clients) do
|
for _, client in ipairs(clients) do
|
||||||
local filetypes = client.config.filetypes
|
local filetypes = client.config.filetypes
|
||||||
if filetypes and vim.fn.index(filetypes, buf_ft) ~= -1 then
|
if filetypes and vim.fn.index(filetypes, buf_ft) ~= -1 then
|
||||||
msg = msg .. ", " .. client.name
|
msg = msg .. ", " .. client.name
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
return msg:sub(3)
|
return msg:sub(3)
|
||||||
end,
|
end,
|
||||||
color = { fg = colors.green2, gui = "bold" },
|
color = { fg = colors.green2, gui = "bold" },
|
||||||
})
|
})
|
||||||
|
|
||||||
ins_right({
|
ins_right({
|
||||||
"diagnostics",
|
"diagnostics",
|
||||||
sources = { "nvim_diagnostic" },
|
sources = { "nvim_diagnostic" },
|
||||||
symbols = {
|
symbols = {
|
||||||
error = icons.Error .. " ",
|
error = icons.Error .. " ",
|
||||||
warn = icons.Warn .. " ",
|
warn = icons.Warn .. " ",
|
||||||
info = icons.Info .. " ",
|
info = icons.Info .. " ",
|
||||||
},
|
},
|
||||||
diagnostics_color = {
|
diagnostics_color = {
|
||||||
color_error = { fg = colors.red },
|
color_error = { fg = colors.red },
|
||||||
color_warn = { fg = colors.yellow },
|
color_warn = { fg = colors.yellow },
|
||||||
color_info = { fg = colors.cyan },
|
color_info = { fg = colors.cyan },
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
ins_right({
|
ins_right({
|
||||||
"filetype",
|
"filetype",
|
||||||
color = { fg = colors.green, gui = "bold" },
|
color = { fg = colors.green, gui = "bold" },
|
||||||
padding = { left = 1 },
|
padding = { left = 1 },
|
||||||
})
|
})
|
||||||
|
|
||||||
ins_right({
|
ins_right({
|
||||||
function()
|
function()
|
||||||
return "▊"
|
return "▊"
|
||||||
end,
|
end,
|
||||||
color = function()
|
color = function()
|
||||||
return mode_color()
|
return mode_color()
|
||||||
end,
|
end,
|
||||||
padding = { left = 1 },
|
padding = { left = 1 },
|
||||||
})
|
})
|
||||||
|
|
||||||
return config
|
return config
|
||||||
end
|
end
|
||||||
|
|
||||||
return M
|
return M
|
||||||
|
|
|
@ -3,27 +3,27 @@ local M = { "williamboman/mason.nvim" }
|
||||||
local icons = require("config.icons")
|
local icons = require("config.icons")
|
||||||
|
|
||||||
M.cmd = {
|
M.cmd = {
|
||||||
"Mason",
|
"Mason",
|
||||||
"MasonInstall",
|
"MasonInstall",
|
||||||
"MasonUninstall",
|
"MasonUninstall",
|
||||||
"MasonUninstallAll",
|
"MasonUninstallAll",
|
||||||
"MasonLog",
|
"MasonLog",
|
||||||
"MasonUpdate",
|
"MasonUpdate",
|
||||||
}
|
}
|
||||||
|
|
||||||
M.build = ":MasonUpdate"
|
M.build = ":MasonUpdate"
|
||||||
|
|
||||||
M.opts = {
|
M.opts = {
|
||||||
ui = {
|
ui = {
|
||||||
border = "none",
|
border = "none",
|
||||||
icons = {
|
icons = {
|
||||||
package_installed = icons.True,
|
package_installed = icons.True,
|
||||||
package_pending = icons.Pending,
|
package_pending = icons.Pending,
|
||||||
package_uninstalled = icons.False,
|
package_uninstalled = icons.False,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
log_level = vim.log.levels.INFO,
|
log_level = vim.log.levels.INFO,
|
||||||
max_concurrent_installers = 4,
|
max_concurrent_installers = 4,
|
||||||
}
|
}
|
||||||
|
|
||||||
return M
|
return M
|
||||||
|
|
|
@ -5,20 +5,20 @@ M.build = ":MasonInstall codelldb"
|
||||||
M.ft = { "rust" }
|
M.ft = { "rust" }
|
||||||
|
|
||||||
M.init = function()
|
M.init = function()
|
||||||
local extension_path = os.getenv("XDG_DATA_HOME") .. "/nvim/mason/packages/codelldb/extension/"
|
local extension_path = os.getenv("XDG_DATA_HOME") .. "/nvim/mason/packages/codelldb/extension/"
|
||||||
local codelldb_path = extension_path .. "apapter/codelldb"
|
local codelldb_path = extension_path .. "apapter/codelldb"
|
||||||
local liblldb_path = extension_path .. "lldb/lib/liblldb.so"
|
local liblldb_path = extension_path .. "lldb/lib/liblldb.so"
|
||||||
local adapter = require("rustaceanvim.config").get_codelldb_adapter(codelldb_path, liblldb_path)
|
local adapter = require("rustaceanvim.config").get_codelldb_adapter(codelldb_path, liblldb_path)
|
||||||
vim.g.rustaceanvim = function()
|
vim.g.rustaceanvim = function()
|
||||||
return {
|
return {
|
||||||
dap = {
|
dap = {
|
||||||
adapter = adapter,
|
adapter = adapter,
|
||||||
},
|
},
|
||||||
server = {
|
server = {
|
||||||
on_attach = require("funcs").lsp_on_attach,
|
on_attach = require("funcs").lsp_on_attach,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
return M
|
return M
|
||||||
|
|
|
@ -3,19 +3,19 @@ local M = { "kylechui/nvim-surround" }
|
||||||
M.event = "VeryLazy"
|
M.event = "VeryLazy"
|
||||||
|
|
||||||
M.opts = {
|
M.opts = {
|
||||||
keymaps = require("config.keymaps").surround,
|
keymaps = require("config.keymaps").surround,
|
||||||
surrounds = {
|
surrounds = {
|
||||||
["B"] = {
|
["B"] = {
|
||||||
add = { "{{ ", " }}" },
|
add = { "{{ ", " }}" },
|
||||||
find = function()
|
find = function()
|
||||||
return require("nvim-surround.config").get_selection({ pattern = "{{ .- }}" })
|
return require("nvim-surround.config").get_selection({ pattern = "{{ .- }}" })
|
||||||
end,
|
end,
|
||||||
delete = "^(.. ?)().-( ?..)()$",
|
delete = "^(.. ?)().-( ?..)()$",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
aliases = {
|
aliases = {
|
||||||
["B"] = false,
|
["B"] = false,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
return M
|
return M
|
||||||
|
|
|
@ -7,16 +7,16 @@ M.event = { "BufReadPost", "BufNewFile", "BufNew" }
|
||||||
M.main = "tabnine"
|
M.main = "tabnine"
|
||||||
|
|
||||||
M.opts = function()
|
M.opts = function()
|
||||||
local colors = require("tokyonight.colors").setup({ transform = true })
|
local colors = require("tokyonight.colors").setup({ transform = true })
|
||||||
return {
|
return {
|
||||||
disable_auto_comment = true,
|
disable_auto_comment = true,
|
||||||
accept_keymap = "<Tab>",
|
accept_keymap = "<Tab>",
|
||||||
dismiss_keymap = "<C-]>",
|
dismiss_keymap = "<C-]>",
|
||||||
debounce_ms = 800,
|
debounce_ms = 800,
|
||||||
suggestion_color = { gui = colors.fg_gutter, cterm = 244 },
|
suggestion_color = { gui = colors.fg_gutter, cterm = 244 },
|
||||||
exclude_filetypes = { "TelescopePrompt", "NvimTree" },
|
exclude_filetypes = { "TelescopePrompt", "NvimTree" },
|
||||||
log_file_path = nil, -- absolute path to Tabnine log file
|
log_file_path = nil, -- absolute path to Tabnine log file
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
return M
|
return M
|
||||||
|
|
|
@ -6,43 +6,43 @@ M.dependencies = { "telescope-fzf-native.nvim" }
|
||||||
M.cmd = "Telescope"
|
M.cmd = "Telescope"
|
||||||
|
|
||||||
local opts = function()
|
local opts = function()
|
||||||
local actions = require("telescope.actions")
|
local actions = require("telescope.actions")
|
||||||
return {
|
return {
|
||||||
defaults = {
|
defaults = {
|
||||||
git_worktrees = vim.g.git_worktrees,
|
git_worktrees = vim.g.git_worktrees,
|
||||||
prompt_prefix = icons.Selected,
|
prompt_prefix = icons.Selected,
|
||||||
path_display = { "truncate" },
|
path_display = { "truncate" },
|
||||||
sorting_startegy = "ascending",
|
sorting_startegy = "ascending",
|
||||||
layout_config = {
|
layout_config = {
|
||||||
horizontal = { prompt_position = "top", preview_width = 0.7 },
|
horizontal = { prompt_position = "top", preview_width = 0.7 },
|
||||||
vertical = { mirror = false },
|
vertical = { mirror = false },
|
||||||
width = 0.87,
|
width = 0.87,
|
||||||
height = 0.80,
|
height = 0.80,
|
||||||
preview_cutoff = 120,
|
preview_cutoff = 120,
|
||||||
},
|
},
|
||||||
-- TODO: Move to config.keymaps
|
-- TODO: Move to config.keymaps
|
||||||
mappings = {
|
mappings = {
|
||||||
i = {
|
i = {
|
||||||
["<C-n>"] = actions.cycle_history_next,
|
["<C-n>"] = actions.cycle_history_next,
|
||||||
["<C-p>"] = actions.cycle_history_prev,
|
["<C-p>"] = actions.cycle_history_prev,
|
||||||
["<C-j>"] = actions.move_selection_next,
|
["<C-j>"] = actions.move_selection_next,
|
||||||
["<C-k>"] = actions.move_selection_previous,
|
["<C-k>"] = actions.move_selection_previous,
|
||||||
},
|
},
|
||||||
n = { q = actions.close },
|
n = { q = actions.close },
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
M.config = function()
|
M.config = function()
|
||||||
local telescope = require("telescope")
|
local telescope = require("telescope")
|
||||||
telescope.setup(opts())
|
telescope.setup(opts())
|
||||||
if pcall(require, "aerial") then
|
if pcall(require, "aerial") then
|
||||||
telescope.load_extension("aerial")
|
telescope.load_extension("aerial")
|
||||||
end
|
end
|
||||||
if require("funcs").is_available("telescope-fzf-native.nvim") then
|
if require("funcs").is_available("telescope-fzf-native.nvim") then
|
||||||
telescope.load_extension("fzf")
|
telescope.load_extension("fzf")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
return M
|
return M
|
||||||
|
|
|
@ -4,16 +4,16 @@ local icons = require("config.icons")
|
||||||
M.event = { "BufReadPost", "BufNewFile", "BufNew" }
|
M.event = { "BufReadPost", "BufNewFile", "BufNew" }
|
||||||
|
|
||||||
M.opts = {
|
M.opts = {
|
||||||
signs = false,
|
signs = false,
|
||||||
keywords = {
|
keywords = {
|
||||||
BUG = { icon = icons.Bug, color = "error", alt = { "FIXME", "FIX", "FIXIT", "ISSUE" } },
|
BUG = { icon = icons.Bug, color = "error", alt = { "FIXME", "FIX", "FIXIT", "ISSUE" } },
|
||||||
TODO = { icon = icons.Task, color = "info" },
|
TODO = { icon = icons.Task, color = "info" },
|
||||||
HACK = { icon = icons.Flame, color = "warning" },
|
HACK = { icon = icons.Flame, color = "warning" },
|
||||||
WARN = { icon = icons.Warn, color = "warning", alt = { "WARNING", "XXX" } },
|
WARN = { icon = icons.Warn, color = "warning", alt = { "WARNING", "XXX" } },
|
||||||
PERF = { icon = icons.Speed, alt = { "OPTIM", "PERFORMANCE", "OPTIMIZE" } },
|
PERF = { icon = icons.Speed, alt = { "OPTIM", "PERFORMANCE", "OPTIMIZE" } },
|
||||||
NOTE = { icon = icons.Buffer, color = "hint", alt = { "INFO" } },
|
NOTE = { icon = icons.Buffer, color = "hint", alt = { "INFO" } },
|
||||||
TEST = { icon = icons.Test, color = "test", alt = { "TESTING", "PASSED", "FAILED" } },
|
TEST = { icon = icons.Test, color = "test", alt = { "TESTING", "PASSED", "FAILED" } },
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
return M
|
return M
|
||||||
|
|
|
@ -3,40 +3,40 @@ local M = { "akinsho/toggleterm.nvim" }
|
||||||
M.cmd = { "ToggleTerm", "TermExec" }
|
M.cmd = { "ToggleTerm", "TermExec" }
|
||||||
|
|
||||||
M.opts = {
|
M.opts = {
|
||||||
size = function(term)
|
size = function(term)
|
||||||
if term.direction == "horizontal" then
|
if term.direction == "horizontal" then
|
||||||
return vim.o.lines * 0.33
|
return vim.o.lines * 0.33
|
||||||
elseif term.direction == "vertical" then
|
elseif term.direction == "vertical" then
|
||||||
return vim.o.colums * 0.33
|
return vim.o.colums * 0.33
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
-- TODO: Move to config.keymaps
|
-- TODO: Move to config.keymaps
|
||||||
open_mapping = "<C-z>",
|
open_mapping = "<C-z>",
|
||||||
direction = "float",
|
direction = "float",
|
||||||
highlights = {
|
highlights = {
|
||||||
Normal = { link = "Normal" },
|
Normal = { link = "Normal" },
|
||||||
NormalNC = { link = "NormalNC" },
|
NormalNC = { link = "NormalNC" },
|
||||||
NormalFloat = { link = "NormalFloat" },
|
NormalFloat = { link = "NormalFloat" },
|
||||||
FloatBorder = { link = "FloatBorder" },
|
FloatBorder = { link = "FloatBorder" },
|
||||||
StatusLine = { link = "StatusLine" },
|
StatusLine = { link = "StatusLine" },
|
||||||
StatusLineNC = { link = "StatusLineNC" },
|
StatusLineNC = { link = "StatusLineNC" },
|
||||||
WinBar = { link = "WinBar" },
|
WinBar = { link = "WinBar" },
|
||||||
WinBarNC = { link = "WinBarNC" },
|
WinBarNC = { link = "WinBarNC" },
|
||||||
},
|
},
|
||||||
float_opts = {
|
float_opts = {
|
||||||
border = "curved",
|
border = "curved",
|
||||||
-- winblend = 10,
|
-- winblend = 10,
|
||||||
width = function()
|
width = function()
|
||||||
return math.ceil(math.min(vim.o.columns, math.max(80, vim.o.columns - 20)))
|
return math.ceil(math.min(vim.o.columns, math.max(80, vim.o.columns - 20)))
|
||||||
end,
|
end,
|
||||||
height = function()
|
height = function()
|
||||||
return math.ceil(math.min(vim.o.lines, math.max(20, vim.o.lines - 10)))
|
return math.ceil(math.min(vim.o.lines, math.max(20, vim.o.lines - 10)))
|
||||||
end,
|
end,
|
||||||
},
|
},
|
||||||
on_create = function()
|
on_create = function()
|
||||||
vim.opt.foldcolumn = "0"
|
vim.opt.foldcolumn = "0"
|
||||||
vim.opt.signcolumn = "no"
|
vim.opt.signcolumn = "no"
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
|
|
||||||
return M
|
return M
|
||||||
|
|
|
@ -3,16 +3,16 @@ local M = { "folke/tokyonight.nvim" }
|
||||||
M.priority = 1000
|
M.priority = 1000
|
||||||
|
|
||||||
local opts = {
|
local opts = {
|
||||||
style = "night",
|
style = "night",
|
||||||
transparent = true,
|
transparent = true,
|
||||||
on_highlights = function(hl, _)
|
on_highlights = function(hl, _)
|
||||||
hl.CurSearch = nil
|
hl.CurSearch = nil
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
|
|
||||||
M.config = function()
|
M.config = function()
|
||||||
require("tokyonight").setup(opts)
|
require("tokyonight").setup(opts)
|
||||||
vim.cmd("colorscheme tokyonight")
|
vim.cmd("colorscheme tokyonight")
|
||||||
end
|
end
|
||||||
|
|
||||||
return M
|
return M
|
||||||
|
|
|
@ -5,35 +5,35 @@ M.event = { "InsertEnter" }
|
||||||
M.dependencies = { "kevinhwang91/promise-async" }
|
M.dependencies = { "kevinhwang91/promise-async" }
|
||||||
|
|
||||||
M.opts = {
|
M.opts = {
|
||||||
preview = {
|
preview = {
|
||||||
mappings = {
|
mappings = {
|
||||||
scrollB = "<C-b>",
|
scrollB = "<C-b>",
|
||||||
scrollF = "<C-f>",
|
scrollF = "<C-f>",
|
||||||
scrollU = "<C-u>",
|
scrollU = "<C-u>",
|
||||||
scrollD = "<C-d>",
|
scrollD = "<C-d>",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
provider_selector = function(_, filetype, buftype)
|
provider_selector = function(_, filetype, buftype)
|
||||||
local function handleFallbackException(bufnr, err, providerName)
|
local function handleFallbackException(bufnr, err, providerName)
|
||||||
if type(err) == "string" and err:match("UfoFallbackException") then
|
if type(err) == "string" and err:match("UfoFallbackException") then
|
||||||
return require("ufo").getFolds(bufnr, providerName)
|
return require("ufo").getFolds(bufnr, providerName)
|
||||||
else
|
else
|
||||||
return require("promise").reject(err)
|
return require("promise").reject(err)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
return (filetype == "" or buftype == "nofile") and "indent" -- only use indent until a file is opened
|
return (filetype == "" or buftype == "nofile") and "indent" -- only use indent until a file is opened
|
||||||
or function(bufnr)
|
or function(bufnr)
|
||||||
return require("ufo")
|
return require("ufo")
|
||||||
.getFolds(bufnr, "lsp")
|
.getFolds(bufnr, "lsp")
|
||||||
:catch(function(err)
|
:catch(function(err)
|
||||||
return handleFallbackException(bufnr, err, "treesitter")
|
return handleFallbackException(bufnr, err, "treesitter")
|
||||||
end)
|
end)
|
||||||
:catch(function(err)
|
:catch(function(err)
|
||||||
return handleFallbackException(bufnr, err, "indent")
|
return handleFallbackException(bufnr, err, "indent")
|
||||||
end)
|
end)
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
|
|
||||||
return M
|
return M
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
local M = { "lervag/vimtex" }
|
local M = { "lervag/vimtex" }
|
||||||
|
|
||||||
M.init = function()
|
M.init = function()
|
||||||
vim.g.vimtex_view_method = "zathura"
|
vim.g.vimtex_view_method = "zathura"
|
||||||
vim.g.tex_flavor = "latex"
|
vim.g.tex_flavor = "latex"
|
||||||
vim.g.vimtex_quickfix_mode = 0
|
vim.g.vimtex_quickfix_mode = 0
|
||||||
vim.o.conceallevel = 1
|
vim.o.conceallevel = 1
|
||||||
vim.g.tex_conceal = "abdmg"
|
vim.g.tex_conceal = "abdmg"
|
||||||
end
|
end
|
||||||
|
|
||||||
return M
|
return M
|
||||||
|
|
|
@ -5,33 +5,33 @@ local icons = require("config.icons")
|
||||||
M.event = "VeryLazy"
|
M.event = "VeryLazy"
|
||||||
|
|
||||||
M.init = function()
|
M.init = function()
|
||||||
vim.o.timeout = true
|
vim.o.timeout = true
|
||||||
vim.o.timeoutlen = 300
|
vim.o.timeoutlen = 300
|
||||||
end
|
end
|
||||||
|
|
||||||
M.opts = {
|
M.opts = {
|
||||||
plugins = {
|
plugins = {
|
||||||
presets = {
|
presets = {
|
||||||
operators = false,
|
operators = false,
|
||||||
motions = false,
|
motions = false,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
icons = {
|
icons = {
|
||||||
breadcrumb = icons.Selected,
|
breadcrumb = icons.Selected,
|
||||||
separator = icons.Selected,
|
separator = icons.Selected,
|
||||||
group = "",
|
group = "",
|
||||||
},
|
},
|
||||||
hidden = { "<silent>", "<cmd>", "<Cmd>", "<CR>", "call", "lua", "^:", "^ " },
|
hidden = { "<silent>", "<cmd>", "<Cmd>", "<CR>", "call", "lua", "^:", "^ " },
|
||||||
triggers = "auto",
|
triggers = "auto",
|
||||||
triggers_blacklist = {
|
triggers_blacklist = {
|
||||||
i = { "j", "k", "v", "y" },
|
i = { "j", "k", "v", "y" },
|
||||||
v = { "j", "k", "y" },
|
v = { "j", "k", "y" },
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
M.config = function(_, opts)
|
M.config = function(_, opts)
|
||||||
require("which-key").setup(opts)
|
require("which-key").setup(opts)
|
||||||
require("funcs").which_key_register()
|
require("funcs").which_key_register()
|
||||||
end
|
end
|
||||||
|
|
||||||
return M
|
return M
|
||||||
|
|
Loading…
Add table
Reference in a new issue