refactor(nvim)!: improve plugin organization
This also is MUCH better at lazy loading the plugins as well
This commit is contained in:
parent
aca1116e95
commit
565fa8a2a6
@ -1,8 +1,8 @@
|
||||
{
|
||||
"FixCursorHold.nvim": { "branch": "master", "commit": "1900f89dc17c603eec29960f57c00bd9ae696495" },
|
||||
"LuaSnip": { "branch": "master", "commit": "99a94cc35ec99bf06263d0346128e908a204575c" },
|
||||
"LuaSnip": { "branch": "master", "commit": "409535b8fc54c650eb845b0c35e0cc7f08810284" },
|
||||
"SmoothCursor.nvim": { "branch": "main", "commit": "b61173fb107455f18099715b88d86002579f2736" },
|
||||
"alpha-nvim": { "branch": "main", "commit": "e4fc5e29b731bdf55d204c5c6a11dc3be70f3b65" },
|
||||
"alpha-nvim": { "branch": "main", "commit": "8e05626e073a5a60ffeb8139076520c1eda41d59" },
|
||||
"autolist.nvim": { "branch": "main", "commit": "5f70a5f99e96c8fe3069de042abd2a8ed2deb855" },
|
||||
"bufdelete.nvim": { "branch": "master", "commit": "07d1f8ba79dec59d42b975a4df1c732b2e4e37b4" },
|
||||
"ccc.nvim": { "branch": "main", "commit": "4a0ddaf787cc82796e84ab8a7f70d086f250aeb6" },
|
||||
@ -25,7 +25,7 @@
|
||||
"csharpls-extended-lsp.nvim": { "branch": "master", "commit": "865ace7f8f4069b4965e86005392dc78eec0858f" },
|
||||
"diffview.nvim": { "branch": "main", "commit": "500d8b2013812e05ab87db83a8d22319986519f2" },
|
||||
"dressing.nvim": { "branch": "master", "commit": "6bde51adabba06f7fd4a469885a85f36d78a5f52" },
|
||||
"friendly-snippets": { "branch": "main", "commit": "bc38057e513458cb2486b6cd82d365fa294ee398" },
|
||||
"friendly-snippets": { "branch": "main", "commit": "377d45475b49e37460a902d6d569d2093d4037d0" },
|
||||
"fuzzy.nvim": { "branch": "master", "commit": "67a42ad2fa6d5ff41f0ef3cf69bb247410da5d7a" },
|
||||
"gh.nvim": { "branch": "main", "commit": "2b5551656c1b896bf4ae06546eaaab00311f9a18" },
|
||||
"gitsigns.nvim": { "branch": "main", "commit": "bae45ef449d8811061cc940459e70e883a3aa83a" },
|
||||
@ -63,7 +63,6 @@
|
||||
"nvim-dap-python": { "branch": "master", "commit": "37b4cba02e337a95cb62ad1609b3d1dccb2e5d42" },
|
||||
"nvim-dap-ui": { "branch": "master", "commit": "85b16ac2309d85c88577cd8ee1733ce52be8227e" },
|
||||
"nvim-dap-virtual-text": { "branch": "master", "commit": "57f1dbd0458dd84a286b27768c142e1567f3ce3b" },
|
||||
"nvim-hlslens": { "branch": "main", "commit": "f0281591a59e95400babf61a96e59ba20e5c9533" },
|
||||
"nvim-hurl": { "branch": "main", "commit": "5b7c61364e1872ab1cbaf0ff1da941f0ec94a04a" },
|
||||
"nvim-lastplace": { "branch": "main", "commit": "0bb6103c506315044872e0f84b1f736c4172bb20" },
|
||||
"nvim-lightbulb": { "branch": "master", "commit": "8f00b89dd1b1dbde16872bee5fbcee2e58c9b8e9" },
|
||||
@ -71,23 +70,19 @@
|
||||
"nvim-neoclip.lua": { "branch": "main", "commit": "4e406ae0f759262518731538f2585abb9d269bac" },
|
||||
"nvim-notify": { "branch": "master", "commit": "ea9c8ce7a37f2238f934e087c255758659948e0f" },
|
||||
"nvim-surround": { "branch": "main", "commit": "0d6882635817a2677749a330127d12ac30a4f3c8" },
|
||||
"nvim-treesitter": { "branch": "master", "commit": "bc52938ddde0ff6b3d51ff215d2c66f2e39b7099" },
|
||||
"nvim-treesitter-context": { "branch": "master", "commit": "3d4ab25056dcaf6dd11ebacf1da8525c8df6550f" },
|
||||
"nvim-treesitter-textobjects": { "branch": "master", "commit": "9e519b6146512c8e2e702faf8ac48420f4f5deec" },
|
||||
"nvim-treesitter": { "branch": "master", "commit": "93ee00cd9daf8d2e3fbaa2a18b8b9adcb4471b16" },
|
||||
"nvim-treesitter-context": { "branch": "master", "commit": "d8fd71428e02190d8f75ff915b6cca9e3063992c" },
|
||||
"nvim-ts-autotag": { "branch": "main", "commit": "6be1192965df35f94b8ea6d323354f7dc7a557e4" },
|
||||
"nvim-ufo": { "branch": "main", "commit": "5be5b800b4f3512bca128f345e9c98574b5637c0" },
|
||||
"nvim-ufo": { "branch": "main", "commit": "aebd36bf5447862671356fcd5d4a8708ce6c9470" },
|
||||
"nvim-web-devicons": { "branch": "master", "commit": "ab899311f8ae00a47eae8e0879506cead8eb1561" },
|
||||
"omnisharp-extended-lsp.nvim": { "branch": "main", "commit": "53edfb413a54c9e55dcddc9e9fa4977a897e4425" },
|
||||
"overseer.nvim": { "branch": "master", "commit": "cdee07c73d257e7aaa8d2bb4cac238c4c1b103c9" },
|
||||
"overseer.nvim": { "branch": "master", "commit": "667dc5f0048d299fc41c13c8c3b5ef2cb2909a4d" },
|
||||
"playground": { "branch": "master", "commit": "2b81a018a49f8e476341dfcb228b7b808baba68b" },
|
||||
"plenary.nvim": { "branch": "master", "commit": "267282a9ce242bbb0c5dc31445b6d353bed978bb" },
|
||||
"promise-async": { "branch": "main", "commit": "e94f35161b8c5d4a4ca3b6ff93dd073eb9214c0e" },
|
||||
"rainbow-delimiters.nvim": { "branch": "master", "commit": "b5bb251e057d099ee8186d2521f865cd98c51ead" },
|
||||
"refactoring.nvim": { "branch": "master", "commit": "5359e74291164fcaeaaecdea9ba753ad54eb53d0" },
|
||||
"rest.nvim": { "branch": "main", "commit": "22673c848768ff25517154a5aebfebc0c77d0b4f" },
|
||||
"rust-tools.nvim": { "branch": "master", "commit": "0cc8adab23117783a0292a0c8a2fbed1005dc645" },
|
||||
"schemastore.nvim": { "branch": "main", "commit": "540b70d60f33a486eb62f06a0db2723ad8fbe8d3" },
|
||||
"silicon.nvim": { "branch": "main", "commit": "e0b7d78545470ef72ca6c0cef3980b8a779f4385" },
|
||||
"sqlite.lua": { "branch": "master", "commit": "b7e28c8463254c46a8e61c52d27d6a2040492fc3" },
|
||||
"statuscol.nvim": { "branch": "main", "commit": "9f1ff2dcf614544c5022e876d83b4894c1944e87" },
|
||||
"telescope-file-browser.nvim": { "branch": "master", "commit": "ad7b637c72549713b9aaed7c4f9c79c62bcbdff0" },
|
||||
|
@ -31,6 +31,7 @@ M.setup = function()
|
||||
|
||||
vim.diagnostic.config({
|
||||
virtual_text = false,
|
||||
virtual_lines = true,
|
||||
severity_sort = true,
|
||||
underline = true,
|
||||
update_in_insert = false,
|
||||
|
@ -23,16 +23,13 @@ M.setup = function()
|
||||
-- Set current focused file as cwd
|
||||
vim.keymap.set("n", "<leader>cd", ":cd %:p:h<CR>", { silent = true, desc = "Change CWD to Current File" })
|
||||
|
||||
-- Toggle showing diagnostics
|
||||
local diagnostics_active = true
|
||||
vim.keymap.set("n", "<leader>lh", function()
|
||||
diagnostics_active = not diagnostics_active
|
||||
if diagnostics_active then
|
||||
if vim.diagnostic.is_disabled() then
|
||||
vim.diagnostic.enable()
|
||||
else
|
||||
vim.diagnostic.disable()
|
||||
end
|
||||
end, { silent = true, desc = "Toggle Diagnostics" })
|
||||
end, { silent = true, desc = "LSP: Toggle Diagnostics" })
|
||||
|
||||
-- Toggle showing command bar
|
||||
vim.keymap.set("n", "<leader>sc", function()
|
||||
@ -61,6 +58,10 @@ M.setup = function()
|
||||
|
||||
-- Tabclose binding
|
||||
vim.keymap.set("n", "<C-w>t", "<cmd>tabclose<CR>", { silent = true, desc = "Close Tab" })
|
||||
|
||||
-- Buffer bindings
|
||||
vim.keymap.set("n", "<A-a>", ":bprevious<CR>", { silent = true, desc = "Go to Previous Buffer" })
|
||||
vim.keymap.set("n", "<A-s>", ":bnext<CR>", { silent = true, desc = "Go to Next Buffer" })
|
||||
end
|
||||
|
||||
return M
|
||||
|
@ -52,6 +52,7 @@ M.setup = function()
|
||||
opt.ruler = true
|
||||
|
||||
-- Set timeouts
|
||||
opt.timeout = true
|
||||
opt.ttimeoutlen = 20
|
||||
opt.timeoutlen = 1000
|
||||
opt.updatetime = 250
|
||||
@ -65,7 +66,10 @@ M.setup = function()
|
||||
opt.foldexpr = "nvim_treesitter#foldexpr()"
|
||||
opt.foldmethod = "expr"
|
||||
opt.fillchars = { eob = " ", fold = " ", foldopen = "", foldsep = " ", foldclose = "" }
|
||||
opt.foldlevel = 20
|
||||
vim.o.foldcolumn = "1"
|
||||
vim.o.foldlevel = 99
|
||||
vim.o.foldlevelstart = 99
|
||||
vim.o.foldenable = true
|
||||
vim.wo.foldexpr = "nvim_treesitter#foldexpr()"
|
||||
vim.wo.foldmethod = "expr"
|
||||
|
||||
@ -102,13 +106,13 @@ M.setup = function()
|
||||
|
||||
-- Set fillchars
|
||||
vim.opt.fillchars:append({
|
||||
horiz = "━",
|
||||
horizup = "┻",
|
||||
horizdown = "┳",
|
||||
vert = "┃",
|
||||
vertleft = "┨",
|
||||
vertright = "┣",
|
||||
verthoriz = "╋",
|
||||
horiz = "─",
|
||||
horizup = "┴",
|
||||
horizdown = "┬",
|
||||
vert = "│",
|
||||
vertleft = "┤",
|
||||
vertright = "├",
|
||||
verthoriz = "┼",
|
||||
})
|
||||
|
||||
-- Remove end of boundry '~'
|
||||
|
@ -1,208 +0,0 @@
|
||||
local cmp = require("cmp")
|
||||
local types = require("cmp.types")
|
||||
local str = require("cmp.utils.str")
|
||||
local compare = cmp.config.compare
|
||||
local luasnip = require("luasnip")
|
||||
|
||||
-- Load Snippets
|
||||
require("luasnip.loaders.from_vscode").lazy_load()
|
||||
|
||||
cmp.setup({
|
||||
formatting = {
|
||||
fields = { cmp.ItemField.Kind, cmp.ItemField.Abbr, cmp.ItemField.Menu },
|
||||
format = function(entry, vim_item)
|
||||
local selections = {
|
||||
fuzzy_buffer = { symbol = " ", name = "Buffer", hl_group = "Buffer" },
|
||||
calc = { symbol = " ", name = "Calculator", hl_group = "Calculator" },
|
||||
neorg = { symbol = " ", name = "Neorg", hl_group = "Neorg" },
|
||||
emoji = { symbol = " ", name = "Emoji", hl_group = "Emoji" },
|
||||
zsh = { symbol = " ", name = "Zsh", hl_group = "Zsh" },
|
||||
crates = { symbol = " ", name = "Crates", hl_group = "Crates" },
|
||||
cmdline_history = { symbol = " ", name = "Cmd History", hl_group = "CmdHistory" },
|
||||
rg = { symbol = " ", name = "Ripgrep", hl_group = "Ripgrep" },
|
||||
npm = { symbol = " ", name = "Npm,", hl_group = "Npm," },
|
||||
conventionalcommits = { symbol = " ", name = "Commit", hl_group = "Commit" },
|
||||
spell = { symbol = " ", name = "Spell", hl_group = "Spell" },
|
||||
git = { symbol = " ", name = "Git", hl_group = "Git" },
|
||||
}
|
||||
|
||||
local extra_kind_icons = {
|
||||
TypeParameter = "",
|
||||
}
|
||||
|
||||
local selection = selections[entry.source.name]
|
||||
if not selection then
|
||||
local kind = require("lspkind").cmp_format({
|
||||
mode = "symbol_text",
|
||||
maxwidth = 50,
|
||||
})(entry, vim_item)
|
||||
local strings = vim.split(kind.kind, "%s", { trimempty = true })
|
||||
if not strings[2] then
|
||||
strings[2] = strings[1]
|
||||
strings[1] = extra_kind_icons[strings[1]] or ""
|
||||
end
|
||||
kind.kind = " " .. strings[1] .. " "
|
||||
vim_item.menu = (strings[1] or "") .. " " .. (strings[2] or "")
|
||||
return kind
|
||||
else
|
||||
local word = entry:get_insert_text()
|
||||
if entry.completion_item.insertTextFormat == types.lsp.InsertTextFormat.Snippet then
|
||||
word = vim.lsp.util.parse_snippet(word)
|
||||
end
|
||||
word = str.oneline(word)
|
||||
|
||||
-- concatenates the string
|
||||
local max = 50
|
||||
if string.len(word) >= max then
|
||||
local before = string.sub(word, 1, math.floor((max - 3) / 2))
|
||||
word = before .. "..."
|
||||
end
|
||||
vim_item.kind = " " .. selection.symbol
|
||||
vim_item.menu = selection.symbol .. selection.name
|
||||
vim_item.kind_hl_group = "CmpCustomSelection" .. selection.hl_group
|
||||
vim_item.abbr = word
|
||||
return vim_item
|
||||
end
|
||||
end,
|
||||
},
|
||||
view = {
|
||||
entries = {
|
||||
name = "custom",
|
||||
selection_order = "near_cursor",
|
||||
},
|
||||
},
|
||||
window = {
|
||||
documentation = {
|
||||
side_padding = 0,
|
||||
},
|
||||
completion = {
|
||||
winhighlight = "Normal:Normal,FloatBorder:FloatBorder,CursorLine:Visual,Search:None",
|
||||
col_offset = -3,
|
||||
side_padding = 0,
|
||||
},
|
||||
},
|
||||
experimental = { ghost_text = "Comment", native_menu = false },
|
||||
snippet = {
|
||||
-- REQUIRED - you must specify a snippet engine
|
||||
expand = function(args)
|
||||
require("luasnip").lsp_expand(args.body) -- For `luasnip` users.
|
||||
end,
|
||||
},
|
||||
mapping = {
|
||||
["<C-b>"] = cmp.mapping(cmp.mapping.scroll_docs(-4), { "i", "c" }),
|
||||
["<C-f>"] = cmp.mapping(cmp.mapping.scroll_docs(4), { "i", "c" }),
|
||||
["<C-Space>"] = cmp.mapping(cmp.mapping.complete(), { "i", "c" }),
|
||||
["<C-y>"] = cmp.config.disable, -- Specify `cmp.config.disable` if you want to remove the default `<C-y>` mapping.
|
||||
["<C-e>"] = cmp.mapping({
|
||||
i = cmp.mapping.abort(),
|
||||
c = cmp.mapping.close(),
|
||||
}),
|
||||
["<CR>"] = cmp.mapping.confirm({ select = false }), -- Accept currently selected item. Set `select` to `false` to only confirm explicitly selected items.
|
||||
["<C-Tab>"] = cmp.mapping(function(fallback)
|
||||
if luasnip.expand_or_jumpable() then
|
||||
luasnip.expand_or_jump()
|
||||
else
|
||||
fallback()
|
||||
end
|
||||
end, { "i", "s" }),
|
||||
["<C-S-Tab>"] = cmp.mapping(function(fallback)
|
||||
if luasnip.jumpable(-1) then
|
||||
luasnip.jump(-1)
|
||||
else
|
||||
fallback()
|
||||
end
|
||||
end, { "i", "s" }),
|
||||
["<Tab>"] = cmp.mapping(function(fallback)
|
||||
if cmp.visible() then
|
||||
cmp.select_next_item()
|
||||
else
|
||||
fallback()
|
||||
end
|
||||
end, { "i", "s" }),
|
||||
["<S-Tab>"] = cmp.mapping(function(fallback)
|
||||
if cmp.visible() then
|
||||
cmp.select_prev_item()
|
||||
elseif luasnip.jumpable(-1) then
|
||||
luasnip.jump(-1)
|
||||
else
|
||||
fallback()
|
||||
end
|
||||
end, { "i", "s" }),
|
||||
},
|
||||
sources = cmp.config.sources({
|
||||
{ name = "nvim_lsp", priority = 11 },
|
||||
{ name = "luasnip", priority = 10 }, -- For luasnip users.
|
||||
{ name = "fuzzy_buffer", priority = 9, keyword_length = 3, max_item_count = 10 },
|
||||
{
|
||||
name = "rg",
|
||||
priority = 7,
|
||||
keyword_length = 3,
|
||||
max_item_count = 10,
|
||||
},
|
||||
{ name = "async_path", priority = 6 },
|
||||
{ name = "zsh", priority = 5 },
|
||||
{ name = "git", priority = 4 },
|
||||
{ name = "emoji", keyword_length = 2 },
|
||||
{ name = "neorg" },
|
||||
{ name = "calc" },
|
||||
{ name = "npm", keyword_length = 2 },
|
||||
{ name = "spell", keyword_length = 2 },
|
||||
}),
|
||||
sorting = {
|
||||
comparators = {
|
||||
compare.score,
|
||||
compare.offset,
|
||||
compare.recently_used,
|
||||
compare.exact,
|
||||
require("cmp_fuzzy_buffer.compare"),
|
||||
compare.kind,
|
||||
compare.sort_text,
|
||||
compare.length,
|
||||
compare.order,
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
-- Git Commit Completions
|
||||
cmp.setup.filetype("gitcommit", {
|
||||
sources = cmp.config.sources({
|
||||
{ name = "conventionalcommits", priority = 3 },
|
||||
{ name = " git", priority = 2 },
|
||||
{ name = "emoji", keyword_length = 2, priority = 1 },
|
||||
}),
|
||||
})
|
||||
|
||||
cmp.setup.filetype("toml", { sources = cmp.config.sources({ { name = "crates" } }) })
|
||||
|
||||
-- Use buffer source for `/` (if you enabled `native_menu`, this won't work anymore).
|
||||
cmp.setup.cmdline("/", {
|
||||
mapping = cmp.mapping.preset.cmdline(),
|
||||
sources = cmp.config.sources({ { name = "fuzzy_buffer" } }),
|
||||
})
|
||||
|
||||
cmp.setup.cmdline("?", {
|
||||
mapping = cmp.mapping.preset.cmdline(),
|
||||
sources = cmp.config.sources({ { name = "fuzzy_buffer" } }),
|
||||
})
|
||||
|
||||
cmp.setup.cmdline("@", {
|
||||
mapping = cmp.mapping.preset.cmdline(),
|
||||
sources = cmp.config.sources({
|
||||
{ name = "fuzzy_buffer" },
|
||||
{ name = "cmdline_history" },
|
||||
}),
|
||||
})
|
||||
|
||||
-- Use cmdline & path source for ':' (if you enabled `native_menu`, this won't work anymore).
|
||||
cmp.setup.cmdline(":", {
|
||||
mapping = cmp.mapping.preset.cmdline(),
|
||||
sources = cmp.config.sources({
|
||||
{
|
||||
name = "cmdline",
|
||||
option = {
|
||||
ignore_cmds = { "!" },
|
||||
},
|
||||
},
|
||||
{ name = "cmdline_history" },
|
||||
}),
|
||||
})
|
@ -1,141 +0,0 @@
|
||||
local dap = require("dap")
|
||||
local async = require("plenary.async")
|
||||
|
||||
--- Gets a path for a given program in the environment
|
||||
---@param program @The string of a program in the PATH
|
||||
---@return @The full path to the program if found, or nil if not
|
||||
local function get_program_path(program)
|
||||
local program_path = vim.fn.stdpath("data") .. "/mason/packages/" .. program .. "/" .. program
|
||||
return program_path
|
||||
end
|
||||
|
||||
local lldb_path = get_program_path("codelldb")
|
||||
-- Adapaters
|
||||
dap.adapters.lldb = {
|
||||
type = "server",
|
||||
port = "${port}",
|
||||
executable = {
|
||||
command = lldb_path,
|
||||
args = { "--port", "${port}" },
|
||||
},
|
||||
name = "lldb",
|
||||
}
|
||||
|
||||
dap.adapters.coreclr = {
|
||||
type = "executable",
|
||||
command = get_program_path("netcoredbg"),
|
||||
args = { "--interpreter=vscode" },
|
||||
}
|
||||
|
||||
dap.adapters.bashdb = {
|
||||
type = "executable",
|
||||
command = vim.fn.stdpath("data") .. "/mason/packages/bash-debug-adapter/bash-debug-adapter",
|
||||
name = "bashdb",
|
||||
}
|
||||
|
||||
-- configurations
|
||||
dap.configurations.cpp = {
|
||||
{
|
||||
name = "Launch",
|
||||
type = "lldb",
|
||||
request = "launch",
|
||||
program = function()
|
||||
return vim.fn.input("Path to executable: ", vim.fn.getcwd() .. "/", "file")
|
||||
end,
|
||||
cwd = "${workspaceFolder}",
|
||||
stopOnEntry = false,
|
||||
args = {},
|
||||
|
||||
-- if you change `runInTerminal` to true, you might need to change the yama/ptrace_scope setting:
|
||||
--
|
||||
-- echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope
|
||||
--
|
||||
-- Otherwise you might get the following error:
|
||||
--
|
||||
-- Error on launch: Failed to attach to the target process
|
||||
--
|
||||
-- But you should be aware of the implications:
|
||||
-- https://www.kernel.org/doc/html/latest/admin-guide/LSM/Yama.html
|
||||
runInTerminal = false,
|
||||
},
|
||||
}
|
||||
|
||||
dap.configurations.c = dap.configurations.cpp
|
||||
dap.configurations.asm = dap.configurations.cpp
|
||||
dap.configurations.rust = dap.configurations.cpp
|
||||
|
||||
vim.g.dotnet_build_project = function()
|
||||
local default_path = vim.fn.getcwd() .. "/"
|
||||
if vim.g["dotnet_last_proj_path"] ~= nil then
|
||||
default_path = vim.g["dotnet_last_proj_path"]
|
||||
end
|
||||
local path = vim.fn.input("Path to your *proj file", default_path, "file")
|
||||
vim.g["dotnet_last_proj_path"] = path
|
||||
local cmd = "dotnet build -c Debug " .. path .. " > /dev/null"
|
||||
print("")
|
||||
print("Cmd to execute: " .. cmd)
|
||||
local f = os.execute(cmd)
|
||||
if f == 0 then
|
||||
print("\nBuild: ✔️ ")
|
||||
else
|
||||
print("\nBuild: ❌ (code: " .. f .. ")")
|
||||
end
|
||||
end
|
||||
|
||||
vim.g.dotnet_get_dll_path = function()
|
||||
local request = function()
|
||||
return vim.fn.input("Path to dll", vim.fn.getcwd() .. "/bin/Debug/", "file")
|
||||
end
|
||||
|
||||
if vim.g["dotnet_last_dll_path"] == nil then
|
||||
vim.g["dotnet_last_dll_path"] = request()
|
||||
else
|
||||
if
|
||||
vim.fn.confirm("Do you want to change the path to dll?\n" .. vim.g["dotnet_last_dll_path"], "&yes\n&no", 2)
|
||||
== 1
|
||||
then
|
||||
vim.g["dotnet_last_dll_path"] = request()
|
||||
end
|
||||
end
|
||||
|
||||
return vim.g["dotnet_last_dll_path"]
|
||||
end
|
||||
|
||||
local config = {
|
||||
{
|
||||
type = "coreclr",
|
||||
name = "launch - netcoredbg",
|
||||
request = "launch",
|
||||
program = function()
|
||||
if vim.fn.confirm("Should I recompile first?", "&yes\n&no", 2) == 1 then
|
||||
vim.g.dotnet_build_project()
|
||||
end
|
||||
return vim.g.dotnet_get_dll_path()
|
||||
end,
|
||||
},
|
||||
}
|
||||
|
||||
dap.configurations.cs = config
|
||||
dap.configurations.fsharp = config
|
||||
|
||||
dap.configurations.sh = {
|
||||
{
|
||||
type = "bashdb",
|
||||
request = "launch",
|
||||
name = "Launch file",
|
||||
showDebugOutput = true,
|
||||
pathBashdb = vim.fn.stdpath("data") .. "/mason/packages/bash-debug-adapter/extension/bashdb_dir/bashdb",
|
||||
pathBashdbLib = vim.fn.stdpath("data") .. "/mason/packages/bash-debug-adapter/extension/bashdb_dir",
|
||||
trace = true,
|
||||
file = "${file}",
|
||||
program = "${file}",
|
||||
cwd = "${workspaceFolder}",
|
||||
pathCat = "cat",
|
||||
pathBash = "/bin/bash",
|
||||
pathMkfifo = "mkfifo",
|
||||
pathPkill = "pkill",
|
||||
args = {},
|
||||
env = {},
|
||||
terminalKind = "integrated",
|
||||
},
|
||||
}
|
@ -1,20 +0,0 @@
|
||||
require("stabilize").setup({
|
||||
-- stabilize window even when current cursor position will be hidden behind new window
|
||||
force = true,
|
||||
-- set context mark to register on force event which can be jumped to with '<forcemark>
|
||||
forcemark = nil,
|
||||
-- do not manage windows matching these file/buftypes
|
||||
ignore = {
|
||||
filetype = { "packer", "Dashboard", "Trouble", "TelescopePrompt" },
|
||||
buftype = {
|
||||
"packer",
|
||||
"Dashboard",
|
||||
"terminal",
|
||||
"quickfix",
|
||||
"loclist",
|
||||
"LspInstall",
|
||||
},
|
||||
},
|
||||
-- comma-separated list of autocmds that wil trigger the plugins window restore function
|
||||
nested = nil,
|
||||
})
|
@ -1,186 +1,200 @@
|
||||
local alpha = require("alpha")
|
||||
return {
|
||||
{
|
||||
"goolord/alpha-nvim",
|
||||
dependencies = { "nvim-tree/nvim-web-devicons" },
|
||||
opts = function()
|
||||
-- Set header
|
||||
local header = {
|
||||
type = "text",
|
||||
val = {
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" -╲ '- ",
|
||||
" -' :╲ │ '- ",
|
||||
" -' : ╲ │ '- ",
|
||||
" -'· : ╲ │ '- ",
|
||||
" '.-.· : ╲ │ │ ",
|
||||
" │. .-· : ╲ │ │ ",
|
||||
" │ . .-· : ╲ │ │ ",
|
||||
" │. . .-·; ╲ │ │ ",
|
||||
" │ . . .-│ ╲ │ │ ",
|
||||
" │. . . .│╲ ╲│ │ ",
|
||||
" │ . . . │ ╲ ;- │ ",
|
||||
" │. . . .│ ╲ :·- │ ",
|
||||
" │ . . . │ ╲ : .- │ ",
|
||||
" │. . . .│ ╲ :. .- │ ",
|
||||
" `- . . .│ ╲ : . .- -' ",
|
||||
" `- . .│ ╲ :. ..-' ",
|
||||
" `-. │ ╲ :..-' ",
|
||||
" `│ ╲;-' ",
|
||||
" ",
|
||||
" ",
|
||||
},
|
||||
opts = { position = "center", hl = "@boolean" },
|
||||
}
|
||||
|
||||
-- Set header
|
||||
local header = {
|
||||
type = "text",
|
||||
val = {
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" -╲ '- ",
|
||||
" -' :╲ │ '- ",
|
||||
" -' : ╲ │ '- ",
|
||||
" -'· : ╲ │ '- ",
|
||||
" '.-.· : ╲ │ │ ",
|
||||
" │. .-· : ╲ │ │ ",
|
||||
" │ . .-· : ╲ │ │ ",
|
||||
" │. . .-·; ╲ │ │ ",
|
||||
" │ . . .-│ ╲ │ │ ",
|
||||
" │. . . .│╲ ╲│ │ ",
|
||||
" │ . . . │ ╲ ;- │ ",
|
||||
" │. . . .│ ╲ :·- │ ",
|
||||
" │ . . . │ ╲ : .- │ ",
|
||||
" │. . . .│ ╲ :. .- │ ",
|
||||
" `- . . .│ ╲ : . .- -' ",
|
||||
" `- . .│ ╲ :. ..-' ",
|
||||
" `-. │ ╲ :..-' ",
|
||||
" `│ ╲;-' ",
|
||||
" ",
|
||||
" ",
|
||||
},
|
||||
opts = { position = "center", hl = "@boolean" },
|
||||
}
|
||||
local vim_version = {
|
||||
type = "text",
|
||||
val = function()
|
||||
local version = vim.version()
|
||||
return ("─────── v%s.%s.%s+%s ───────"):format(
|
||||
version.major,
|
||||
version.minor,
|
||||
version.patch,
|
||||
version.build
|
||||
)
|
||||
end,
|
||||
opts = { position = "center", hl = "@boolean" },
|
||||
}
|
||||
|
||||
local vim_version = {
|
||||
type = "text",
|
||||
val = function()
|
||||
local version = vim.version()
|
||||
return ("─────── v%s.%s.%s ───────"):format(
|
||||
version.major,
|
||||
version.minor,
|
||||
version.patch
|
||||
)
|
||||
end,
|
||||
opts = { position = "center", hl = "@boolean" },
|
||||
}
|
||||
local plugins_loaded = {
|
||||
type = "text",
|
||||
val = function()
|
||||
local lazy_stats = require("lazy").stats()
|
||||
local plugin_count = lazy_stats.count
|
||||
local loaded_plugins = lazy_stats.loaded
|
||||
local plugin_load_time = string.format("%.2f", lazy_stats.startuptime)
|
||||
return " "
|
||||
.. loaded_plugins
|
||||
.. "/"
|
||||
.. plugin_count
|
||||
.. " plugins loaded in "
|
||||
.. plugin_load_time
|
||||
.. "ms"
|
||||
end,
|
||||
|
||||
local plugins_loaded = {
|
||||
type = "text",
|
||||
val = function()
|
||||
local lazy_stats = require("lazy").stats()
|
||||
local plugin_count = lazy_stats.count
|
||||
local loaded_plugins = lazy_stats.loaded
|
||||
return "" .. loaded_plugins .. "/" .. plugin_count .. " plugins loaded!"
|
||||
end,
|
||||
opts = { hl = "@conditional", position = "center" },
|
||||
}
|
||||
|
||||
opts = { hl = "@conditional", position = "center" },
|
||||
}
|
||||
|
||||
vim.api.nvim_set_hl(0, "AlphaPluginUpdate", { link = "@string" })
|
||||
local plugin_info = {
|
||||
type = "text",
|
||||
val = function()
|
||||
if require("lazy.status").has_updates() then
|
||||
vim.api.nvim_set_hl(0, "AlphaPluginUpdate", { link = "@exception" })
|
||||
return "Plugin updates available!"
|
||||
else
|
||||
vim.api.nvim_set_hl(0, "AlphaPluginUpdate", { link = "@string" })
|
||||
return "All plugins up to date"
|
||||
end
|
||||
end,
|
||||
local plugin_info = {
|
||||
type = "text",
|
||||
val = function()
|
||||
if require("lazy.status").has_updates() then
|
||||
vim.api.nvim_set_hl(0, "AlphaPluginUpdate", { link = "@exception" })
|
||||
return "Plugin updates available!"
|
||||
else
|
||||
vim.api.nvim_set_hl(0, "AlphaPluginUpdate", { link = "@string" })
|
||||
return "All plugins up to date"
|
||||
end
|
||||
end,
|
||||
|
||||
opts = {
|
||||
hl = "AlphaPluginUpdate",
|
||||
position = "center",
|
||||
},
|
||||
}
|
||||
opts = {
|
||||
hl = "AlphaPluginUpdate",
|
||||
position = "center",
|
||||
},
|
||||
}
|
||||
|
||||
local datetime = {
|
||||
type = "text",
|
||||
val = function()
|
||||
return vim.fn.strftime("%c")
|
||||
end,
|
||||
opts = { hl = "@field", position = "center" },
|
||||
}
|
||||
local datetime = {
|
||||
type = "text",
|
||||
val = function()
|
||||
return vim.fn.strftime("%c")
|
||||
end,
|
||||
opts = { hl = "@field", position = "center" },
|
||||
}
|
||||
|
||||
-- Menu
|
||||
local button = function(sc, txt, keybind)
|
||||
local sc_ = sc:gsub("%s", ""):gsub("SPC", "<leader>")
|
||||
-- Menu
|
||||
local button = function(sc, txt, keybind)
|
||||
local sc_ = sc:gsub("%s", ""):gsub("SPC", "<leader>")
|
||||
|
||||
local opts = {
|
||||
position = "center",
|
||||
text = txt,
|
||||
shortcut = sc,
|
||||
cursor = 4,
|
||||
width = 30,
|
||||
align_shortcut = "right",
|
||||
hl_shortcut = "Number",
|
||||
hl = "Function",
|
||||
}
|
||||
if keybind then
|
||||
opts.keymap = { "n", sc_, keybind, { noremap = true, silent = true } }
|
||||
end
|
||||
local opts = {
|
||||
position = "center",
|
||||
text = txt,
|
||||
shortcut = sc,
|
||||
cursor = 4,
|
||||
width = 30,
|
||||
align_shortcut = "right",
|
||||
hl_shortcut = "Number",
|
||||
hl = "Function",
|
||||
}
|
||||
if keybind then
|
||||
opts.keymap = { "n", sc_, keybind, { noremap = true, silent = true } }
|
||||
end
|
||||
|
||||
return {
|
||||
type = "button",
|
||||
val = txt,
|
||||
on_press = function()
|
||||
local key = vim.api.nvim_replace_termcodes(sc_, true, false, true)
|
||||
vim.api.nvim_feedkeys(key, "normal", false)
|
||||
return {
|
||||
type = "button",
|
||||
val = txt,
|
||||
on_press = function()
|
||||
local key = vim.api.nvim_replace_termcodes(sc_, true, false, true)
|
||||
vim.api.nvim_feedkeys(key, "normal", false)
|
||||
end,
|
||||
opts = opts,
|
||||
}
|
||||
end
|
||||
|
||||
-- Set menu
|
||||
local buttons = {
|
||||
type = "group",
|
||||
val = {
|
||||
button("e", " New File", ":ene <BAR> startinsert <CR>"),
|
||||
button("f", " Find File", ":Telescope find_files<CR>"),
|
||||
button("r", " Recent", ":Telescope oldfiles<CR>"),
|
||||
button("s", " Settings", "<cmd>e ~/.config/nvim/<CR>"),
|
||||
button("u", " Update Plugins", ":Lazy sync<CR>"),
|
||||
button("q", " Quit", ":qa<CR>"),
|
||||
},
|
||||
opts = { spacing = 0 },
|
||||
}
|
||||
|
||||
-- Footer 2, fortune
|
||||
local fortune = {
|
||||
type = "text",
|
||||
val = require("alpha.fortune")(),
|
||||
opts = { position = "center", hl = "Comment" },
|
||||
}
|
||||
|
||||
local padding = function(pad_amount)
|
||||
return { type = "padding", val = pad_amount }
|
||||
end
|
||||
local opts = {
|
||||
layout = {
|
||||
padding(8),
|
||||
header,
|
||||
vim_version,
|
||||
padding(2),
|
||||
datetime,
|
||||
padding(1),
|
||||
plugin_info,
|
||||
padding(1),
|
||||
plugins_loaded,
|
||||
padding(2),
|
||||
buttons,
|
||||
padding(2),
|
||||
fortune,
|
||||
},
|
||||
opts = { margin = 5 },
|
||||
}
|
||||
vim.api.nvim_create_autocmd("FileType", {
|
||||
pattern = "alpha",
|
||||
desc = "Alpha Main Handler",
|
||||
callback = function()
|
||||
vim.opt_local.cursorline = false
|
||||
|
||||
local alpha_timer = vim.loop.new_timer()
|
||||
---@diagnostic disable-next-line: need-check-nil
|
||||
alpha_timer:start(
|
||||
50,
|
||||
1000,
|
||||
vim.schedule_wrap(function()
|
||||
vim.cmd("AlphaRedraw")
|
||||
end)
|
||||
)
|
||||
|
||||
vim.api.nvim_create_autocmd("BufUnload", {
|
||||
buffer = 0,
|
||||
desc = "Shut down alpha timer",
|
||||
callback = function()
|
||||
---@diagnostic disable-next-line: need-check-nil
|
||||
alpha_timer:close()
|
||||
end,
|
||||
})
|
||||
end,
|
||||
})
|
||||
|
||||
return opts
|
||||
end,
|
||||
opts = opts,
|
||||
}
|
||||
end
|
||||
|
||||
-- Set menu
|
||||
local buttons = {
|
||||
type = "group",
|
||||
val = {
|
||||
button("e", " New File", ":ene <BAR> startinsert <CR>"),
|
||||
button("f", " Find File", ":Telescope find_files<CR>"),
|
||||
button("r", " Recent", ":Telescope oldfiles<CR>"),
|
||||
button("s", " Settings", "<cmd>e ~/.config/nvim/<CR>"),
|
||||
button("u", " Update Plugins", ":Lazy sync<CR>"),
|
||||
button("q", " Quit", ":qa<CR>"),
|
||||
},
|
||||
opts = { spacing = 0 },
|
||||
}
|
||||
|
||||
-- Footer 2, fortune
|
||||
local fortune = {
|
||||
type = "text",
|
||||
val = require("alpha.fortune")(),
|
||||
opts = { position = "center", hl = "Comment" },
|
||||
}
|
||||
|
||||
local padding = function(pad_amount)
|
||||
return { type = "padding", val = pad_amount }
|
||||
end
|
||||
local opts = {
|
||||
layout = {
|
||||
padding(4),
|
||||
header,
|
||||
vim_version,
|
||||
padding(4),
|
||||
datetime,
|
||||
padding(1),
|
||||
plugin_info,
|
||||
padding(1),
|
||||
plugins_loaded,
|
||||
padding(4),
|
||||
buttons,
|
||||
padding(4),
|
||||
fortune,
|
||||
},
|
||||
opts = { margin = 5 },
|
||||
}
|
||||
-- Send config to alpha
|
||||
alpha.setup(opts)
|
||||
|
||||
vim.api.nvim_create_autocmd("FileType", {
|
||||
pattern = "alpha",
|
||||
desc = "Alpha Main Handler",
|
||||
callback = function()
|
||||
vim.opt_local.cursorline = false
|
||||
|
||||
local alpha_timer = vim.loop.new_timer()
|
||||
alpha_timer:start(
|
||||
50,
|
||||
1000,
|
||||
vim.schedule_wrap(function()
|
||||
pcall(vim.cmd, "AlphaRedraw")
|
||||
vim.opt_local.statuscolumn = " "
|
||||
end)
|
||||
)
|
||||
|
||||
vim.api.nvim_create_autocmd("BufUnload", {
|
||||
buffer = 0,
|
||||
desc = "Shut down alpha timer",
|
||||
callback = function(input)
|
||||
alpha_timer:close()
|
||||
end,
|
||||
})
|
||||
end,
|
||||
})
|
||||
|
93
dots/.config/nvim/lua/plugins/configs/autolist.lua
Normal file
93
dots/.config/nvim/lua/plugins/configs/autolist.lua
Normal file
@ -0,0 +1,93 @@
|
||||
return {
|
||||
{
|
||||
"gaoDean/autolist.nvim",
|
||||
event = { "BufReadPre", "BufNewFile" },
|
||||
ft = {
|
||||
"markdown",
|
||||
"text",
|
||||
"tex",
|
||||
"plaintex",
|
||||
"norg",
|
||||
},
|
||||
config = function()
|
||||
require("autolist").setup({})
|
||||
local autolist_group = vim.api.nvim_create_augroup("Autolist", {})
|
||||
vim.api.nvim_create_autocmd("filetype", {
|
||||
group = autolist_group,
|
||||
pattern = {
|
||||
"markdown",
|
||||
"text",
|
||||
"tex",
|
||||
"plaintex",
|
||||
"norg",
|
||||
},
|
||||
callback = function()
|
||||
if pcall(require, "autolist") then
|
||||
vim.keymap.set(
|
||||
"i",
|
||||
"<tab>",
|
||||
"<cmd>AutolistTab<cr>",
|
||||
{ silent = true, desc = "Autolist: Tab", buffer = true }
|
||||
)
|
||||
vim.keymap.set(
|
||||
"i",
|
||||
"<s-tab>",
|
||||
"<cmd>AutolistShiftTab<cr>",
|
||||
{ silent = true, desc = "Autolist: Shift Tab", buffer = true }
|
||||
)
|
||||
vim.keymap.set(
|
||||
"i",
|
||||
"<CR>",
|
||||
"<CR><cmd>AutolistNewBullet<cr>",
|
||||
{ silent = true, desc = "Autolist: New Bullet", buffer = true }
|
||||
)
|
||||
vim.keymap.set(
|
||||
"n",
|
||||
"o",
|
||||
"o<cmd>AutolistNewBullet<cr>",
|
||||
{ silent = true, desc = "Autolist: New Bullet", buffer = true }
|
||||
)
|
||||
vim.keymap.set(
|
||||
"n",
|
||||
"O",
|
||||
"O<cmd>AutolistNewBulletBefore<cr>",
|
||||
{ silent = true, desc = "Autolist: New Bullet Before", buffer = true }
|
||||
)
|
||||
vim.keymap.set(
|
||||
"n",
|
||||
"<C-CR>",
|
||||
"<cmd>AutolistToggleCheckbox<cr>",
|
||||
{ silent = true, desc = "Autolist: Toggle Checkbox", buffer = true }
|
||||
)
|
||||
|
||||
-- functions to recalculate list on edit
|
||||
vim.keymap.set(
|
||||
"n",
|
||||
">>",
|
||||
">><cmd>AutolistRecalculate<cr>",
|
||||
{ silent = true, desc = "Autolist: Indent", buffer = true }
|
||||
)
|
||||
vim.keymap.set(
|
||||
"n",
|
||||
"<<",
|
||||
"<<<cmd>AutolistRecalculate<cr>",
|
||||
{ silent = true, desc = "Autolist: Dedent", buffer = true }
|
||||
)
|
||||
vim.keymap.set(
|
||||
"n",
|
||||
"dd",
|
||||
"dd<cmd>AutolistRecalculate<cr>",
|
||||
{ silent = true, desc = "Autolist: Delete", buffer = true }
|
||||
)
|
||||
vim.keymap.set(
|
||||
"v",
|
||||
"d",
|
||||
"d<cmd>AutolistRecalculate<cr>",
|
||||
{ silent = true, desc = "Autolist: Delete", buffer = true }
|
||||
)
|
||||
end
|
||||
end,
|
||||
})
|
||||
end,
|
||||
},
|
||||
}
|
7
dots/.config/nvim/lua/plugins/configs/autopairs.lua
Normal file
7
dots/.config/nvim/lua/plugins/configs/autopairs.lua
Normal file
@ -0,0 +1,7 @@
|
||||
return {
|
||||
{
|
||||
"windwp/nvim-autopairs",
|
||||
event = "InsertEnter",
|
||||
config = true,
|
||||
},
|
||||
}
|
8
dots/.config/nvim/lua/plugins/configs/bufdelete.lua
Normal file
8
dots/.config/nvim/lua/plugins/configs/bufdelete.lua
Normal file
@ -0,0 +1,8 @@
|
||||
return {
|
||||
{
|
||||
"famiu/bufdelete.nvim",
|
||||
keys = {
|
||||
{ "<A-x>", "<cmd>Bdelete<cr>", desc = "Close Buffer" },
|
||||
},
|
||||
},
|
||||
}
|
@ -1,91 +1,9 @@
|
||||
local ColorInput = require("ccc.input")
|
||||
local convert = require("ccc.utils.convert")
|
||||
|
||||
local RgbHslCmykInput = setmetatable({
|
||||
name = "RGB/HSL/CMYK",
|
||||
max = { 1, 1, 1, 360, 1, 1, 1, 1, 1, 1 },
|
||||
min = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
|
||||
delta = { 1 / 255, 1 / 255, 1 / 255, 1, 0.01, 0.01, 0.005, 0.005, 0.005, 0.005 },
|
||||
bar_name = { "R", "G", "B", "H", "S", "L", "C", "M", "Y", "K" },
|
||||
}, { __index = ColorInput })
|
||||
|
||||
function RgbHslCmykInput.format(n, i)
|
||||
if i <= 3 then
|
||||
-- RGB
|
||||
n = n * 255
|
||||
elseif i == 5 or i == 6 then
|
||||
-- S or L of HSL
|
||||
n = n * 100
|
||||
elseif i >= 7 then
|
||||
-- CMYK
|
||||
return ("%5.1f%%"):format(math.floor(n * 200) / 2)
|
||||
end
|
||||
return ("%6d"):format(n)
|
||||
end
|
||||
|
||||
function RgbHslCmykInput.from_rgb(RGB)
|
||||
local HSL = convert.rgb2hsl(RGB)
|
||||
local CMYK = convert.rgb2cmyk(RGB)
|
||||
local R, G, B = unpack(RGB)
|
||||
local H, S, L = unpack(HSL)
|
||||
local C, M, Y, K = unpack(CMYK)
|
||||
return { R, G, B, H, S, L, C, M, Y, K }
|
||||
end
|
||||
|
||||
function RgbHslCmykInput.to_rgb(value)
|
||||
return { value[1], value[2], value[3] }
|
||||
end
|
||||
|
||||
function RgbHslCmykInput:_set_rgb(RGB)
|
||||
self.value[1] = RGB[1]
|
||||
self.value[2] = RGB[2]
|
||||
self.value[3] = RGB[3]
|
||||
end
|
||||
|
||||
function RgbHslCmykInput:_set_hsl(HSL)
|
||||
self.value[4] = HSL[1]
|
||||
self.value[5] = HSL[2]
|
||||
self.value[6] = HSL[3]
|
||||
end
|
||||
|
||||
function RgbHslCmykInput:_set_cmyk(CMYK)
|
||||
self.value[7] = CMYK[1]
|
||||
self.value[8] = CMYK[2]
|
||||
self.value[9] = CMYK[3]
|
||||
self.value[10] = CMYK[4]
|
||||
end
|
||||
|
||||
function RgbHslCmykInput:callback(index, new_value)
|
||||
self.value[index] = new_value
|
||||
local v = self.value
|
||||
if index <= 3 then
|
||||
local RGB = { v[1], v[2], v[3] }
|
||||
local HSL = convert.rgb2hsl(RGB)
|
||||
local CMYK = convert.rgb2cmyk(RGB)
|
||||
self:_set_hsl(HSL)
|
||||
self:_set_cmyk(CMYK)
|
||||
elseif index <= 6 then
|
||||
local HSL = { v[4], v[5], v[6] }
|
||||
local RGB = convert.hsl2rgb(HSL)
|
||||
local CMYK = convert.rgb2cmyk(RGB)
|
||||
self:_set_rgb(RGB)
|
||||
self:_set_cmyk(CMYK)
|
||||
else
|
||||
local CMYK = { v[7], v[8], v[9], v[10] }
|
||||
local RGB = convert.cmyk2rgb(CMYK)
|
||||
local HSL = convert.rgb2hsl(RGB)
|
||||
self:_set_rgb(RGB)
|
||||
self:_set_hsl(HSL)
|
||||
end
|
||||
end
|
||||
|
||||
local ccc = require("ccc")
|
||||
ccc.setup({
|
||||
inputs = {
|
||||
RgbHslCmykInput,
|
||||
return {
|
||||
{
|
||||
"uga-rosa/ccc.nvim",
|
||||
event = { "BufReadPre", "BufNewFile" },
|
||||
config = function()
|
||||
require("plugins.configs.ccc")
|
||||
end,
|
||||
},
|
||||
highlighter = {
|
||||
auto_enable = true,
|
||||
lsp = true,
|
||||
},
|
||||
})
|
||||
}
|
||||
|
257
dots/.config/nvim/lua/plugins/configs/cmp.lua
Normal file
257
dots/.config/nvim/lua/plugins/configs/cmp.lua
Normal file
@ -0,0 +1,257 @@
|
||||
---@diagnostic disable: missing-fields
|
||||
return {
|
||||
{
|
||||
"hrsh7th/nvim-cmp",
|
||||
event = { "BufRead", "BufNewFile", "InsertEnter", "ModeChanged", "WinNew" },
|
||||
dependencies = {
|
||||
"hrsh7th/cmp-nvim-lsp",
|
||||
"hrsh7th/cmp-cmdline",
|
||||
"hrsh7th/cmp-emoji",
|
||||
"hrsh7th/cmp-nvim-lsp-document-symbol",
|
||||
"hrsh7th/cmp-calc",
|
||||
"davidsierradz/cmp-conventionalcommits",
|
||||
"tamago324/cmp-zsh",
|
||||
"dmitmel/cmp-cmdline-history",
|
||||
"David-Kunz/cmp-npm",
|
||||
"lukas-reineke/cmp-rg",
|
||||
"onsails/lspkind.nvim",
|
||||
"f3fora/cmp-spell",
|
||||
"FelipeLema/cmp-async-path",
|
||||
{
|
||||
"petertriho/cmp-git",
|
||||
dependencies = { "nvim-lua/plenary.nvim" },
|
||||
opts = { filetypes = { "*" } },
|
||||
},
|
||||
-- Snippets
|
||||
{
|
||||
"L3MON4D3/LuaSnip",
|
||||
build = "make install_jsregexp",
|
||||
dependencies = {
|
||||
"rafamadriz/friendly-snippets",
|
||||
"saadparwaiz1/cmp_luasnip",
|
||||
},
|
||||
},
|
||||
{
|
||||
"saecki/crates.nvim",
|
||||
dependencies = { "nvim-lua/plenary.nvim" },
|
||||
ft = "toml",
|
||||
config = true,
|
||||
},
|
||||
{
|
||||
"tzachar/cmp-fuzzy-buffer",
|
||||
dependencies = { "hrsh7th/nvim-cmp", "tzachar/fuzzy.nvim" },
|
||||
},
|
||||
},
|
||||
config = function()
|
||||
local cmp = require("cmp")
|
||||
local types = require("cmp.types")
|
||||
local str = require("cmp.utils.str")
|
||||
local compare = cmp.config.compare
|
||||
local luasnip = require("luasnip")
|
||||
|
||||
-- Load Snippets
|
||||
require("luasnip.loaders.from_vscode").lazy_load()
|
||||
|
||||
cmp.setup({
|
||||
formatting = {
|
||||
fields = { cmp.ItemField.Kind, cmp.ItemField.Abbr, cmp.ItemField.Menu },
|
||||
format = function(entry, vim_item)
|
||||
local selections = {
|
||||
fuzzy_buffer = { symbol = " ", name = "Buffer", hl_group = "Buffer" },
|
||||
calc = { symbol = " ", name = "Calculator", hl_group = "Calculator" },
|
||||
neorg = { symbol = " ", name = "Neorg", hl_group = "Neorg" },
|
||||
emoji = { symbol = " ", name = "Emoji", hl_group = "Emoji" },
|
||||
zsh = { symbol = " ", name = "Zsh", hl_group = "Zsh" },
|
||||
crates = { symbol = " ", name = "Crates", hl_group = "Crates" },
|
||||
cmdline_history = { symbol = " ", name = "Cmd History", hl_group = "CmdHistory" },
|
||||
rg = { symbol = " ", name = "Ripgrep", hl_group = "Ripgrep" },
|
||||
npm = { symbol = " ", name = "Npm,", hl_group = "Npm," },
|
||||
conventionalcommits = { symbol = " ", name = "Commit", hl_group = "Commit" },
|
||||
spell = { symbol = " ", name = "Spell", hl_group = "Spell" },
|
||||
git = { symbol = " ", name = "Git", hl_group = "Git" },
|
||||
}
|
||||
|
||||
local extra_kind_icons = {
|
||||
TypeParameter = "",
|
||||
}
|
||||
|
||||
local selection = selections[entry.source.name]
|
||||
if not selection then
|
||||
local kind = require("lspkind").cmp_format({
|
||||
mode = "symbol_text",
|
||||
maxwidth = 50,
|
||||
})(entry, vim_item)
|
||||
local strings = vim.split(kind.kind, "%s", { trimempty = true })
|
||||
if not strings[2] then
|
||||
strings[2] = strings[1]
|
||||
strings[1] = extra_kind_icons[strings[1]] or ""
|
||||
end
|
||||
kind.kind = " " .. strings[1] .. " "
|
||||
vim_item.menu = (strings[1] or "") .. " " .. (strings[2] or "")
|
||||
return kind
|
||||
else
|
||||
local word = entry:get_insert_text()
|
||||
if entry.completion_item.insertTextFormat == types.lsp.InsertTextFormat.Snippet then
|
||||
word = vim.lsp.util.parse_snippet(word)
|
||||
end
|
||||
word = str.oneline(word)
|
||||
|
||||
-- concatenates the string
|
||||
local max = 50
|
||||
if string.len(word) >= max then
|
||||
local before = string.sub(word, 1, math.floor((max - 3) / 2))
|
||||
word = before .. "..."
|
||||
end
|
||||
vim_item.kind = " " .. selection.symbol
|
||||
vim_item.menu = selection.symbol .. selection.name
|
||||
vim_item.kind_hl_group = "CmpCustomSelection" .. selection.hl_group
|
||||
vim_item.abbr = word
|
||||
return vim_item
|
||||
end
|
||||
end,
|
||||
},
|
||||
view = {
|
||||
entries = {
|
||||
name = "custom",
|
||||
selection_order = "near_cursor",
|
||||
},
|
||||
},
|
||||
window = {
|
||||
documentation = {
|
||||
side_padding = 0,
|
||||
},
|
||||
completion = {
|
||||
winhighlight = "Normal:Normal,FloatBorder:FloatBorder,CursorLine:Visual,Search:None",
|
||||
col_offset = -3,
|
||||
side_padding = 0,
|
||||
},
|
||||
},
|
||||
experimental = { ghost_text = "Comment", native_menu = false },
|
||||
snippet = {
|
||||
-- REQUIRED - you must specify a snippet engine
|
||||
expand = function(args)
|
||||
require("luasnip").lsp_expand(args.body) -- For `luasnip` users.
|
||||
end,
|
||||
},
|
||||
mapping = {
|
||||
["<C-b>"] = cmp.mapping(cmp.mapping.scroll_docs(-4), { "i", "c" }),
|
||||
["<C-f>"] = cmp.mapping(cmp.mapping.scroll_docs(4), { "i", "c" }),
|
||||
["<C-Space>"] = cmp.mapping(cmp.mapping.complete(), { "i", "c" }),
|
||||
["<C-y>"] = cmp.config.disable, -- Specify `cmp.config.disable` if you want to remove the default `<C-y>` mapping.
|
||||
["<C-e>"] = cmp.mapping({
|
||||
i = cmp.mapping.abort(),
|
||||
c = cmp.mapping.close(),
|
||||
}),
|
||||
["<CR>"] = cmp.mapping.confirm({ select = false }), -- Accept currently selected item. Set `select` to `false` to only confirm explicitly selected items.
|
||||
["<C-Tab>"] = cmp.mapping(function(fallback)
|
||||
if luasnip.expand_or_jumpable() then
|
||||
luasnip.expand_or_jump()
|
||||
else
|
||||
fallback()
|
||||
end
|
||||
end, { "i", "s" }),
|
||||
["<C-S-Tab>"] = cmp.mapping(function(fallback)
|
||||
if luasnip.jumpable(-1) then
|
||||
luasnip.jump(-1)
|
||||
else
|
||||
fallback()
|
||||
end
|
||||
end, { "i", "s" }),
|
||||
["<Tab>"] = cmp.mapping(function(fallback)
|
||||
if cmp.visible() then
|
||||
cmp.select_next_item()
|
||||
else
|
||||
fallback()
|
||||
end
|
||||
end, { "i", "s" }),
|
||||
["<S-Tab>"] = cmp.mapping(function(fallback)
|
||||
if cmp.visible() then
|
||||
cmp.select_prev_item()
|
||||
elseif luasnip.jumpable(-1) then
|
||||
luasnip.jump(-1)
|
||||
else
|
||||
fallback()
|
||||
end
|
||||
end, { "i", "s" }),
|
||||
},
|
||||
sources = cmp.config.sources({
|
||||
{ name = "nvim_lsp", priority = 11 },
|
||||
{ name = "luasnip", priority = 10 }, -- For luasnip users.
|
||||
{ name = "fuzzy_buffer", priority = 9, keyword_length = 3, max_item_count = 10 },
|
||||
{
|
||||
name = "rg",
|
||||
priority = 7,
|
||||
keyword_length = 3,
|
||||
max_item_count = 10,
|
||||
},
|
||||
{ name = "async_path", priority = 6 },
|
||||
{ name = "zsh", priority = 5 },
|
||||
{ name = "git", priority = 4 },
|
||||
{ name = "emoji", keyword_length = 2 },
|
||||
{ name = "neorg" },
|
||||
{ name = "calc" },
|
||||
{ name = "npm", keyword_length = 2 },
|
||||
{ name = "spell", keyword_length = 2 },
|
||||
}),
|
||||
sorting = {
|
||||
comparators = {
|
||||
compare.score,
|
||||
compare.offset,
|
||||
compare.recently_used,
|
||||
compare.exact,
|
||||
require("cmp_fuzzy_buffer.compare"),
|
||||
compare.kind,
|
||||
compare.sort_text,
|
||||
compare.length,
|
||||
compare.order,
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
-- Git Commit Completions
|
||||
cmp.setup.filetype("gitcommit", {
|
||||
sources = cmp.config.sources({
|
||||
{ name = "conventionalcommits", priority = 3 },
|
||||
{ name = " git", priority = 2 },
|
||||
{ name = "emoji", keyword_length = 2, priority = 1 },
|
||||
}),
|
||||
})
|
||||
|
||||
cmp.setup.filetype("toml", { sources = cmp.config.sources({ { name = "crates" } }) })
|
||||
|
||||
-- Use buffer source for `/` (if you enabled `native_menu`, this won't work anymore).
|
||||
cmp.setup.cmdline("/", {
|
||||
mapping = cmp.mapping.preset.cmdline(),
|
||||
sources = cmp.config.sources({ { name = "fuzzy_buffer" } }),
|
||||
})
|
||||
|
||||
cmp.setup.cmdline("?", {
|
||||
mapping = cmp.mapping.preset.cmdline(),
|
||||
sources = cmp.config.sources({ { name = "fuzzy_buffer" } }),
|
||||
})
|
||||
|
||||
cmp.setup.cmdline("@", {
|
||||
mapping = cmp.mapping.preset.cmdline(),
|
||||
sources = cmp.config.sources({
|
||||
{ name = "fuzzy_buffer" },
|
||||
{ name = "cmdline_history" },
|
||||
}),
|
||||
})
|
||||
|
||||
-- Use cmdline & path source for ':' (if you enabled `native_menu`, this won't work anymore).
|
||||
cmp.setup.cmdline(":", {
|
||||
mapping = cmp.mapping.preset.cmdline(),
|
||||
sources = cmp.config.sources({
|
||||
{
|
||||
name = "cmdline",
|
||||
option = {
|
||||
ignore_cmds = { "!" },
|
||||
},
|
||||
},
|
||||
{ name = "cmdline_history" },
|
||||
{ name = "fuzzy_buffer" },
|
||||
}),
|
||||
})
|
||||
end,
|
||||
},
|
||||
}
|
13
dots/.config/nvim/lua/plugins/configs/comment.lua
Normal file
13
dots/.config/nvim/lua/plugins/configs/comment.lua
Normal file
@ -0,0 +1,13 @@
|
||||
return {
|
||||
{
|
||||
"terrortylor/nvim-comment",
|
||||
cmd = "CommentToggle",
|
||||
config = function()
|
||||
require("nvim_comment").setup({})
|
||||
end,
|
||||
keys = {
|
||||
{ "<leader>/", "<cmd>CommentToggle<CR>", desc = "Toggle Comment"},
|
||||
{ "<leader>/", ":'<,'>CommentToggle<CR>", desc = "Toggle Selection Comment", mode = { "v" } },
|
||||
},
|
||||
},
|
||||
}
|
@ -1,9 +0,0 @@
|
||||
local fn = vim.fn
|
||||
|
||||
require("dapui").setup({})
|
||||
|
||||
fn.sign_define("DapBreakpoint", { text = "● ", texthl = "DiagnosticSignError", linehl = "", numhl = "" })
|
||||
fn.sign_define("DapBreakpointCondition", { text = "● ", texthl = "DiagnosticSignWarn", linehl = "", numhl = "" })
|
||||
fn.sign_define("DapLogPoint", { text = "● ", texthl = "DiagnosticSignInfo", linehl = "", numhl = "" })
|
||||
fn.sign_define("DapStopped", { text = "→ ", texthl = "DiagnosticSignWarn", linehl = "", numhl = "" })
|
||||
fn.sign_define("DapBreakpointReject", { text = "●", texthl = "DiagnosticSignHint", linehl = "", numhl = "" })
|
278
dots/.config/nvim/lua/plugins/configs/dap.lua
Normal file
278
dots/.config/nvim/lua/plugins/configs/dap.lua
Normal file
@ -0,0 +1,278 @@
|
||||
return {
|
||||
{
|
||||
"rcarriga/nvim-dap-ui",
|
||||
event = { "BufReadPre", "BufNewFile" },
|
||||
keys = {
|
||||
{
|
||||
"<leader>dt",
|
||||
function()
|
||||
require("dapui").toggle()
|
||||
end,
|
||||
desc = "DAP: Toggle UI",
|
||||
},
|
||||
},
|
||||
dependencies = {
|
||||
"mfussenegger/nvim-dap",
|
||||
},
|
||||
opts = function()
|
||||
vim.fn.sign_define(
|
||||
"DapBreakpoint",
|
||||
{ text = "● ", texthl = "DiagnosticSignError", linehl = "", numhl = "" }
|
||||
)
|
||||
vim.fn.sign_define(
|
||||
"DapBreakpointCondition",
|
||||
{ text = "● ", texthl = "DiagnosticSignWarn", linehl = "", numhl = "" }
|
||||
)
|
||||
vim.fn.sign_define("DapLogPoint", { text = "● ", texthl = "DiagnosticSignInfo", linehl = "", numhl = "" })
|
||||
vim.fn.sign_define("DapStopped", { text = "→ ", texthl = "DiagnosticSignWarn", linehl = "", numhl = "" })
|
||||
vim.fn.sign_define(
|
||||
"DapBreakpointReject",
|
||||
{ text = "●", texthl = "DiagnosticSignHint", linehl = "", numhl = "" }
|
||||
)
|
||||
return {}
|
||||
end,
|
||||
},
|
||||
{
|
||||
"theHamsta/nvim-dap-virtual-text",
|
||||
event = { "BufReadPre", "BufNewFile" },
|
||||
config = true,
|
||||
},
|
||||
{
|
||||
"mfussenegger/nvim-dap",
|
||||
dependencies = {
|
||||
{
|
||||
"mfussenegger/nvim-dap-python",
|
||||
config = function()
|
||||
local dap_python = require("dap-python")
|
||||
dap_python.test_runner = "pytest"
|
||||
dap_python.setup(vim.fn.stdpath("data") .. "/mason/packages/debugpy/venv/bin/python3")
|
||||
end,
|
||||
},
|
||||
},
|
||||
keys = {
|
||||
{ "<leader>d", desc = "> DAP" },
|
||||
{
|
||||
"<leader>dc",
|
||||
"<cmd>DapContinue<CR>",
|
||||
desc = "DAP: Continue",
|
||||
},
|
||||
{
|
||||
"<leader>de",
|
||||
"<cmd>DapTerminate<CR>",
|
||||
desc = "DAP: Terminate",
|
||||
},
|
||||
{
|
||||
"<leader>db",
|
||||
"<cmd>DapToggleBreakpoint<CR>",
|
||||
desc = "DAP: Toggle Breakpoint",
|
||||
},
|
||||
{
|
||||
"<leader>dr",
|
||||
function()
|
||||
require("dap").set_breakpoint(vim.fn.input("Breakpoint Condition: "))
|
||||
end,
|
||||
desc = "DAP: Set Conditional Breakpoint",
|
||||
},
|
||||
{
|
||||
"<leader>dp",
|
||||
function()
|
||||
require("dap").set_breakpoint(nil, nil, vim.fn.input("Log point message: "))
|
||||
end,
|
||||
desc = "DAP: Set Log Breakpoint",
|
||||
},
|
||||
{
|
||||
"<F5>",
|
||||
"<cmd>DapStepOver<CR>",
|
||||
desc = "DAP: Step Over",
|
||||
},
|
||||
{
|
||||
"<F6>",
|
||||
"<cmd>DapStepInto<CR>",
|
||||
desc = "DAP: Step Into",
|
||||
},
|
||||
{
|
||||
"<F7>",
|
||||
"<cmd>DapStepOut<CR>",
|
||||
desc = "DAP: Step Out",
|
||||
},
|
||||
{
|
||||
"<F8>",
|
||||
function()
|
||||
require("dap").step_back()
|
||||
end,
|
||||
desc = "DAP: Step Back",
|
||||
},
|
||||
{
|
||||
"<leader>dR",
|
||||
function()
|
||||
require("dap").run_to_cursor()
|
||||
end,
|
||||
desc = "DAP: Run to Cursor",
|
||||
},
|
||||
{
|
||||
"<leader>do",
|
||||
function()
|
||||
require("dap").repl.open()
|
||||
end,
|
||||
desc = "DAP: Open Repl",
|
||||
},
|
||||
{
|
||||
"<leader>dl",
|
||||
function()
|
||||
require("dap").run_last()
|
||||
end,
|
||||
desc = "DAP: Run Last",
|
||||
},
|
||||
event = { "BufReadPre", "BufNewFile" },
|
||||
config = function()
|
||||
require("dap.ext.vscode").load_launchjs()
|
||||
|
||||
local dap = require("dap")
|
||||
|
||||
--- Gets a path for a given program in the environment
|
||||
---@param program string String of a program in the Mason packages
|
||||
---@return Path Full path to the program if found, or nil if not
|
||||
local function get_program_path(program)
|
||||
local program_path = vim.fn.stdpath("data") .. "/mason/packages/" .. program .. "/" .. program
|
||||
return program_path
|
||||
end
|
||||
|
||||
local lldb_path = get_program_path("codelldb")
|
||||
-- Adapaters
|
||||
dap.adapters.lldb = {
|
||||
type = "server",
|
||||
port = "${port}",
|
||||
executable = {
|
||||
command = lldb_path,
|
||||
args = { "--port", "${port}" },
|
||||
},
|
||||
name = "lldb",
|
||||
}
|
||||
|
||||
dap.adapters.coreclr = {
|
||||
type = "executable",
|
||||
command = get_program_path("netcoredbg"),
|
||||
args = { "--interpreter=vscode" },
|
||||
}
|
||||
|
||||
dap.adapters.bashdb = {
|
||||
type = "executable",
|
||||
command = vim.fn.stdpath("data") .. "/mason/packages/bash-debug-adapter/bash-debug-adapter",
|
||||
name = "bashdb",
|
||||
}
|
||||
|
||||
-- configurations
|
||||
dap.configurations.cpp = {
|
||||
{
|
||||
name = "Launch",
|
||||
type = "lldb",
|
||||
request = "launch",
|
||||
program = function()
|
||||
return vim.fn.input("Path to executable: ", vim.fn.getcwd() .. "/", "file")
|
||||
end,
|
||||
cwd = "${workspaceFolder}",
|
||||
stopOnEntry = false,
|
||||
args = {},
|
||||
|
||||
-- if you change `runInTerminal` to true, you might need to change the yama/ptrace_scope setting:
|
||||
--
|
||||
-- echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope
|
||||
--
|
||||
-- Otherwise you might get the following error:
|
||||
--
|
||||
-- Error on launch: Failed to attach to the target process
|
||||
--
|
||||
-- But you should be aware of the implications:
|
||||
-- https://www.kernel.org/doc/html/latest/admin-guide/LSM/Yama.html
|
||||
runInTerminal = false,
|
||||
},
|
||||
}
|
||||
|
||||
dap.configurations.c = dap.configurations.cpp
|
||||
dap.configurations.asm = dap.configurations.cpp
|
||||
dap.configurations.rust = dap.configurations.cpp
|
||||
|
||||
vim.g.dotnet_build_project = function()
|
||||
local default_path = vim.fn.getcwd() .. "/"
|
||||
if vim.g["dotnet_last_proj_path"] ~= nil then
|
||||
default_path = vim.g["dotnet_last_proj_path"]
|
||||
end
|
||||
local path = vim.fn.input("Path to your *proj file", default_path, "file")
|
||||
vim.g["dotnet_last_proj_path"] = path
|
||||
local cmd = "dotnet build -c Debug " .. path .. " > /dev/null"
|
||||
print("")
|
||||
print("Cmd to execute: " .. cmd)
|
||||
local f = os.execute(cmd)
|
||||
if f == 0 then
|
||||
print("\nBuild: ✔️ ")
|
||||
else
|
||||
print("\nBuild: ❌ (code: " .. f .. ")")
|
||||
end
|
||||
end
|
||||
|
||||
vim.g.dotnet_get_dll_path = function()
|
||||
local request = function()
|
||||
return vim.fn.input("Path to dll", vim.fn.getcwd() .. "/bin/Debug/", "file")
|
||||
end
|
||||
|
||||
if vim.g["dotnet_last_dll_path"] == nil then
|
||||
vim.g["dotnet_last_dll_path"] = request()
|
||||
else
|
||||
if
|
||||
vim.fn.confirm(
|
||||
"Do you want to change the path to dll?\n" .. vim.g["dotnet_last_dll_path"],
|
||||
"&yes\n&no",
|
||||
2
|
||||
) == 1
|
||||
then
|
||||
vim.g["dotnet_last_dll_path"] = request()
|
||||
end
|
||||
end
|
||||
|
||||
return vim.g["dotnet_last_dll_path"]
|
||||
end
|
||||
|
||||
local config = {
|
||||
{
|
||||
type = "coreclr",
|
||||
name = "launch - netcoredbg",
|
||||
request = "launch",
|
||||
program = function()
|
||||
if vim.fn.confirm("Should I recompile first?", "&yes\n&no", 2) == 1 then
|
||||
vim.g.dotnet_build_project()
|
||||
end
|
||||
return vim.g.dotnet_get_dll_path()
|
||||
end,
|
||||
},
|
||||
}
|
||||
|
||||
dap.configurations.cs = config
|
||||
dap.configurations.fsharp = config
|
||||
|
||||
dap.configurations.sh = {
|
||||
{
|
||||
type = "bashdb",
|
||||
request = "launch",
|
||||
name = "Launch file",
|
||||
showDebugOutput = true,
|
||||
pathBashdb = vim.fn.stdpath("data")
|
||||
.. "/mason/packages/bash-debug-adapter/extension/bashdb_dir/bashdb",
|
||||
pathBashdbLib = vim.fn.stdpath("data")
|
||||
.. "/mason/packages/bash-debug-adapter/extension/bashdb_dir",
|
||||
trace = true,
|
||||
file = "${file}",
|
||||
program = "${file}",
|
||||
cwd = "${workspaceFolder}",
|
||||
pathCat = "cat",
|
||||
pathBash = "/bin/bash",
|
||||
pathMkfifo = "mkfifo",
|
||||
pathPkill = "pkill",
|
||||
args = {},
|
||||
env = {},
|
||||
terminalKind = "integrated",
|
||||
},
|
||||
}
|
||||
end,
|
||||
},
|
||||
},
|
||||
}
|
74
dots/.config/nvim/lua/plugins/configs/git.lua
Normal file
74
dots/.config/nvim/lua/plugins/configs/git.lua
Normal file
@ -0,0 +1,74 @@
|
||||
return {
|
||||
{
|
||||
"NeogitOrg/neogit",
|
||||
cmd = { "Neogit" },
|
||||
dev = true,
|
||||
keys = {
|
||||
{ "<leader>g", desc = "> Git" },
|
||||
{ "<leader>gg", "<cmd>Neogit<CR>", desc = "Neogit: Open" },
|
||||
},
|
||||
opts = function()
|
||||
vim.api.nvim_create_autocmd("FileType", {
|
||||
pattern = "*Neogit*",
|
||||
callback = function()
|
||||
vim.opt_local.list = false
|
||||
end,
|
||||
})
|
||||
|
||||
return {
|
||||
disable_insert_on_commit = "auto",
|
||||
disable_commit_confirmation = true,
|
||||
disable_builtin_notifications = true,
|
||||
integrations = {
|
||||
diffview = true,
|
||||
telescope = true,
|
||||
},
|
||||
}
|
||||
end,
|
||||
dependencies = {
|
||||
{
|
||||
keys = {
|
||||
{ "<leader>gd", "<cmd>DiffviewOpen<CR>", desc = "Diff View: Open" },
|
||||
{"<leader>gh", "<cmd>DiffviewFileHistory<CR>", desc = "Diff View: File History" }
|
||||
|
||||
},
|
||||
"sindrets/diffview.nvim",
|
||||
cmd = {
|
||||
"DiffviewToggleFiles",
|
||||
"DiffviewFileHistory",
|
||||
"DiffviewFocusFiles",
|
||||
"DiffviewRefresh",
|
||||
"DiffviewClose",
|
||||
"DiffviewOpen",
|
||||
"DiffviewLog"
|
||||
},
|
||||
opts = {
|
||||
enhanced_diff_hl = true,
|
||||
},
|
||||
},
|
||||
"nvim-lua/plenary.nvim",
|
||||
"nvim-telescope/telescope.nvim",
|
||||
},
|
||||
},
|
||||
{
|
||||
"tpope/vim-fugitive",
|
||||
-- event = "VeryLazy",
|
||||
},
|
||||
{
|
||||
"lewis6991/gitsigns.nvim",
|
||||
event = { "BufReadPre", "BufNewFile" },
|
||||
keys = {
|
||||
{ "]g", "<cmd>Gitsigns next_hunk<CR><CR>", desc = "Gitsigns: Next Hunk" },
|
||||
{ "[g", "<cmd>Gitsigns prev_hunk<CR><CR>", desc = "Gitsigns: Prev Hunk" },
|
||||
{ "<leader>gs", "<cmd>Gitsigns stage_hunk<CR>", desc = "Gitsigns: Stage Hunk" },
|
||||
{ "<leader>gr", "<cmd>Gitsigns reset_hunk<CR>", desc = "Gitsigns: Reset Hunk" },
|
||||
{ "<leader>gu", "<cmd>Gitsigns undo_stage_hunk<CR>", desc = "Gitsigns: Unstage Hunk" },
|
||||
},
|
||||
opts = {
|
||||
current_line_blame = true,
|
||||
current_line_blame_opts = {
|
||||
delay = 0,
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
13
dots/.config/nvim/lua/plugins/configs/github.lua
Normal file
13
dots/.config/nvim/lua/plugins/configs/github.lua
Normal file
@ -0,0 +1,13 @@
|
||||
return {
|
||||
{
|
||||
"ldelossa/gh.nvim",
|
||||
cmd = { "GH" },
|
||||
dependencies = { "ldelossa/litee.nvim" },
|
||||
config = function()
|
||||
require("litee.lib").setup()
|
||||
require("litee.gh").setup({
|
||||
refresh_interval = 60000,
|
||||
})
|
||||
end,
|
||||
},
|
||||
}
|
23
dots/.config/nvim/lua/plugins/configs/hop.lua
Normal file
23
dots/.config/nvim/lua/plugins/configs/hop.lua
Normal file
@ -0,0 +1,23 @@
|
||||
return {
|
||||
{
|
||||
"phaazon/hop.nvim",
|
||||
keys = {
|
||||
{"f", function() require("hop").hint_char1({ current_line_only = false, }) end, desc = "Hop: Character", mode = { "" } },
|
||||
{";l", "<cmd>HopLineStart<CR>", desc = "Hop: Line Start" },
|
||||
{";s", "<cmd>HopPattern<CR>", desc = "Hop: Pattern" },
|
||||
{";;", "<cmd>HopWord<CR>", desc = "Hop: Word" },
|
||||
{";a", "<cmd>HopAnywhere<CR>", desc = "Hop: Anywhere" },
|
||||
{";v", "<cmd>HopVertical<CR>", desc = "Hop Vertical" },
|
||||
},
|
||||
cmd = {
|
||||
"HopLineStart",
|
||||
"HopPattern",
|
||||
"HopWord",
|
||||
"HopAnywhere",
|
||||
"HopVertical",
|
||||
},
|
||||
opts = {
|
||||
keys = "etovxqpdygfblzhckisuran",
|
||||
},
|
||||
},
|
||||
}
|
@ -1,37 +1,50 @@
|
||||
local hydra = require("hydra")
|
||||
local wk = require("which-key")
|
||||
wk.register({
|
||||
h = {
|
||||
name = "Hydra",
|
||||
o = { "Options" },
|
||||
g = { "Git Signs" },
|
||||
d = { "Diagram" },
|
||||
},
|
||||
}, { prefix = "<leader>" })
|
||||
|
||||
-- Side Scroll
|
||||
hydra({
|
||||
name = "Side scroll",
|
||||
config = {
|
||||
{
|
||||
position = "bottom-right",
|
||||
border = "rounded",
|
||||
return {
|
||||
{
|
||||
"anuvyklack/hydra.nvim",
|
||||
dependencies = {
|
||||
"anuvyklack/keymap-layer.nvim",
|
||||
"lewis6991/gitsigns.nvim",
|
||||
"jbyuki/venn.nvim",
|
||||
"folke/which-key.nvim",
|
||||
},
|
||||
},
|
||||
mode = "n",
|
||||
body = "z",
|
||||
heads = {
|
||||
{ "h", "5zh" },
|
||||
{ "l", "5zl", { desc = "←/→" } },
|
||||
{ "H", "zH" },
|
||||
{ "L", "zL", { desc = "half screen ←/→" } },
|
||||
},
|
||||
})
|
||||
keys = {
|
||||
{ "<leader>h", desc = "> Hydra" },
|
||||
},
|
||||
config = function()
|
||||
local hydra = require("hydra")
|
||||
local wk = require("which-key")
|
||||
wk.register({
|
||||
h = {
|
||||
name = "Hydra",
|
||||
o = { "Options" },
|
||||
g = { "Git Signs" },
|
||||
d = { "Diagram" },
|
||||
},
|
||||
}, { prefix = "<leader>" })
|
||||
|
||||
-- Git Integration
|
||||
local gitsigns = require("gitsigns")
|
||||
-- Side Scroll
|
||||
hydra({
|
||||
name = "Side scroll",
|
||||
config = {
|
||||
{
|
||||
position = "bottom-right",
|
||||
border = "rounded",
|
||||
},
|
||||
},
|
||||
mode = "n",
|
||||
body = "z",
|
||||
heads = {
|
||||
{ "h", "5zh" },
|
||||
{ "l", "5zl", { desc = "←/→" } },
|
||||
{ "H", "zH" },
|
||||
{ "L", "zL", { desc = "half screen ←/→" } },
|
||||
},
|
||||
})
|
||||
|
||||
local hint = [[
|
||||
-- Git Integration
|
||||
local gitsigns = require("gitsigns")
|
||||
|
||||
local hint = [[
|
||||
_J_: next hunk _s_: stage hunk _d_: show deleted _b_: blame line
|
||||
_K_: prev hunk _u_: undo stage hunk _p_: preview hunk _B_: blame show full
|
||||
^ ^ _S_: stage buffer ^ ^ _/_: show base file
|
||||
@ -39,129 +52,129 @@ local hint = [[
|
||||
^ ^ _<Enter>_: Neogit _q_: exit
|
||||
]]
|
||||
|
||||
hydra({
|
||||
hint = hint,
|
||||
config = {
|
||||
color = "pink",
|
||||
invoke_on_body = true,
|
||||
hint = {
|
||||
position = "bottom-right",
|
||||
border = "rounded",
|
||||
},
|
||||
on_enter = function()
|
||||
vim.bo.modifiable = false
|
||||
gitsigns.toggle_signs(true)
|
||||
gitsigns.toggle_linehl(true)
|
||||
end,
|
||||
on_exit = function()
|
||||
gitsigns.toggle_signs(false)
|
||||
gitsigns.toggle_linehl(false)
|
||||
gitsigns.toggle_deleted(false)
|
||||
end,
|
||||
},
|
||||
mode = { "n", "x" },
|
||||
body = "<leader>hg",
|
||||
heads = {
|
||||
{
|
||||
"J",
|
||||
function()
|
||||
if vim.wo.diff then
|
||||
return "]c"
|
||||
end
|
||||
vim.schedule(function()
|
||||
gitsigns.next_hunk()
|
||||
end)
|
||||
return "<Ignore>"
|
||||
end,
|
||||
{ expr = true },
|
||||
},
|
||||
{
|
||||
"K",
|
||||
function()
|
||||
if vim.wo.diff then
|
||||
return "[c"
|
||||
end
|
||||
vim.schedule(function()
|
||||
gitsigns.prev_hunk()
|
||||
end)
|
||||
return "<Ignore>"
|
||||
end,
|
||||
{ expr = true },
|
||||
},
|
||||
{ "s", ":Gitsigns stage_hunk<CR>", { silent = true } },
|
||||
{ "u", gitsigns.undo_stage_hunk },
|
||||
{ "S", gitsigns.stage_buffer },
|
||||
{ "p", gitsigns.preview_hunk },
|
||||
{ "d", gitsigns.toggle_deleted, { nowait = true } },
|
||||
{ "b", gitsigns.blame_line },
|
||||
{
|
||||
"B",
|
||||
function()
|
||||
gitsigns.blame_line({ full = true })
|
||||
end,
|
||||
},
|
||||
{ "/", gitsigns.show, { exit = true } }, -- show the base of the file
|
||||
{ "<Enter>", "<cmd>Neogit<CR>", { exit = true } },
|
||||
{ "q", nil, { exit = true, nowait = true } },
|
||||
},
|
||||
})
|
||||
hydra({
|
||||
hint = hint,
|
||||
config = {
|
||||
color = "pink",
|
||||
invoke_on_body = true,
|
||||
hint = {
|
||||
position = "bottom-right",
|
||||
border = "rounded",
|
||||
},
|
||||
on_enter = function()
|
||||
vim.bo.modifiable = false
|
||||
gitsigns.toggle_signs(true)
|
||||
gitsigns.toggle_linehl(true)
|
||||
end,
|
||||
on_exit = function()
|
||||
gitsigns.toggle_signs(false)
|
||||
gitsigns.toggle_linehl(false)
|
||||
gitsigns.toggle_deleted(false)
|
||||
end,
|
||||
},
|
||||
mode = { "n", "x" },
|
||||
body = "<leader>hg",
|
||||
heads = {
|
||||
{
|
||||
"J",
|
||||
function()
|
||||
if vim.wo.diff then
|
||||
return "]c"
|
||||
end
|
||||
vim.schedule(function()
|
||||
gitsigns.next_hunk()
|
||||
end)
|
||||
return "<Ignore>"
|
||||
end,
|
||||
{ expr = true },
|
||||
},
|
||||
{
|
||||
"K",
|
||||
function()
|
||||
if vim.wo.diff then
|
||||
return "[c"
|
||||
end
|
||||
vim.schedule(function()
|
||||
gitsigns.prev_hunk()
|
||||
end)
|
||||
return "<Ignore>"
|
||||
end,
|
||||
{ expr = true },
|
||||
},
|
||||
{ "s", ":Gitsigns stage_hunk<CR>", { silent = true } },
|
||||
{ "u", gitsigns.undo_stage_hunk },
|
||||
{ "S", gitsigns.stage_buffer },
|
||||
{ "p", gitsigns.preview_hunk },
|
||||
{ "d", gitsigns.toggle_deleted, { nowait = true } },
|
||||
{ "b", gitsigns.blame_line },
|
||||
{
|
||||
"B",
|
||||
function()
|
||||
gitsigns.blame_line({ full = true })
|
||||
end,
|
||||
},
|
||||
{ "/", gitsigns.show, { exit = true } }, -- show the base of the file
|
||||
{ "<Enter>", "<cmd>Neogit<CR>", { exit = true } },
|
||||
{ "q", nil, { exit = true, nowait = true } },
|
||||
},
|
||||
})
|
||||
|
||||
-- Hydra to repeat expanding windows
|
||||
hydra({
|
||||
name = "Window Sizing",
|
||||
mode = "n",
|
||||
body = "<C-w>",
|
||||
config = {
|
||||
{
|
||||
position = "bottom-right",
|
||||
border = "rounded",
|
||||
},
|
||||
},
|
||||
heads = {
|
||||
{ "<", "2<C-w><" },
|
||||
{ ">", "2<C-w>>", { desc = "←/→" } },
|
||||
{ "+", "2<C-w>+" },
|
||||
{ "-", "2<C-w>-", { desc = "↑/↓" } },
|
||||
},
|
||||
})
|
||||
-- Hydra to repeat expanding windows
|
||||
hydra({
|
||||
name = "Window Sizing",
|
||||
mode = "n",
|
||||
body = "<C-w>",
|
||||
config = {
|
||||
{
|
||||
position = "bottom-right",
|
||||
border = "rounded",
|
||||
},
|
||||
},
|
||||
heads = {
|
||||
{ "<", "2<C-w><" },
|
||||
{ ">", "2<C-w>>", { desc = "←/→" } },
|
||||
{ "+", "2<C-w>+" },
|
||||
{ "-", "2<C-w>-", { desc = "↑/↓" } },
|
||||
},
|
||||
})
|
||||
|
||||
-- Hydra for diagrams
|
||||
-- Hydra for diagrams
|
||||
|
||||
hydra({
|
||||
name = "Draw Diagram",
|
||||
hint = [[
|
||||
hydra({
|
||||
name = "Draw Diagram",
|
||||
hint = [[
|
||||
Arrow^^^^^^ Select region with <C-v>
|
||||
^ ^ _K_ ^ ^ _f_: surround it with box
|
||||
_H_ ^ ^ _L_
|
||||
^ ^ _J_ ^ ^ _<Esc>_
|
||||
]],
|
||||
config = {
|
||||
color = "pink",
|
||||
invoke_on_body = true,
|
||||
hint = {
|
||||
border = "rounded",
|
||||
},
|
||||
on_enter = function()
|
||||
vim.o.virtualedit = "all"
|
||||
vim.o.cursorline = true
|
||||
vim.o.cursorcolumn = true
|
||||
end,
|
||||
},
|
||||
mode = "n",
|
||||
body = "<leader>hd",
|
||||
heads = {
|
||||
{ "H", "<C-v>h:VBox<CR>" },
|
||||
{ "J", "<C-v>j:VBox<CR>" },
|
||||
{ "K", "<C-v>k:VBox<CR>" },
|
||||
{ "L", "<C-v>l:VBox<CR>" },
|
||||
{ "f", ":VBox<CR>", { mode = "v" } },
|
||||
{ "<Esc>", nil, { exit = true } },
|
||||
},
|
||||
})
|
||||
config = {
|
||||
color = "pink",
|
||||
invoke_on_body = true,
|
||||
hint = {
|
||||
border = "rounded",
|
||||
},
|
||||
on_enter = function()
|
||||
vim.o.virtualedit = "all"
|
||||
vim.o.cursorline = true
|
||||
vim.o.cursorcolumn = true
|
||||
end,
|
||||
},
|
||||
mode = "n",
|
||||
body = "<leader>hd",
|
||||
heads = {
|
||||
{ "H", "<C-v>h:VBox<CR>" },
|
||||
{ "J", "<C-v>j:VBox<CR>" },
|
||||
{ "K", "<C-v>k:VBox<CR>" },
|
||||
{ "L", "<C-v>l:VBox<CR>" },
|
||||
{ "f", ":VBox<CR>", { mode = "v" } },
|
||||
{ "<Esc>", nil, { exit = true } },
|
||||
},
|
||||
})
|
||||
|
||||
hydra({
|
||||
name = "Options",
|
||||
hint = [[
|
||||
hydra({
|
||||
name = "Options",
|
||||
hint = [[
|
||||
^ ^ Options
|
||||
^
|
||||
_v_ %{ve} virtual edit
|
||||
@ -174,109 +187,112 @@ hydra({
|
||||
^
|
||||
^^^^ _<Esc>_
|
||||
]],
|
||||
config = {
|
||||
color = "amaranth",
|
||||
invoke_on_body = true,
|
||||
hint = {
|
||||
border = "rounded",
|
||||
position = "middle",
|
||||
},
|
||||
config = {
|
||||
color = "amaranth",
|
||||
invoke_on_body = true,
|
||||
hint = {
|
||||
border = "rounded",
|
||||
position = "middle",
|
||||
},
|
||||
},
|
||||
mode = { "n", "x" },
|
||||
body = "<leader>ho",
|
||||
heads = {
|
||||
{
|
||||
"n",
|
||||
function()
|
||||
if vim.o.number == true then
|
||||
vim.o.number = false
|
||||
else
|
||||
vim.o.number = true
|
||||
end
|
||||
end,
|
||||
{ desc = "number" },
|
||||
},
|
||||
{
|
||||
"r",
|
||||
function()
|
||||
if vim.o.relativenumber == true then
|
||||
vim.o.relativenumber = false
|
||||
else
|
||||
vim.o.number = true
|
||||
vim.o.relativenumber = true
|
||||
end
|
||||
end,
|
||||
{ desc = "relativenumber" },
|
||||
},
|
||||
{
|
||||
"v",
|
||||
function()
|
||||
if vim.o.virtualedit == "all" then
|
||||
vim.o.virtualedit = "block"
|
||||
else
|
||||
vim.o.virtualedit = "all"
|
||||
end
|
||||
end,
|
||||
{ desc = "virtualedit" },
|
||||
},
|
||||
{
|
||||
"i",
|
||||
function()
|
||||
if vim.o.list == true then
|
||||
vim.o.list = false
|
||||
else
|
||||
vim.o.list = true
|
||||
end
|
||||
end,
|
||||
{ desc = "show invisible" },
|
||||
},
|
||||
{
|
||||
"s",
|
||||
function()
|
||||
if vim.o.spell == true then
|
||||
vim.o.spell = false
|
||||
else
|
||||
vim.o.spell = true
|
||||
end
|
||||
end,
|
||||
{ desc = "spell" },
|
||||
},
|
||||
{
|
||||
"w",
|
||||
function()
|
||||
if vim.o.wrap ~= true then
|
||||
vim.o.wrap = true
|
||||
-- Dealing with word wrap:
|
||||
-- If cursor is inside very long line in the file than wraps
|
||||
-- around several rows on the screen, then 'j' key moves you to
|
||||
-- the next line in the file, but not to the next row on the
|
||||
-- screen under your previous position as in other editors. These
|
||||
-- bindings fixes this.
|
||||
vim.keymap.set("n", "k", function()
|
||||
return vim.v.count > 0 and "k" or "gk"
|
||||
end, { expr = true, desc = "k or gk" })
|
||||
vim.keymap.set("n", "j", function()
|
||||
return vim.v.count > 0 and "j" or "gj"
|
||||
end, { expr = true, desc = "j or gj" })
|
||||
else
|
||||
vim.o.wrap = false
|
||||
vim.keymap.del("n", "k")
|
||||
vim.keymap.del("n", "j")
|
||||
end
|
||||
end,
|
||||
{ desc = "wrap" },
|
||||
},
|
||||
{
|
||||
"c",
|
||||
function()
|
||||
if vim.o.cursorline == true then
|
||||
vim.o.cursorline = false
|
||||
else
|
||||
vim.o.cursorline = true
|
||||
end
|
||||
end,
|
||||
{ desc = "cursor line" },
|
||||
},
|
||||
{ "<Esc>", nil, { exit = true } },
|
||||
},
|
||||
})
|
||||
end,
|
||||
},
|
||||
mode = { "n", "x" },
|
||||
body = "<leader>ho",
|
||||
heads = {
|
||||
{
|
||||
"n",
|
||||
function()
|
||||
if vim.o.number == true then
|
||||
vim.o.number = false
|
||||
else
|
||||
vim.o.number = true
|
||||
end
|
||||
end,
|
||||
{ desc = "number" },
|
||||
},
|
||||
{
|
||||
"r",
|
||||
function()
|
||||
if vim.o.relativenumber == true then
|
||||
vim.o.relativenumber = false
|
||||
else
|
||||
vim.o.number = true
|
||||
vim.o.relativenumber = true
|
||||
end
|
||||
end,
|
||||
{ desc = "relativenumber" },
|
||||
},
|
||||
{
|
||||
"v",
|
||||
function()
|
||||
if vim.o.virtualedit == "all" then
|
||||
vim.o.virtualedit = "block"
|
||||
else
|
||||
vim.o.virtualedit = "all"
|
||||
end
|
||||
end,
|
||||
{ desc = "virtualedit" },
|
||||
},
|
||||
{
|
||||
"i",
|
||||
function()
|
||||
if vim.o.list == true then
|
||||
vim.o.list = false
|
||||
else
|
||||
vim.o.list = true
|
||||
end
|
||||
end,
|
||||
{ desc = "show invisible" },
|
||||
},
|
||||
{
|
||||
"s",
|
||||
function()
|
||||
if vim.o.spell == true then
|
||||
vim.o.spell = false
|
||||
else
|
||||
vim.o.spell = true
|
||||
end
|
||||
end,
|
||||
{ desc = "spell" },
|
||||
},
|
||||
{
|
||||
"w",
|
||||
function()
|
||||
if vim.o.wrap ~= true then
|
||||
vim.o.wrap = true
|
||||
-- Dealing with word wrap:
|
||||
-- If cursor is inside very long line in the file than wraps
|
||||
-- around several rows on the screen, then 'j' key moves you to
|
||||
-- the next line in the file, but not to the next row on the
|
||||
-- screen under your previous position as in other editors. These
|
||||
-- bindings fixes this.
|
||||
vim.keymap.set("n", "k", function()
|
||||
return vim.v.count > 0 and "k" or "gk"
|
||||
end, { expr = true, desc = "k or gk" })
|
||||
vim.keymap.set("n", "j", function()
|
||||
return vim.v.count > 0 and "j" or "gj"
|
||||
end, { expr = true, desc = "j or gj" })
|
||||
else
|
||||
vim.o.wrap = false
|
||||
vim.keymap.del("n", "k")
|
||||
vim.keymap.del("n", "j")
|
||||
end
|
||||
end,
|
||||
{ desc = "wrap" },
|
||||
},
|
||||
{
|
||||
"c",
|
||||
function()
|
||||
if vim.o.cursorline == true then
|
||||
vim.o.cursorline = false
|
||||
else
|
||||
vim.o.cursorline = true
|
||||
end
|
||||
end,
|
||||
{ desc = "cursor line" },
|
||||
},
|
||||
{ "<Esc>", nil, { exit = true } },
|
||||
},
|
||||
})
|
||||
}
|
||||
|
72
dots/.config/nvim/lua/plugins/configs/indent-blankline.lua
Executable file → Normal file
72
dots/.config/nvim/lua/plugins/configs/indent-blankline.lua
Executable file → Normal file
@ -1,34 +1,44 @@
|
||||
local g = vim.g
|
||||
return {
|
||||
{
|
||||
"lukas-reineke/indent-blankline.nvim",
|
||||
event = { "BufReadPre", "BufNewFile" },
|
||||
dependencies = {
|
||||
"nvim-treesitter/nvim-treesitter"
|
||||
},
|
||||
opts = function()
|
||||
local g = vim.g
|
||||
|
||||
g.indent_blankline_char = "▏"
|
||||
g.indent_blankline_context_char = "▏"
|
||||
g.indent_blankline_char = "▏"
|
||||
g.indent_blankline_context_char = "▏"
|
||||
|
||||
-- Disable indent-blankline on these pages.
|
||||
g.indent_blankline_filetype_exclude = {
|
||||
"help",
|
||||
"terminal",
|
||||
"alpha",
|
||||
"packer",
|
||||
"lsp-installer",
|
||||
"lspinfo",
|
||||
"mason.nvim",
|
||||
"mason",
|
||||
"man",
|
||||
"OverseerForm",
|
||||
"noice",
|
||||
"lazy",
|
||||
"NeogitStatus",
|
||||
"NeogitHelpPopup",
|
||||
"NeogitPopup",
|
||||
"NeogitLogView",
|
||||
-- Disable indent-blankline on these pages.
|
||||
g.indent_blankline_filetype_exclude = {
|
||||
"help",
|
||||
"terminal",
|
||||
"alpha",
|
||||
"packer",
|
||||
"lsp-installer",
|
||||
"lspinfo",
|
||||
"mason.nvim",
|
||||
"mason",
|
||||
"man",
|
||||
"OverseerForm",
|
||||
"noice",
|
||||
"lazy",
|
||||
"NeogitStatus",
|
||||
"NeogitHelpPopup",
|
||||
"NeogitPopup",
|
||||
"NeogitLogView",
|
||||
}
|
||||
|
||||
g.indent_blankline_buftype_exclude = { "terminal" }
|
||||
g.indent_blankline_show_trailing_blankline_indent = false
|
||||
g.indent_blankline_show_first_indent_level = true
|
||||
|
||||
return {
|
||||
show_current_context = true,
|
||||
show_current_context_start = true,
|
||||
}
|
||||
end,
|
||||
},
|
||||
}
|
||||
|
||||
g.indent_blankline_buftype_exclude = { "terminal" }
|
||||
g.indent_blankline_show_trailing_blankline_indent = false
|
||||
g.indent_blankline_show_first_indent_level = true
|
||||
|
||||
require("indent_blankline").setup({
|
||||
-- space_char_blankline = " ",
|
||||
show_current_context = true,
|
||||
show_current_context_start = true,
|
||||
})
|
||||
|
@ -1,199 +1,210 @@
|
||||
vim.opt.fillchars:append({
|
||||
horiz = "─",
|
||||
horizup = "┴",
|
||||
horizdown = "┬",
|
||||
vert = "│",
|
||||
vertleft = "┤",
|
||||
vertright = "├",
|
||||
verthoriz = "┼",
|
||||
})
|
||||
return {
|
||||
{
|
||||
"rebelot/kanagawa.nvim",
|
||||
priority = 1000,
|
||||
build = function()
|
||||
require("plugins.configs.kanagawa")
|
||||
vim.cmd.KanagawaCompile()
|
||||
end,
|
||||
---@param opts KanagawaConfig
|
||||
config = function()
|
||||
vim.api.nvim_create_autocmd("BufWritePost", {
|
||||
pattern = "lua/plugins/configs/kanagawa.lua",
|
||||
callback = function()
|
||||
vim.schedule(vim.cmd.KanagawaCompile)
|
||||
end,
|
||||
})
|
||||
|
||||
require("kanagawa").setup({
|
||||
transparent = true,
|
||||
dim_inactive = true,
|
||||
globalStatus = true,
|
||||
theme = "dragon",
|
||||
colors = {
|
||||
theme = {
|
||||
all = {
|
||||
ui = {
|
||||
bg_gutter = "NONE",
|
||||
require("kanagawa").setup({
|
||||
transparent = true,
|
||||
dim_inactive = true,
|
||||
globalStatus = true,
|
||||
theme = "dragon",
|
||||
colors = {
|
||||
theme = {
|
||||
all = {
|
||||
ui = {
|
||||
bg_gutter = "NONE",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
overrides = function(palette)
|
||||
local colors = palette.palette
|
||||
vim.api.nvim_set_hl(0, "NvimNotifyError", { fg = colors.samuraiRed })
|
||||
vim.api.nvim_set_hl(0, "NvimNotifyWarn", { fg = colors.roninYellow })
|
||||
vim.api.nvim_set_hl(0, "NvimNotifyInfo", { fg = colors.springGreen })
|
||||
vim.api.nvim_set_hl(0, "NvimNotifyDebug", { fg = colors.crystalBlue })
|
||||
vim.api.nvim_set_hl(0, "NvimNotifyTrace", { fg = colors.oniViolet })
|
||||
|
||||
local overrides = {
|
||||
DiffAdd = { bg = colors.winterGreen, fg = colors.autumnGreen },
|
||||
DiffDelete = { bg = colors.winterREd, fg = colors.autumnRed },
|
||||
NeogitPopupSectionTitle = { fg = colors.crystalBlue },
|
||||
NeogitPopupConfigEnabled = { fg = colors.springBlue, italic = true },
|
||||
NeogitPopupActionkey = { fg = colors.surimiOrange },
|
||||
NeogitPopupConfigKey = { fg = colors.peachRed },
|
||||
NeogitHunkHeader = { fg = colors.crystalBlue, bg = colors.sumiInk2 },
|
||||
NeogitHunkHeaderHighlight = { fg = colors.roninYellow, bg = colors.sumiInk1 },
|
||||
NeogitBranch = { fg = colors.autumnYellow, bold = true },
|
||||
NeogitUnmergedInto = { fg = colors.surimiOrange, bold = true },
|
||||
NeogitRemote = { fg = colors.carpYellow, bold = true },
|
||||
NeogitDiffContext = { bg = colors.sumiInk3 },
|
||||
NeogitDiffContextHighlight = { bg = colors.sumiInk4 },
|
||||
NeogitCursorLine = { link = "CursorLine" },
|
||||
NeogitDiffDelete = { link = "DiffDelete" },
|
||||
NeogitDiffDeleteHighlight = { link = "DiffDelete" },
|
||||
NeogitDiffHeader = { fg = colors.oniViolet, bg = colors.sumiInk0, bold = true },
|
||||
NeogitDiffHeaderHighlight = { fg = colors.sakuraPink, bg = colors.sumiInk0, bold = true },
|
||||
NeogitDiffAdd = { link = "DiffAdd" },
|
||||
NeogitDiffAddHighlight = { link = "DiffAdd" },
|
||||
NeogitStagedChanges = { fg = colors.surimiOrange, bold = true },
|
||||
NeogitUnpulledChanges = { fg = colors.peachRed, bold = true },
|
||||
NeogitUnmergedChanges = { fg = colors.springGreen, bold = true },
|
||||
NeogitUnstagedChanges = { fg = colors.peachRed, bold = true },
|
||||
NeogitUntrackedFiles = { fg = colors.peachRed, bold = true },
|
||||
NeogitRecentCommits = { fg = colors.crystalBlue, bold = true },
|
||||
NeogitCommitViewHeader = { fg = colors.crystalBlue, bold = true, italic = true },
|
||||
NeogitFilePath = { fg = colors.autumnYellow, italic = true },
|
||||
NeogitNotificationInfo = { fg = colors.springGreen, bold = true },
|
||||
NeogitNotificationWarning = { fg = colors.roninYellow, bold = true },
|
||||
NeogitNotificationError = { fg = colors.samuraiRed, bold = true },
|
||||
menuSel = { bg = colors.sumiInk0, fg = "NONE" },
|
||||
Pmenu = { fg = colors.fujiWhite, bg = colors.sumiInk2 },
|
||||
CmpItemAbbrDeprecated = { fg = colors.fujiGray, bg = "NONE" },
|
||||
CmpItemAbbrMatch = { fg = colors.crystalBlue, bg = "NONE" },
|
||||
CmpItemAbbrMatchFuzzy = { fg = colors.crystalBlue, bg = "NONE" },
|
||||
CmpItemMenu = { fg = colors.roninYellow, bg = "NONE" },
|
||||
CmpItemKindField = { fg = colors.fujiWhite, bg = colors.sakuraPink },
|
||||
CmpItemKindProperty = { fg = colors.fujiWhite, bg = colors.sakuraPink },
|
||||
CmpItemKindEvent = { fg = colors.fujiWhite, bg = colors.sakuraPink },
|
||||
CmpItemKindText = { fg = colors.fujiWhite, bg = colors.dragonBlue },
|
||||
CmpItemKindEnum = { fg = colors.fujiWhite, bg = colors.crystalBlue },
|
||||
CmpItemKindKeyword = { fg = colors.fujiWhite, bg = colors.springBlue },
|
||||
CmpItemKindConstant = { fg = colors.fujiWhite, bg = colors.crystalBlue },
|
||||
CmpItemKindConstructor = { fg = colors.fujiWhite, bg = colors.crystalBlue },
|
||||
CmpItemKindReference = { fg = colors.fujiWhite, bg = colors.crystalBlue },
|
||||
CmpItemKindFunction = { fg = colors.fujiWhite, bg = colors.oniViolet },
|
||||
CmpItemKindStruct = { fg = colors.fujiWhite, bg = colors.oniViolet },
|
||||
CmpItemKindClass = { fg = colors.fujiWhite, bg = colors.oniViolet },
|
||||
CmpItemKindModule = { fg = colors.fujiWhite, bg = colors.oniViolet },
|
||||
CmpItemKindOperator = { fg = colors.fujiWhite, bg = colors.oniViolet },
|
||||
CmpItemKindVariable = { fg = colors.fujiWhite, bg = colors.roninYellow },
|
||||
CmpItemKindFile = { fg = colors.fujiWhite, bg = colors.autumnYellow },
|
||||
CmpItemKindUnit = { fg = colors.fujiWhite, bg = colors.autumnYellow },
|
||||
CmpItemKindSnippet = { fg = colors.fujiWhite, bg = colors.autumnYellow },
|
||||
CmpItemKindFolder = { fg = colors.fujiWhite, bg = colors.autumnYellow },
|
||||
CmpItemKindMethod = { fg = colors.fujiWhite, bg = colors.autumnGreen },
|
||||
CmpItemKindValue = { fg = colors.fujiWhite, bg = colors.autumnGreen },
|
||||
CmpItemKindEnumMember = { fg = colors.fujiWhite, bg = colors.autumnGreen },
|
||||
CmpItemKindInterface = { fg = colors.fujiWhite, bg = colors.waveRed },
|
||||
CmpItemKindColor = { fg = colors.fujiWhite, bg = colors.waveAqua2 },
|
||||
CmpItemKindTypeParameter = { fg = colors.fujiWhite, bg = colors.waveAqua2 },
|
||||
CmpCustomSelectionGit = { fg = colors.fujiWhite, bg = colors.roninYellow },
|
||||
CmpCustomSelectionBuffer = { fg = colors.fujiWhite, bg = colors.dragonBlue },
|
||||
CmpCustomSelectionPath = { fg = colors.fujiWhite, bg = colors.autumnYellow },
|
||||
CmpCustomSelectionCalculator = { fg = colors.fujiWhite, bg = colors.waveBlue2 },
|
||||
CmpCustomSelectionNeorg = { fg = colors.fujiWhite, bg = colors.waveAqua1 },
|
||||
CmpCustomSelectionEmoji = { fg = colors.fujiWhite, bg = colors.dragonBlue },
|
||||
CmpCustomSelectionZsh = { fg = colors.fujiWhite, bg = colors.springGreen },
|
||||
CmpCustomSelectionCrates = { fg = colors.fujiWhite, bg = colors.roninYellow },
|
||||
CmpCustomSelectionCmdHistory = { fg = colors.fujiWhite, bg = colors.waveBlue2 },
|
||||
CmpCustomSelectionRipgrep = { fg = colors.fujiWhite, bg = colors.dragonBlue },
|
||||
CmpCustomSelectionNpm = { fg = colors.fujiWhite, bg = colors.peachRed },
|
||||
CmpCustomSelectionCommit = { fg = colors.fujiWhite, bg = colors.peachRed },
|
||||
CmpCustomSelectionSpell = { fg = colors.fujiWhite, bg = colors.waveRed },
|
||||
TelescopeNormal = { bg = colors.sumiInk2 },
|
||||
TelescopeBorder = { bg = colors.sumiInk2, fg = colors.sumiInk1 },
|
||||
TelescopePromptBorder = { bg = colors.sumiInk0, fg = colors.sumiInk0 },
|
||||
TelescopePromptNormal = { bg = colors.sumiInk0, fg = colors.fujiWhite },
|
||||
TelescopePromptTitle = { fg = colors.sumiInk0, bg = colors.oniViolet },
|
||||
TelescopePreviewTitle = { fg = colors.sumiInk0, bg = colors.sakuraPink },
|
||||
TelescopePreviewNormal = { bg = colors.sumiInk4 },
|
||||
TelescopePreviewBorder = { link = "TelescopePreviewNormal" },
|
||||
TelescopeResultsTitle = { fg = "NONE", bg = "NONE" },
|
||||
WinSeparator = { fg = colors.sumiInk4, bg = "NONE" },
|
||||
MiniCursorword = { bg = colors.waveBlue2 },
|
||||
MiniCursorwordCurrent = { bg = colors.waveBlue2 },
|
||||
rainbowcol1 = { fg = colors.oniViolet },
|
||||
rainbowcol2 = { fg = colors.crystalBlue },
|
||||
rainbowcol3 = { fg = colors.lightBlue },
|
||||
rainbowcol4 = { fg = colors.sakuraPink },
|
||||
rainbowcol5 = { fg = colors.springGreen },
|
||||
rainbowcol6 = { fg = colors.springViolet2 },
|
||||
rainbowcol7 = { fg = colors.carpYellow },
|
||||
packerSuccess = { fg = colors.autumnGreen, bg = "NONE" },
|
||||
WinBar = { fg = colors.fujiWhite, bg = colors.sumiInk1 },
|
||||
WinBarNC = { fg = colors.fujiWhite, bg = colors.sumiInk1 },
|
||||
NeoTreeNormal = { bg = colors.sumiInk1 },
|
||||
NeoTreeNormalNC = { bg = colors.sumiInk1 },
|
||||
NoiceCmdlineIconCmdline = { fg = colors.oniViolet },
|
||||
NoiceCmdlinePopupBorderCmdline = { fg = colors.oniViolet },
|
||||
NoiceCmdlineIconFilter = { fg = colors.springGreen },
|
||||
NoiceCmdlinePopupBorderFilter = { fg = colors.springGreen },
|
||||
NoiceCmdLineIconLua = { fg = colors.crystalBlue },
|
||||
NoiceCmdlinePopupBorderLua = { fg = colors.crystalBlue },
|
||||
NoiceCmdlineIconHelp = { fg = colors.surimiOrange },
|
||||
NoiceCmdlinePopupBorderHelp = { fg = colors.surimiOrange },
|
||||
NoiceCmdLineIconSearch = { fg = colors.roninYellow },
|
||||
NoiceCmdlinePopupBorderSearch = { fg = colors.roninYellow },
|
||||
NoiceCmdlineIconIncRename = { fg = colors.peachRed },
|
||||
NoiceCmdlinePopupdBorderIncRename = { fg = colors.peachRed },
|
||||
NoiceMini = { bg = colors.sumiInk4 },
|
||||
NoiceLspProgressClient = { fg = colors.oniViolet, bold = true },
|
||||
Folded = { bg = colors.waveBlue1 },
|
||||
UfoFoldedBg = { bg = colors.waveBlue1 },
|
||||
TSRainbowRed = { fg = colors.peachRed },
|
||||
TSRainbowYellow = { fg = colors.carpYellow },
|
||||
TSRainbowBlue = { fg = colors.crystalBlue },
|
||||
TSRainbowGreen = { fg = colors.springGreen },
|
||||
TSRainbowViolet = { fg = colors.oniViolet },
|
||||
TSRainbowCyan = { fg = colors.lightBlue },
|
||||
SmoothCursorCursor = { fg = colors.roninYellow },
|
||||
SmoothCursorTrailBig1 = { fg = colors.autumnYellow },
|
||||
SmoothCursorTrailBig2 = { fg = colors.crystalBlue },
|
||||
SmoothCursorTrailMedium = { fg = colors.oniViolet },
|
||||
SmoothCursorTrailSmall = { fg = colors.springBlue },
|
||||
SmoothCursorTrailXSmall = { fg = colors.waveAqua2 },
|
||||
TreesitterContext = { bg = colors.sumiInk0 },
|
||||
FloatTitle = { bg = "NONE" },
|
||||
DiffviewFilePanelTitle = { fg = colors.crystalBlue },
|
||||
Headline = { bg = colors.sumiInk2 },
|
||||
HeadlineReversed = { bg = colors.sumiInk1 },
|
||||
LspInlayHint = { link = "Comment", italic = true },
|
||||
["@text.title.1.marker.markdown"] = { fg = colors.surimiOrange },
|
||||
["@text.title.2.marker.markdown"] = { fg = colors.surimiOrange },
|
||||
["@text.title.3.marker.markdown"] = { fg = colors.surimiOrange },
|
||||
["@text.title.4.marker.markdown"] = { fg = colors.surimiOrange },
|
||||
["@text.title.5.marker.markdown"] = { fg = colors.surimiOrange },
|
||||
["@text.title.6.marker.markdown"] = { fg = colors.surimiOrange },
|
||||
RainbowDelimiterRed = { fg = colors.peachRed },
|
||||
RainbowDelimiterYellow = { fg = colors.autumnYellow },
|
||||
RainbowDelimiterBlue = { fg = colors.crystalBlue },
|
||||
RainbowDelimiterOrange = { fg = colors.surimiOrange },
|
||||
RainbowDelimiterGreen = { fg = colors.springGreen },
|
||||
RainbowDelimiterViolet = { fg = colors.oniViolet },
|
||||
RainbowDelimiterCyan = { fg = colors.lightBlue },
|
||||
NotifyERRORBorder = { link = "NvimNotifyError" },
|
||||
NotifyERRORIcon = { link = "NvimNotifyError" },
|
||||
NotifyERRORTitle = { link = "NvimNotifyError" },
|
||||
NotifyWARNBorder = { link = "NvimNotifyWarn" },
|
||||
NotifyWARNIcon = { link = "NvimNotifyWarn" },
|
||||
NotifyWARNTitle = { link = "NvimNotifyWarn" },
|
||||
NotifyINFOBorder = { link = "NvimNotifyInfo" },
|
||||
NotifyINFOIcon = { link = "NvimNotifyInfo" },
|
||||
NotifyINFOTitle = { link = "NvimNotifyInfo" },
|
||||
NotifyDEBUGBorder = { link = "NvimNotifyDebug" },
|
||||
NotifyDEBUGIcon = { link = "NvimNotifyDebug" },
|
||||
NotifyDEBUGTitle = { link = "NvimNotifyDebug" },
|
||||
NotifyTRACEBorder = { link = "NvimNotifyTrace" },
|
||||
NotifyTRACEIcon = { link = "NvimNotifyTrace" },
|
||||
NotifyTRACETitle = { link = "NvimNotifyTrace" },
|
||||
}
|
||||
|
||||
return overrides
|
||||
end,
|
||||
})
|
||||
vim.cmd.colorscheme("kanagawa")
|
||||
end,
|
||||
},
|
||||
overrides = function(palette)
|
||||
local colors = palette.palette
|
||||
vim.api.nvim_set_hl(0, "NvimNotifyError", { fg = colors.samuraiRed })
|
||||
vim.api.nvim_set_hl(0, "NvimNotifyWarn", { fg = colors.roninYellow })
|
||||
vim.api.nvim_set_hl(0, "NvimNotifyInfo", { fg = colors.springGreen })
|
||||
vim.api.nvim_set_hl(0, "NvimNotifyDebug", { fg = colors.crystalBlue })
|
||||
vim.api.nvim_set_hl(0, "NvimNotifyTrace", { fg = colors.oniViolet })
|
||||
|
||||
local overrides = {
|
||||
DiffAdd = { bg = colors.winterGreen, fg = colors.autumnGreen },
|
||||
DiffDelete = { bg = colors.winterREd, fg = colors.autumnRed },
|
||||
NeogitPopupSectionTitle = { fg = colors.crystalBlue },
|
||||
NeogitPopupConfigEnabled = { fg = colors.springBlue, italic = true },
|
||||
NeogitPopupActionkey = { fg = colors.surimiOrange },
|
||||
NeogitPopupConfigKey = { fg = colors.peachRed },
|
||||
NeogitHunkHeader = { fg = colors.crystalBlue, bg = colors.sumiInk2 },
|
||||
NeogitHunkHeaderHighlight = { fg = colors.roninYellow, bg = colors.sumiInk1 },
|
||||
NeogitBranch = { fg = colors.autumnYellow, bold = true },
|
||||
NeogitUnmergedInto = { fg = colors.surimiOrange, bold = true },
|
||||
NeogitRemote = { fg = colors.carpYellow, bold = true },
|
||||
NeogitDiffContext = { bg = colors.sumiInk3 },
|
||||
NeogitDiffContextHighlight = { bg = colors.sumiInk4 },
|
||||
NeogitCursorLine = { link = "CursorLine" },
|
||||
NeogitDiffDelete = { link = "DiffDelete" },
|
||||
NeogitDiffDeleteHighlight = { link = "DiffDelete" },
|
||||
NeogitDiffHeader = { fg = colors.oniViolet, bg = colors.sumiInk0, bold = true },
|
||||
NeogitDiffHeaderHighlight = { fg = colors.sakuraPink, bg = colors.sumiInk0, bold = true },
|
||||
NeogitDiffAdd = { link = "DiffAdd" },
|
||||
NeogitDiffAddHighlight = { link = "DiffAdd" },
|
||||
NeogitStagedChanges = { fg = colors.surimiOrange, bold = true },
|
||||
NeogitUnpulledChanges = { fg = colors.peachRed, bold = true },
|
||||
NeogitUnmergedChanges = { fg = colors.springGreen, bold = true },
|
||||
NeogitUnstagedChanges = { fg = colors.peachRed, bold = true },
|
||||
NeogitUntrackedFiles = { fg = colors.peachRed, bold = true },
|
||||
NeogitRecentCommits = { fg = colors.crystalBlue, bold = true },
|
||||
NeogitCommitViewHeader = { fg = colors.crystalBlue, bold = true, italic = true },
|
||||
NeogitFilePath = { fg = colors.autumnYellow, italic = true },
|
||||
NeogitNotificationInfo = { fg = colors.springGreen, bold = true },
|
||||
NeogitNotificationWarning = { fg = colors.roninYellow, bold = true },
|
||||
NeogitNotificationError = { fg = colors.samuraiRed, bold = true },
|
||||
menuSel = { bg = colors.sumiInk0, fg = "NONE" },
|
||||
Pmenu = { fg = colors.fujiWhite, bg = colors.sumiInk2 },
|
||||
CmpItemAbbrDeprecated = { fg = colors.fujiGray, bg = "NONE" },
|
||||
CmpItemAbbrMatch = { fg = colors.crystalBlue, bg = "NONE" },
|
||||
CmpItemAbbrMatchFuzzy = { fg = colors.crystalBlue, bg = "NONE" },
|
||||
CmpItemMenu = { fg = colors.roninYellow, bg = "NONE" },
|
||||
CmpItemKindField = { fg = colors.fujiWhite, bg = colors.sakuraPink },
|
||||
CmpItemKindProperty = { fg = colors.fujiWhite, bg = colors.sakuraPink },
|
||||
CmpItemKindEvent = { fg = colors.fujiWhite, bg = colors.sakuraPink },
|
||||
CmpItemKindText = { fg = colors.fujiWhite, bg = colors.dragonBlue },
|
||||
CmpItemKindEnum = { fg = colors.fujiWhite, bg = colors.crystalBlue },
|
||||
CmpItemKindKeyword = { fg = colors.fujiWhite, bg = colors.springBlue },
|
||||
CmpItemKindConstant = { fg = colors.fujiWhite, bg = colors.crystalBlue },
|
||||
CmpItemKindConstructor = { fg = colors.fujiWhite, bg = colors.crystalBlue },
|
||||
CmpItemKindReference = { fg = colors.fujiWhite, bg = colors.crystalBlue },
|
||||
CmpItemKindFunction = { fg = colors.fujiWhite, bg = colors.oniViolet },
|
||||
CmpItemKindStruct = { fg = colors.fujiWhite, bg = colors.oniViolet },
|
||||
CmpItemKindClass = { fg = colors.fujiWhite, bg = colors.oniViolet },
|
||||
CmpItemKindModule = { fg = colors.fujiWhite, bg = colors.oniViolet },
|
||||
CmpItemKindOperator = { fg = colors.fujiWhite, bg = colors.oniViolet },
|
||||
CmpItemKindVariable = { fg = colors.fujiWhite, bg = colors.roninYellow },
|
||||
CmpItemKindFile = { fg = colors.fujiWhite, bg = colors.autumnYellow },
|
||||
CmpItemKindUnit = { fg = colors.fujiWhite, bg = colors.autumnYellow },
|
||||
CmpItemKindSnippet = { fg = colors.fujiWhite, bg = colors.autumnYellow },
|
||||
CmpItemKindFolder = { fg = colors.fujiWhite, bg = colors.autumnYellow },
|
||||
CmpItemKindMethod = { fg = colors.fujiWhite, bg = colors.autumnGreen },
|
||||
CmpItemKindValue = { fg = colors.fujiWhite, bg = colors.autumnGreen },
|
||||
CmpItemKindEnumMember = { fg = colors.fujiWhite, bg = colors.autumnGreen },
|
||||
CmpItemKindInterface = { fg = colors.fujiWhite, bg = colors.waveRed },
|
||||
CmpItemKindColor = { fg = colors.fujiWhite, bg = colors.waveAqua2 },
|
||||
CmpItemKindTypeParameter = { fg = colors.fujiWhite, bg = colors.waveAqua2 },
|
||||
CmpCustomSelectionGit = { fg = colors.fujiWhite, bg = colors.roninYellow },
|
||||
CmpCustomSelectionBuffer = { fg = colors.fujiWhite, bg = colors.dragonBlue },
|
||||
CmpCustomSelectionPath = { fg = colors.fujiWhite, bg = colors.autumnYellow },
|
||||
CmpCustomSelectionCalculator = { fg = colors.fujiWhite, bg = colors.waveBlue2 },
|
||||
CmpCustomSelectionNeorg = { fg = colors.fujiWhite, bg = colors.waveAqua1 },
|
||||
CmpCustomSelectionEmoji = { fg = colors.fujiWhite, bg = colors.dragonBlue },
|
||||
CmpCustomSelectionZsh = { fg = colors.fujiWhite, bg = colors.springGreen },
|
||||
CmpCustomSelectionCrates = { fg = colors.fujiWhite, bg = colors.roninYellow },
|
||||
CmpCustomSelectionCmdHistory = { fg = colors.fujiWhite, bg = colors.waveBlue2 },
|
||||
CmpCustomSelectionRipgrep = { fg = colors.fujiWhite, bg = colors.dragonBlue },
|
||||
CmpCustomSelectionNpm = { fg = colors.fujiWhite, bg = colors.peachRed },
|
||||
CmpCustomSelectionCommit = { fg = colors.fujiWhite, bg = colors.peachRed },
|
||||
CmpCustomSelectionSpell = { fg = colors.fujiWhite, bg = colors.waveRed },
|
||||
TelescopeNormal = { bg = colors.sumiInk2 },
|
||||
TelescopeBorder = { bg = colors.sumiInk2, fg = colors.sumiInk1 },
|
||||
TelescopePromptBorder = { bg = colors.sumiInk0, fg = colors.sumiInk0 },
|
||||
TelescopePromptNormal = { bg = colors.sumiInk0, fg = colors.fujiWhite },
|
||||
TelescopePromptTitle = { fg = colors.sumiInk0, bg = colors.oniViolet },
|
||||
TelescopePreviewTitle = { fg = colors.sumiInk0, bg = colors.sakuraPink },
|
||||
TelescopePreviewNormal = { bg = colors.sumiInk4 },
|
||||
TelescopePreviewBorder = { link = "TelescopePreviewNormal" },
|
||||
TelescopeResultsTitle = { fg = "NONE", bg = "NONE" },
|
||||
WinSeparator = { fg = colors.sumiInk4, bg = "NONE" },
|
||||
MiniCursorword = { bg = colors.waveBlue2 },
|
||||
MiniCursorwordCurrent = { bg = colors.waveBlue2 },
|
||||
rainbowcol1 = { fg = colors.oniViolet },
|
||||
rainbowcol2 = { fg = colors.crystalBlue },
|
||||
rainbowcol3 = { fg = colors.lightBlue },
|
||||
rainbowcol4 = { fg = colors.sakuraPink },
|
||||
rainbowcol5 = { fg = colors.springGreen },
|
||||
rainbowcol6 = { fg = colors.springViolet2 },
|
||||
rainbowcol7 = { fg = colors.carpYellow },
|
||||
packerSuccess = { fg = colors.autumnGreen, bg = "NONE" },
|
||||
WinBar = { fg = colors.fujiWhite, bg = colors.sumiInk1 },
|
||||
WinBarNC = { fg = colors.fujiWhite, bg = colors.sumiInk1 },
|
||||
NeoTreeNormal = { bg = colors.sumiInk1 },
|
||||
NeoTreeNormalNC = { bg = colors.sumiInk1 },
|
||||
NoiceCmdlineIconCmdline = { fg = colors.oniViolet },
|
||||
NoiceCmdlinePopupBorderCmdline = { fg = colors.oniViolet },
|
||||
NoiceCmdlineIconFilter = { fg = colors.springGreen },
|
||||
NoiceCmdlinePopupBorderFilter = { fg = colors.springGreen },
|
||||
NoiceCmdLineIconLua = { fg = colors.crystalBlue },
|
||||
NoiceCmdlinePopupBorderLua = { fg = colors.crystalBlue },
|
||||
NoiceCmdlineIconHelp = { fg = colors.surimiOrange },
|
||||
NoiceCmdlinePopupBorderHelp = { fg = colors.surimiOrange },
|
||||
NoiceCmdLineIconSearch = { fg = colors.roninYellow },
|
||||
NoiceCmdlinePopupBorderSearch = { fg = colors.roninYellow },
|
||||
NoiceCmdlineIconIncRename = { fg = colors.peachRed },
|
||||
NoiceCmdlinePopupdBorderIncRename = { fg = colors.peachRed },
|
||||
NoiceMini = { bg = colors.sumiInk4 },
|
||||
NoiceLspProgressClient = { fg = colors.oniViolet, bold = true },
|
||||
Folded = { bg = colors.waveBlue1 },
|
||||
UfoFoldedBg = { bg = colors.waveBlue1 },
|
||||
TSRainbowRed = { fg = colors.peachRed },
|
||||
TSRainbowYellow = { fg = colors.carpYellow },
|
||||
TSRainbowBlue = { fg = colors.crystalBlue },
|
||||
TSRainbowGreen = { fg = colors.springGreen },
|
||||
TSRainbowViolet = { fg = colors.oniViolet },
|
||||
TSRainbowCyan = { fg = colors.lightBlue },
|
||||
SmoothCursorCursor = { fg = colors.roninYellow },
|
||||
SmoothCursorTrailBig1 = { fg = colors.autumnYellow },
|
||||
SmoothCursorTrailBig2 = { fg = colors.crystalBlue },
|
||||
SmoothCursorTrailMedium = { fg = colors.oniViolet },
|
||||
SmoothCursorTrailSmall = { fg = colors.springBlue },
|
||||
SmoothCursorTrailXSmall = { fg = colors.waveAqua2 },
|
||||
TreesitterContext = { bg = colors.sumiInk0 },
|
||||
FloatTitle = { bg = "NONE" },
|
||||
DiffviewFilePanelTitle = { fg = colors.crystalBlue },
|
||||
Headline = { bg = colors.sumiInk2 },
|
||||
HeadlineReversed = { bg = colors.sumiInk1 },
|
||||
LspInlayHint = { link = "Comment", italic = true },
|
||||
["@text.title.1.marker.markdown"] = { fg = colors.surimiOrange },
|
||||
["@text.title.2.marker.markdown"] = { fg = colors.surimiOrange },
|
||||
["@text.title.3.marker.markdown"] = { fg = colors.surimiOrange },
|
||||
["@text.title.4.marker.markdown"] = { fg = colors.surimiOrange },
|
||||
["@text.title.5.marker.markdown"] = { fg = colors.surimiOrange },
|
||||
["@text.title.6.marker.markdown"] = { fg = colors.surimiOrange },
|
||||
RainbowDelimiterRed = { fg = colors.peachRed },
|
||||
RainbowDelimiterYellow = { fg = colors.autumnYellow },
|
||||
RainbowDelimiterBlue = { fg = colors.crystalBlue },
|
||||
RainbowDelimiterOrange = { fg = colors.surimiOrange },
|
||||
RainbowDelimiterGreen = { fg = colors.springGreen },
|
||||
RainbowDelimiterViolet = { fg = colors.oniViolet },
|
||||
RainbowDelimiterCyan = { fg = colors.lightBlue },
|
||||
NotifyERRORBorder = { link = "NvimNotifyError" },
|
||||
NotifyERRORIcon = { link = "NvimNotifyError" },
|
||||
NotifyERRORTitle = { link = "NvimNotifyError" },
|
||||
NotifyWARNBorder = { link = "NvimNotifyWarn" },
|
||||
NotifyWARNIcon = { link = "NvimNotifyWarn" },
|
||||
NotifyWARNTitle = { link = "NvimNotifyWarn" },
|
||||
NotifyINFOBorder = { link = "NvimNotifyInfo" },
|
||||
NotifyINFOIcon = { link = "NvimNotifyInfo" },
|
||||
NotifyINFOTitle = { link = "NvimNotifyInfo" },
|
||||
NotifyDEBUGBorder = { link = "NvimNotifyDebug" },
|
||||
NotifyDEBUGIcon = { link = "NvimNotifyDebug" },
|
||||
NotifyDEBUGTitle = { link = "NvimNotifyDebug" },
|
||||
NotifyTRACEBorder = { link = "NvimNotifyTrace" },
|
||||
NotifyTRACEIcon = { link = "NvimNotifyTrace" },
|
||||
NotifyTRACETitle = { link = "NvimNotifyTrace" },
|
||||
}
|
||||
|
||||
return overrides
|
||||
end,
|
||||
})
|
||||
}
|
||||
|
11
dots/.config/nvim/lua/plugins/configs/lastplace.lua
Normal file
11
dots/.config/nvim/lua/plugins/configs/lastplace.lua
Normal file
@ -0,0 +1,11 @@
|
||||
return {
|
||||
{
|
||||
"ethanholz/nvim-lastplace",
|
||||
event = { "BufReadPre", "BufNewFile" },
|
||||
opts = {
|
||||
lastplace_ignore_buftype = { "quickfix", "nofile", "help" },
|
||||
lastplace_ignore_filetype = { "gitcommit", "gitrebase", "svn", "hgcommit", "fugitive" },
|
||||
lastplace_open_folds = true,
|
||||
},
|
||||
},
|
||||
}
|
19
dots/.config/nvim/lua/plugins/configs/lib.lua
Normal file
19
dots/.config/nvim/lua/plugins/configs/lib.lua
Normal file
@ -0,0 +1,19 @@
|
||||
return {
|
||||
{
|
||||
"nvim-tree/nvim-web-devicons",
|
||||
lazy = true,
|
||||
},
|
||||
{
|
||||
"nvim-lua/plenary.nvim",
|
||||
lazy = true,
|
||||
},
|
||||
{
|
||||
"stevearc/dressing.nvim",
|
||||
lazy = true,
|
||||
},
|
||||
{
|
||||
"folke/which-key.nvim",
|
||||
lazy = true,
|
||||
opts = {},
|
||||
},
|
||||
}
|
26
dots/.config/nvim/lua/plugins/configs/live-command.lua
Normal file
26
dots/.config/nvim/lua/plugins/configs/live-command.lua
Normal file
@ -0,0 +1,26 @@
|
||||
return {
|
||||
{
|
||||
"smjonas/live-command.nvim",
|
||||
cmd = {
|
||||
"Norm",
|
||||
"Reg",
|
||||
"GG",
|
||||
},
|
||||
config = function()
|
||||
require("live-command").setup({
|
||||
commands = {
|
||||
GG = { cmd = "g" },
|
||||
Norm = { cmd = "norm" },
|
||||
Reg = {
|
||||
cmd = "norm",
|
||||
-- This will transform ":5Reg a" into ":norm 5@a"
|
||||
args = function(opts)
|
||||
return (opts.count == -1 and "" or opts.count) .. "@" .. opts.args
|
||||
end,
|
||||
range = "",
|
||||
},
|
||||
},
|
||||
})
|
||||
end,
|
||||
},
|
||||
}
|
6
dots/.config/nvim/lua/plugins/configs/log.lua
Normal file
6
dots/.config/nvim/lua/plugins/configs/log.lua
Normal file
@ -0,0 +1,6 @@
|
||||
return {
|
||||
{
|
||||
"MTDL9/vim-log-highlighting",
|
||||
ft = "log",
|
||||
},
|
||||
}
|
855
dots/.config/nvim/lua/plugins/configs/lsp.lua
Executable file → Normal file
855
dots/.config/nvim/lua/plugins/configs/lsp.lua
Executable file → Normal file
@ -1,354 +1,515 @@
|
||||
local mason_lspconfig = require("mason-lspconfig")
|
||||
local lspconfig = require("lspconfig")
|
||||
|
||||
-- NOTE: Keep this near top
|
||||
mason_lspconfig.setup({
|
||||
automatic_installation = true,
|
||||
ensure_installed = {
|
||||
"tsserver",
|
||||
return {
|
||||
{
|
||||
"jose-elias-alvarez/null-ls.nvim",
|
||||
event = { "BufReadPre", "BufNewFile" },
|
||||
opts = function()
|
||||
local null_ls = require("null-ls")
|
||||
return {
|
||||
sources = {
|
||||
null_ls.builtins.diagnostics.hadolint,
|
||||
null_ls.builtins.code_actions.refactoring,
|
||||
null_ls.builtins.formatting.black,
|
||||
null_ls.builtins.formatting.stylua,
|
||||
null_ls.builtins.formatting.prettier,
|
||||
},
|
||||
}
|
||||
end,
|
||||
},
|
||||
})
|
||||
|
||||
local function on_attach(client, bufnr)
|
||||
-- Set autocommands conditional on server_capabilities
|
||||
vim.notify("Attached server " .. client.name, "info", {
|
||||
title = "LSP",
|
||||
})
|
||||
|
||||
-- Enable inlay hints if the language server provides them
|
||||
if client.server_capabilities.inlayHintProvider then
|
||||
vim.lsp.inlay_hint(bufnr, true)
|
||||
end
|
||||
end
|
||||
|
||||
local lsp_capabilities = require("cmp_nvim_lsp").default_capabilities(vim.lsp.protocol.make_client_capabilities())
|
||||
local opts = {
|
||||
capabilities = lsp_capabilities,
|
||||
on_attach = on_attach,
|
||||
}
|
||||
|
||||
local lsp_server_bin_dir = vim.fn.stdpath("data") .. "/mason/bin/"
|
||||
local rust_tools = require("rust-tools")
|
||||
local codelldb_path = lsp_server_bin_dir .. "codelldb"
|
||||
local liblldb_path = vim.fn.stdpath("data") .. "/mason/packages/codelldb/extension/lldb/lib/liblldb.so"
|
||||
local rustopts = {
|
||||
server = opts,
|
||||
dap = {
|
||||
adapter = require("rust-tools.dap").get_codelldb_adapter(codelldb_path, liblldb_path),
|
||||
{
|
||||
url = "https://git.sr.ht/~whynothugo/lsp_lines.nvim",
|
||||
event = "LspAttach",
|
||||
keys = {
|
||||
{
|
||||
"<leader>lt",
|
||||
function()
|
||||
require("lsp_lines").toggle()
|
||||
end,
|
||||
desc = "LSP: Toggle Diagnostic Appearance",
|
||||
},
|
||||
{
|
||||
"<leader>lt",
|
||||
function()
|
||||
local virtual_lines_enabled = not vim.diagnostic.config().virtual_lines
|
||||
vim.diagnostic.config({
|
||||
virtual_lines = virtual_lines_enabled,
|
||||
virtual_text = not virtual_lines_enabled,
|
||||
})
|
||||
end,
|
||||
desc = "LSP: Toggle Diagnostic Style",
|
||||
},
|
||||
},
|
||||
config = true,
|
||||
},
|
||||
tools = {
|
||||
-- how to execute terminal commands
|
||||
-- options right now: termopen / quickfix
|
||||
executor = require("rust-tools/executors").termopen,
|
||||
-- callback to execute once rust-analyzer is done initializing the workspace
|
||||
-- The callback receives one parameter indicating the `health` of the server: "ok" | "warning" | "error"
|
||||
on_initialized = nil,
|
||||
-- These apply to the default RustSetInlayHints command
|
||||
inlay_hints = {
|
||||
-- automatically set inlay hints (type hints)
|
||||
-- default: true
|
||||
auto = false,
|
||||
-- Only show inlay hints for the current line
|
||||
only_current_line = false,
|
||||
-- whether to show parameter hints with the inlay hints or not
|
||||
-- default: true
|
||||
show_parameter_hints = true,
|
||||
-- prefix for parameter hints
|
||||
-- default: "<-"
|
||||
parameter_hints_prefix = "<- ",
|
||||
-- prefix for all the other hints (type, chaining)
|
||||
-- default: "=>"
|
||||
other_hints_prefix = "=> ",
|
||||
-- whether to align to the lenght of the longest line in the file
|
||||
max_len_align = false,
|
||||
-- padding from the left if max_len_align is true
|
||||
max_len_align_padding = 1,
|
||||
-- whether to align to the extreme right or not
|
||||
right_align = false,
|
||||
-- padding from the right if right_align is true
|
||||
right_align_padding = 7,
|
||||
-- The color of the hints
|
||||
highlight = "Comment",
|
||||
{
|
||||
"smjonas/inc-rename.nvim",
|
||||
cmd = { "Increname" },
|
||||
keys = {
|
||||
{ "<leader>ln", ":IncRename ", desc = "LSP: Rename" },
|
||||
},
|
||||
hover_actions = {
|
||||
auto_focus = true,
|
||||
opts = {},
|
||||
},
|
||||
{
|
||||
"kosayoda/nvim-lightbulb",
|
||||
event = "LspAttach",
|
||||
dependencies = {
|
||||
"antoinemadec/FixCursorHold.nvim",
|
||||
},
|
||||
server = {
|
||||
on_attach = function(client, bufnr)
|
||||
vim.keymap.set("n", "<leader>fr", rust_tools.runnables.runnables, {
|
||||
buffer = bufnr,
|
||||
})
|
||||
|
||||
vim.keymap.set("n", "<leader>fd", rust_tools.debuggables.debuggables, {
|
||||
buffer = bufnr,
|
||||
})
|
||||
|
||||
vim.keymap.set("n", "<leader>fp", rust_tools.parent_module.parent_module, {
|
||||
buffer = bufnr,
|
||||
})
|
||||
|
||||
vim.keymap.set("n", "<leader>fJ", rust_tools.join_lines.join_lines, {
|
||||
buffer = bufnr,
|
||||
})
|
||||
|
||||
vim.keymap.set("n", "<leader>fH", rust_tools.hover_range.hover_range, {
|
||||
buffer = bufnr,
|
||||
})
|
||||
|
||||
vim.keymap.set("n", "<leader>fm", rust_tools.expand_macro.expand_macro, {
|
||||
buffer = bufnr,
|
||||
})
|
||||
|
||||
vim.keymap.set("n", "<leader>fc", rust_tools.open_cargo_toml.open_cargo_toml, {
|
||||
buffer = bufnr,
|
||||
})
|
||||
|
||||
vim.keymap.set("n", "<leader>fk", ":RustMoveItemUp<CR>", {
|
||||
buffer = bufnr,
|
||||
})
|
||||
|
||||
vim.keymap.set("n", "<leader>fj", ":RustMoveItemDown<CR>", {
|
||||
buffer = bufnr,
|
||||
})
|
||||
|
||||
vim.keymap.set("n", "<leader>fh", rust_tools.hover_actions.hover_actions, {
|
||||
buffer = bufnr,
|
||||
})
|
||||
|
||||
vim.keymap.set("n", "<leader>fa", rust_tools.code_action_group.code_action_group, {
|
||||
buffer = bufnr,
|
||||
})
|
||||
on_attach(client, bufnr)
|
||||
end,
|
||||
opts = function()
|
||||
local text_icon = ""
|
||||
local nvim_lightbulb = require("nvim-lightbulb")
|
||||
vim.fn.sign_define(
|
||||
"LightBulbSign",
|
||||
{ text = text_icon, numhl = "DiagnosticSignHint", texthl = "DiagnosticSignHint", priority = 9 }
|
||||
)
|
||||
vim.api.nvim_create_autocmd("CursorHold,CursorHoldI", {
|
||||
callback = nvim_lightbulb.update_lightbulb,
|
||||
})
|
||||
return {
|
||||
sign = {
|
||||
priority = 9,
|
||||
text = text_icon,
|
||||
},
|
||||
}
|
||||
end,
|
||||
},
|
||||
{
|
||||
"neovim/nvim-lspconfig",
|
||||
dependencies = {
|
||||
"folke/neodev.nvim",
|
||||
"Decodetalkers/csharpls-extended-lsp.nvim",
|
||||
"williamboman/mason-lspconfig.nvim",
|
||||
"williamboman/mason.nvim",
|
||||
"simrat39/rust-tools.nvim",
|
||||
"Hoffs/omnisharp-extended-lsp.nvim",
|
||||
"b0o/schemastore.nvim",
|
||||
{
|
||||
"pmizio/typescript-tools.nvim",
|
||||
dependencies = { "nvim-lua/plenary.nvim" },
|
||||
},
|
||||
{
|
||||
"m-demare/hlargs.nvim",
|
||||
event = { "BufReadPre", "BufNewFile" },
|
||||
config = true,
|
||||
},
|
||||
},
|
||||
keys = {
|
||||
{ "<leader>l", desc = "> LSP" },
|
||||
{
|
||||
"<leader>lh",
|
||||
function()
|
||||
if vim.diagnostic.is_disabled() then
|
||||
vim.diagnostic.enable()
|
||||
else
|
||||
vim.diagnostic.disable()
|
||||
end
|
||||
end,
|
||||
desc = "LSP: Toggle Diagnostics",
|
||||
},
|
||||
{ "<leader>lD", vim.lsp.buf.declaration, desc = "LSP: Declaration" },
|
||||
{ "<leader>k", vim.lsp.buf.hover, desc = "LSP: Hover" },
|
||||
{ "<leader>K", vim.lsp.buf.signature_help, desc = "LSP: Sig Help" },
|
||||
{ "<leader>lc", vim.lsp.buf.code_action, desc = "LSP: Code Action" },
|
||||
{ "<leader>lR", ":LspRestart<CR>", desc = "LSP: Restart" },
|
||||
{
|
||||
"<leader>ls",
|
||||
function()
|
||||
vim.diagnostic.open_float(nil, { focus = true, scope = "cursor" })
|
||||
vim.cmd.vsplit()
|
||||
end,
|
||||
desc = "LSP: Diagnostic Open Float",
|
||||
},
|
||||
{
|
||||
"<leader>lf",
|
||||
function()
|
||||
vim.lsp.buf.format({ async = true })
|
||||
end,
|
||||
desc = "LSP: Format",
|
||||
},
|
||||
{ "[l", vim.diagnostic.goto_prev, desc = "LSP: Diagnostic Previous" },
|
||||
{ "]l", vim.diagnostic.goto_next, desc = "LSP: Diagnostic Next" },
|
||||
{
|
||||
"<leader>lt",
|
||||
function()
|
||||
local virtual_lines_enabled = not vim.diagnostic.config().virtual_lines
|
||||
vim.diagnostic.config({
|
||||
virtual_lines = virtual_lines_enabled,
|
||||
virtual_text = not virtual_lines_enabled,
|
||||
})
|
||||
end,
|
||||
desc = "LSP: Toggle Diagnostic Style",
|
||||
},
|
||||
{
|
||||
"<leader>lT",
|
||||
function()
|
||||
vim.lsp.inlay_hint(0, nil)
|
||||
end,
|
||||
desc = "LSP: Toggle Inlay Hints",
|
||||
},
|
||||
},
|
||||
event = { "BufReadPre", "BufNewFile" },
|
||||
config = function()
|
||||
require("mason").setup({})
|
||||
|
||||
local mason_lspconfig = require("mason-lspconfig")
|
||||
local lspconfig = require("lspconfig")
|
||||
|
||||
-- NOTE: Keep this near top
|
||||
mason_lspconfig.setup({
|
||||
automatic_installation = true,
|
||||
ensure_installed = {
|
||||
"tsserver",
|
||||
},
|
||||
})
|
||||
|
||||
local function on_attach(client, bufnr)
|
||||
-- Set autocommands conditional on server_capabilities
|
||||
vim.notify("Attached server " .. client.name, "info", {
|
||||
title = "LSP",
|
||||
})
|
||||
|
||||
local capabilities = client.server_capabilities
|
||||
-- Enable inlay hints if the language server provides them
|
||||
if capabilities.inlayHintProvider then
|
||||
vim.lsp.inlay_hint(bufnr, true)
|
||||
end
|
||||
|
||||
if capabilities.semanticTokensProvider and capabilities.semanticTokensProvider.full then
|
||||
require("hlargs").disable_buf(bufnr)
|
||||
end
|
||||
end
|
||||
|
||||
local lsp_capabilities =
|
||||
require("cmp_nvim_lsp").default_capabilities(vim.lsp.protocol.make_client_capabilities())
|
||||
local opts = {
|
||||
capabilities = lsp_capabilities,
|
||||
on_attach = on_attach,
|
||||
}
|
||||
|
||||
local lsp_server_bin_dir = vim.fn.stdpath("data") .. "/mason/bin/"
|
||||
local rust_tools = require("rust-tools")
|
||||
local codelldb_path = lsp_server_bin_dir .. "codelldb"
|
||||
local liblldb_path = vim.fn.stdpath("data") .. "/mason/packages/codelldb/extension/lldb/lib/liblldb.so"
|
||||
local rustopts = {
|
||||
server = opts,
|
||||
dap = {
|
||||
adapter = require("rust-tools.dap").get_codelldb_adapter(codelldb_path, liblldb_path),
|
||||
},
|
||||
tools = {
|
||||
-- how to execute terminal commands
|
||||
-- options right now: termopen / quickfix
|
||||
executor = require("rust-tools/executors").termopen,
|
||||
-- callback to execute once rust-analyzer is done initializing the workspace
|
||||
-- The callback receives one parameter indicating the `health` of the server: "ok" | "warning" | "error"
|
||||
on_initialized = nil,
|
||||
-- These apply to the default RustSetInlayHints command
|
||||
inlay_hints = {
|
||||
-- automatically set inlay hints (type hints)
|
||||
-- default: true
|
||||
auto = false,
|
||||
-- Only show inlay hints for the current line
|
||||
only_current_line = false,
|
||||
-- whether to show parameter hints with the inlay hints or not
|
||||
-- default: true
|
||||
show_parameter_hints = true,
|
||||
-- prefix for parameter hints
|
||||
-- default: "<-"
|
||||
parameter_hints_prefix = "<- ",
|
||||
-- prefix for all the other hints (type, chaining)
|
||||
-- default: "=>"
|
||||
other_hints_prefix = "=> ",
|
||||
-- whether to align to the lenght of the longest line in the file
|
||||
max_len_align = false,
|
||||
-- padding from the left if max_len_align is true
|
||||
max_len_align_padding = 1,
|
||||
-- whether to align to the extreme right or not
|
||||
right_align = false,
|
||||
-- padding from the right if right_align is true
|
||||
right_align_padding = 7,
|
||||
-- The color of the hints
|
||||
highlight = "Comment",
|
||||
},
|
||||
hover_actions = {
|
||||
auto_focus = true,
|
||||
},
|
||||
server = {
|
||||
on_attach = function(client, bufnr)
|
||||
vim.keymap.set("n", "<leader>fr", rust_tools.runnables.runnables, {
|
||||
buffer = bufnr,
|
||||
})
|
||||
|
||||
vim.keymap.set("n", "<leader>fd", rust_tools.debuggables.debuggables, {
|
||||
buffer = bufnr,
|
||||
})
|
||||
|
||||
vim.keymap.set("n", "<leader>fp", rust_tools.parent_module.parent_module, {
|
||||
buffer = bufnr,
|
||||
})
|
||||
|
||||
vim.keymap.set("n", "<leader>fJ", rust_tools.join_lines.join_lines, {
|
||||
buffer = bufnr,
|
||||
})
|
||||
|
||||
vim.keymap.set("n", "<leader>fH", rust_tools.hover_range.hover_range, {
|
||||
buffer = bufnr,
|
||||
})
|
||||
|
||||
vim.keymap.set("n", "<leader>fm", rust_tools.expand_macro.expand_macro, {
|
||||
buffer = bufnr,
|
||||
})
|
||||
|
||||
vim.keymap.set("n", "<leader>fc", rust_tools.open_cargo_toml.open_cargo_toml, {
|
||||
buffer = bufnr,
|
||||
})
|
||||
|
||||
vim.keymap.set("n", "<leader>fk", ":RustMoveItemUp<CR>", {
|
||||
buffer = bufnr,
|
||||
})
|
||||
|
||||
vim.keymap.set("n", "<leader>fj", ":RustMoveItemDown<CR>", {
|
||||
buffer = bufnr,
|
||||
})
|
||||
|
||||
vim.keymap.set("n", "<leader>fh", rust_tools.hover_actions.hover_actions, {
|
||||
buffer = bufnr,
|
||||
})
|
||||
|
||||
vim.keymap.set("n", "<leader>fa", rust_tools.code_action_group.code_action_group, {
|
||||
buffer = bufnr,
|
||||
})
|
||||
on_attach(client, bufnr)
|
||||
end,
|
||||
},
|
||||
},
|
||||
}
|
||||
rust_tools.setup(rustopts)
|
||||
|
||||
-- NOTE: ANSIBLE LSP
|
||||
-- I use ansible a lot, define exceptions for servers that can use
|
||||
-- server:setup & vim.cmd at the bottom here
|
||||
lspconfig.ansiblels.setup({
|
||||
capabilities = lsp_capabilities,
|
||||
on_attach = on_attach,
|
||||
settings = {
|
||||
ansible = {
|
||||
ansible = {
|
||||
useFullyQualifiedCollectionNames = true,
|
||||
path = "ansible",
|
||||
},
|
||||
ansibleLint = {
|
||||
enabled = true,
|
||||
path = "ansible-lint",
|
||||
},
|
||||
python = {
|
||||
interpreterPath = "python3",
|
||||
},
|
||||
completion = {
|
||||
provideRedirectModules = true,
|
||||
},
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
-- NOTE: LUA LSP
|
||||
require("neodev").setup({
|
||||
override = function(root_dir, library)
|
||||
if root_dir:find("/tmp", 1, true) == 1 then
|
||||
library.enabled = true
|
||||
library.plugins = true
|
||||
end
|
||||
end,
|
||||
})
|
||||
|
||||
lspconfig.lua_ls.setup({
|
||||
settings = {
|
||||
Lua = {
|
||||
completion = {
|
||||
callSnippet = "Replace",
|
||||
},
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
-- NOTE: PYTHON LSP
|
||||
lspconfig.pylsp.setup({
|
||||
filetypes = { "python" },
|
||||
settings = {
|
||||
formatCommand = { "black" },
|
||||
pylsp = {
|
||||
plugins = {
|
||||
jedi_completion = {
|
||||
include_params = true,
|
||||
fuzzy = true,
|
||||
eager = true,
|
||||
},
|
||||
jedi_signature_help = { enabled = true },
|
||||
pyflakes = { enabled = true },
|
||||
pycodestyle = {
|
||||
enabled = true,
|
||||
ignore = { "E501", "E231", "W503", "E731" },
|
||||
maxLineLength = 120,
|
||||
},
|
||||
mypy = { enabled = true },
|
||||
yapf = { enabled = true },
|
||||
rope_completion = {
|
||||
enabled = true,
|
||||
eager = true,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
capabilities = lsp_capabilities,
|
||||
on_attach = on_attach,
|
||||
})
|
||||
|
||||
lspconfig.yamlls.setup({
|
||||
settings = {
|
||||
redhat = {
|
||||
telemetry = {
|
||||
enabled = false,
|
||||
},
|
||||
},
|
||||
yaml = {
|
||||
schemas = require("schemastore").yaml.schemas({}),
|
||||
},
|
||||
},
|
||||
capabilities = lsp_capabilities,
|
||||
on_attach = on_attach,
|
||||
})
|
||||
|
||||
lspconfig.csharp_ls.setup({
|
||||
handlers = {
|
||||
["textDocument/definition"] = require("csharpls_extended").handler,
|
||||
},
|
||||
capabilities = lsp_capabilities,
|
||||
on_attach = on_attach,
|
||||
})
|
||||
|
||||
-- lspconfig.omnisharp.setup({
|
||||
-- cmd = {
|
||||
-- vim.fn.stdpath("data") .. "/mason/bin/omnisharp",
|
||||
-- "--languageserver",
|
||||
-- "--hostPID",
|
||||
-- tostring(vim.fn.getpid()),
|
||||
-- },
|
||||
--
|
||||
-- handlers = {
|
||||
-- ["textDocument/definition"] = require("omnisharp_extended").handler,
|
||||
-- },
|
||||
-- enable_import_completion = true,
|
||||
-- enable_roslyn_analyzers = true,
|
||||
-- organize_imports_on_format = true,
|
||||
-- capabilities = lsp_capabilities,
|
||||
-- on_attach = on_attach,
|
||||
-- })
|
||||
|
||||
lspconfig.jsonls.setup({
|
||||
settings = {
|
||||
schemas = require("schemastore").json.schemas(),
|
||||
validate = { enable = true },
|
||||
},
|
||||
capabilities = lsp_capabilities,
|
||||
on_attach = on_attach,
|
||||
})
|
||||
|
||||
lspconfig.powershell_es.setup({
|
||||
bundle_path = vim.fn.stdpath("data") .. "/mason/packages/powershell-editor-services/",
|
||||
capabilities = lsp_capabilities,
|
||||
on_attach = on_attach,
|
||||
})
|
||||
|
||||
lspconfig.azure_pipelines_ls.setup({
|
||||
cmd = { lsp_server_bin_dir .. "azure-pipelines-language-server", "--stdio" },
|
||||
settings = {
|
||||
redhat = {
|
||||
telemetry = {
|
||||
enabled = false,
|
||||
},
|
||||
},
|
||||
yaml = {
|
||||
schemas = {
|
||||
["https://raw.githubusercontent.com/microsoft/azure-pipelines-vscode/master/service-schema.json"] = {
|
||||
"*",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
filetypes = { "azure-pipelines" },
|
||||
capabilities = lsp_capabilities,
|
||||
on_attach = on_attach,
|
||||
})
|
||||
|
||||
lspconfig.texlab.setup({
|
||||
settings = {
|
||||
texlab = {
|
||||
build = {
|
||||
onSave = true,
|
||||
executable = "tectonic",
|
||||
forwardSearchAfter = true,
|
||||
args = { "-X", "compile", "%f", "--synctex" },
|
||||
},
|
||||
forwardSearch = {
|
||||
executable = "zathura",
|
||||
args = { "--synctex-forward", "%l:1:%f", "%p" },
|
||||
},
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
-- Custom config from typescript tools
|
||||
require("typescript-tools").setup({
|
||||
on_attach = on_attach,
|
||||
settings = {
|
||||
tsserver_file_preferences = {
|
||||
includeInlayParameterNameHints = "all",
|
||||
includeInlayEnumMemberValueHints = true,
|
||||
includeInlayFunctionLikeReturnTypeHints = true,
|
||||
includeInlayFunctionParameterTypeHints = true,
|
||||
includeInlayPropertyDeclarationTypeHints = true,
|
||||
includeInlayVariableTypeHints = true,
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
-- NOTE: GENERIC LSP SERVERS
|
||||
for _, server in ipairs({
|
||||
"clangd",
|
||||
"cmake",
|
||||
"bashls",
|
||||
"dockerls",
|
||||
"docker_compose_language_service",
|
||||
"eslint",
|
||||
"html",
|
||||
"cssls",
|
||||
"jdtls",
|
||||
"kotlin_language_server",
|
||||
"terraformls",
|
||||
"tflint",
|
||||
"vimls",
|
||||
"rnix",
|
||||
"marksman",
|
||||
"asm_lsp",
|
||||
}) do
|
||||
lspconfig[server].setup(opts)
|
||||
end
|
||||
|
||||
-- Custom Servers outside of lspconfig
|
||||
vim.api.nvim_create_autocmd("FileType", {
|
||||
pattern = "nginx",
|
||||
desc = "Nginx Language Server Handler",
|
||||
callback = function()
|
||||
local client_id = vim.lsp.start({
|
||||
name = "Nginx-ls",
|
||||
cmd = { lsp_server_bin_dir .. "nginx-language-server" },
|
||||
root_dir = vim.fn.getcwd(),
|
||||
capabilities = lsp_capabilities,
|
||||
on_attach = on_attach,
|
||||
})
|
||||
|
||||
if client_id then
|
||||
vim.lsp.buf_attach_client(0, client_id)
|
||||
end
|
||||
end,
|
||||
})
|
||||
end,
|
||||
},
|
||||
}
|
||||
rust_tools.setup(rustopts)
|
||||
|
||||
-- NOTE: ANSIBLE LSP
|
||||
-- I use ansible a lot, define exceptions for servers that can use
|
||||
-- server:setup & vim.cmd at the bottom here
|
||||
lspconfig.ansiblels.setup({
|
||||
capabilities = lsp_capabilities,
|
||||
on_attach = on_attach,
|
||||
settings = {
|
||||
ansible = {
|
||||
ansible = {
|
||||
useFullyQualifiedCollectionNames = true,
|
||||
path = "ansible",
|
||||
},
|
||||
ansibleLint = {
|
||||
enabled = true,
|
||||
path = "ansible-lint",
|
||||
},
|
||||
python = {
|
||||
interpreterPath = "python3",
|
||||
},
|
||||
completion = {
|
||||
provideRedirectModules = true,
|
||||
},
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
-- NOTE: LUA LSP
|
||||
require("neodev").setup({
|
||||
override = function(root_dir, library)
|
||||
if root_dir:find("/tmp", 1, true) == 1 then
|
||||
library.enabled = true
|
||||
library.plugins = true
|
||||
end
|
||||
end,
|
||||
})
|
||||
|
||||
lspconfig.lua_ls.setup({
|
||||
settings = {
|
||||
Lua = {
|
||||
completion = {
|
||||
callSnippet = "Replace",
|
||||
},
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
-- NOTE: PYTHON LSP
|
||||
lspconfig.pylsp.setup({
|
||||
filetypes = { "python" },
|
||||
settings = {
|
||||
formatCommand = { "black" },
|
||||
pylsp = {
|
||||
plugins = {
|
||||
jedi_completion = {
|
||||
include_params = true,
|
||||
fuzzy = true,
|
||||
eager = true,
|
||||
},
|
||||
jedi_signature_help = { enabled = true },
|
||||
pyflakes = { enabled = true },
|
||||
pycodestyle = {
|
||||
enabled = true,
|
||||
ignore = { "E501", "E231", "W503", "E731" },
|
||||
maxLineLength = 120,
|
||||
},
|
||||
mypy = { enabled = true },
|
||||
yapf = { enabled = true },
|
||||
rope_completion = {
|
||||
enabled = true,
|
||||
eager = true,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
capabilities = lsp_capabilities,
|
||||
on_attach = on_attach,
|
||||
})
|
||||
|
||||
lspconfig.yamlls.setup({
|
||||
settings = {
|
||||
redhat = {
|
||||
telemetry = {
|
||||
enabled = false,
|
||||
},
|
||||
},
|
||||
yaml = {
|
||||
schemas = require("schemastore").yaml.schemas({}),
|
||||
},
|
||||
},
|
||||
capabilities = lsp_capabilities,
|
||||
on_attach = on_attach,
|
||||
})
|
||||
|
||||
lspconfig.csharp_ls.setup({
|
||||
handlers = {
|
||||
["textDocument/definition"] = require("csharpls_extended").handler,
|
||||
},
|
||||
capabilities = lsp_capabilities,
|
||||
on_attach = on_attach,
|
||||
})
|
||||
|
||||
-- lspconfig.omnisharp.setup({
|
||||
-- cmd = {
|
||||
-- vim.fn.stdpath("data") .. "/mason/bin/omnisharp",
|
||||
-- "--languageserver",
|
||||
-- "--hostPID",
|
||||
-- tostring(vim.fn.getpid()),
|
||||
-- },
|
||||
--
|
||||
-- handlers = {
|
||||
-- ["textDocument/definition"] = require("omnisharp_extended").handler,
|
||||
-- },
|
||||
-- enable_import_completion = true,
|
||||
-- enable_roslyn_analyzers = true,
|
||||
-- organize_imports_on_format = true,
|
||||
-- capabilities = lsp_capabilities,
|
||||
-- on_attach = on_attach,
|
||||
-- })
|
||||
|
||||
lspconfig.jsonls.setup({
|
||||
settings = {
|
||||
schemas = require("schemastore").json.schemas(),
|
||||
validate = { enable = true },
|
||||
},
|
||||
capabilities = lsp_capabilities,
|
||||
on_attach = on_attach,
|
||||
})
|
||||
|
||||
lspconfig.powershell_es.setup({
|
||||
bundle_path = vim.fn.stdpath("data") .. "/mason/packages/powershell-editor-services/",
|
||||
capabilities = lsp_capabilities,
|
||||
on_attach = on_attach,
|
||||
})
|
||||
|
||||
lspconfig.azure_pipelines_ls.setup({
|
||||
cmd = { lsp_server_bin_dir .. "azure-pipelines-language-server", "--stdio" },
|
||||
settings = {
|
||||
redhat = {
|
||||
telemetry = {
|
||||
enabled = false,
|
||||
},
|
||||
},
|
||||
yaml = {
|
||||
schemas = {
|
||||
["https://raw.githubusercontent.com/microsoft/azure-pipelines-vscode/master/service-schema.json"] = {
|
||||
"*",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
filetypes = { "azure-pipelines" },
|
||||
capabilities = lsp_capabilities,
|
||||
on_attach = on_attach,
|
||||
})
|
||||
|
||||
lspconfig.texlab.setup({
|
||||
settings = {
|
||||
texlab = {
|
||||
build = {
|
||||
onSave = true,
|
||||
executable = "tectonic",
|
||||
forwardSearchAfter = true,
|
||||
args = { "-X", "compile", "%f", "--synctex" },
|
||||
},
|
||||
forwardSearch = {
|
||||
executable = "zathura",
|
||||
args = { "--synctex-forward", "%l:1:%f", "%p" },
|
||||
},
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
-- Custom config from typescript tools
|
||||
require("typescript-tools").setup({
|
||||
on_attach = on_attach,
|
||||
settings = {
|
||||
tsserver_file_preferences = {
|
||||
includeInlayParameterNameHints = "all",
|
||||
includeInlayEnumMemberValueHints = true,
|
||||
includeInlayFunctionLikeReturnTypeHints = true,
|
||||
includeInlayFunctionParameterTypeHints = true,
|
||||
includeInlayPropertyDeclarationTypeHints = true,
|
||||
includeInlayVariableTypeHints = true,
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
-- NOTE: GENERIC LSP SERVERS
|
||||
for _, server in ipairs({
|
||||
"clangd",
|
||||
"cmake",
|
||||
"bashls",
|
||||
"dockerls",
|
||||
"docker_compose_language_service",
|
||||
"eslint",
|
||||
"html",
|
||||
"cssls",
|
||||
"jdtls",
|
||||
"kotlin_language_server",
|
||||
"terraformls",
|
||||
"tflint",
|
||||
"vimls",
|
||||
"rnix",
|
||||
"marksman",
|
||||
"asm_lsp",
|
||||
}) do
|
||||
lspconfig[server].setup(opts)
|
||||
end
|
||||
|
||||
-- Custom Servers outside of lspconfig
|
||||
vim.api.nvim_create_autocmd("FileType", {
|
||||
pattern = "nginx",
|
||||
desc = "Nginx Language Server Handler",
|
||||
callback = function()
|
||||
local client_id = vim.lsp.start({
|
||||
name = "Nginx-ls",
|
||||
cmd = { lsp_server_bin_dir .. "nginx-language-server" },
|
||||
root_dir = vim.fn.getcwd(),
|
||||
capabilities = lsp_capabilities,
|
||||
on_attach = on_attach,
|
||||
})
|
||||
|
||||
if client_id then
|
||||
vim.lsp.buf_attach_client(0, client_id)
|
||||
end
|
||||
end,
|
||||
})
|
||||
|
232
dots/.config/nvim/lua/plugins/configs/lualine.lua
Normal file
232
dots/.config/nvim/lua/plugins/configs/lualine.lua
Normal file
@ -0,0 +1,232 @@
|
||||
---@diagnostic disable: missing-fields
|
||||
return {
|
||||
{
|
||||
"nvim-lualine/lualine.nvim",
|
||||
event = "VeryLazy",
|
||||
opts = function()
|
||||
local present, lualine = pcall(require, "lualine")
|
||||
if not present then
|
||||
return
|
||||
end
|
||||
|
||||
-- Thanks to rockyzhang24 (github.com/rockyzhang24)
|
||||
|
||||
local function simplifiedMode(str)
|
||||
return " " .. (str == "V-LINE" and "VL" or (str == "V-BLOCK" and "VB" or str:sub(1, 1)))
|
||||
end
|
||||
|
||||
-- For location, show total lines
|
||||
local function customLocation(str)
|
||||
return string.gsub(str, "%w+", "%1" .. "/%%L", 1)
|
||||
end
|
||||
|
||||
-- For progress, add a fancy icon
|
||||
local function customProgress(str)
|
||||
return " " .. str
|
||||
end
|
||||
|
||||
-- For filename, show the filename and the filesize
|
||||
local function fileNameAndSize(str)
|
||||
-- For doc, only show filename
|
||||
if string.find(str, ".*/doc/.*%.txt") then
|
||||
str = vim.fn.expand("%:t")
|
||||
end
|
||||
local size = require("lualine.components.filesize")()
|
||||
return size == "" and str or str .. " [" .. size .. "]"
|
||||
end
|
||||
|
||||
local function show_macro_recording()
|
||||
local recording_register = vim.fn.reg_recording()
|
||||
if recording_register == "" then
|
||||
return ""
|
||||
else
|
||||
return "Recording @" .. recording_register
|
||||
end
|
||||
end
|
||||
|
||||
local show_lsp_name = {
|
||||
function()
|
||||
local buf_ft = vim.api.nvim_get_option_value("filetype", { scope = "local" })
|
||||
local clients = vim.lsp.get_clients({})
|
||||
if next(clients) == nil then
|
||||
return "No Active Lsp"
|
||||
else
|
||||
local msg = nil
|
||||
for _, client in ipairs(clients) do
|
||||
local filetypes = client.config.filetypes
|
||||
-- Prep filetypes for indexing, some language servers only register with a single filetype so we need to
|
||||
-- convert them into a blob so vim.fn.index doesn't throw a fit
|
||||
if type(filetypes) == "string" then
|
||||
filetypes = { filetypes }
|
||||
end
|
||||
|
||||
if filetypes and vim.fn.index(filetypes, buf_ft) ~= -1 then
|
||||
if not msg then
|
||||
msg = client.name
|
||||
else
|
||||
msg = msg .. ", " .. client.name
|
||||
end
|
||||
end
|
||||
end
|
||||
return msg or "No Active Lsp"
|
||||
end
|
||||
end,
|
||||
icon = " LSP:",
|
||||
color = { fg = "#957fb8" },
|
||||
}
|
||||
|
||||
local macro_refresh_places = { "statusline", "winbar" }
|
||||
vim.api.nvim_create_autocmd("RecordingEnter", {
|
||||
callback = function()
|
||||
lualine.refresh({
|
||||
place = macro_refresh_places,
|
||||
})
|
||||
end,
|
||||
})
|
||||
|
||||
vim.api.nvim_create_autocmd("RecordingLeave", {
|
||||
callback = function()
|
||||
lualine.refresh({
|
||||
place = macro_refresh_places,
|
||||
})
|
||||
end,
|
||||
})
|
||||
|
||||
return {
|
||||
options = {
|
||||
icons_enabled = true,
|
||||
theme = "auto",
|
||||
component_separators = { left = "", right = "" },
|
||||
section_separators = { left = "", right = "" },
|
||||
disabled_filetypes = { "alpha", "neo-tree" },
|
||||
always_divide_middle = true,
|
||||
globalstatus = true,
|
||||
},
|
||||
winbar = {
|
||||
lualine_a = {
|
||||
{
|
||||
"filename",
|
||||
path = 1,
|
||||
},
|
||||
},
|
||||
lualine_b = {
|
||||
{
|
||||
"macro-recording",
|
||||
color = {
|
||||
fg = "#FF9E3B",
|
||||
},
|
||||
fmt = show_macro_recording,
|
||||
},
|
||||
show_lsp_name,
|
||||
{
|
||||
"diagnostics",
|
||||
sources = { "nvim_diagnostic" },
|
||||
symbols = { error = " ", warn = " ", info = " ", hint = " " },
|
||||
},
|
||||
},
|
||||
lualine_c = {},
|
||||
lualine_x = {
|
||||
"encoding",
|
||||
"fileformat",
|
||||
"filetype",
|
||||
},
|
||||
lualine_y = {
|
||||
{
|
||||
"location",
|
||||
fmt = customLocation,
|
||||
},
|
||||
},
|
||||
lualine_z = {
|
||||
{
|
||||
"progress",
|
||||
fmt = customProgress,
|
||||
},
|
||||
},
|
||||
},
|
||||
inactive_winbar = {
|
||||
lualine_a = { { "filename", path = 1 } },
|
||||
lualine_b = { show_lsp_name },
|
||||
lualine_c = {},
|
||||
lualine_x = {
|
||||
"filetype",
|
||||
},
|
||||
lualine_y = {},
|
||||
lualine_z = {},
|
||||
},
|
||||
sections = {
|
||||
lualine_a = {
|
||||
{
|
||||
"mode",
|
||||
fmt = simplifiedMode,
|
||||
},
|
||||
},
|
||||
lualine_b = {
|
||||
{
|
||||
"branch",
|
||||
icon = "",
|
||||
},
|
||||
{
|
||||
"diff",
|
||||
symbols = { added = " ", modified = " ", removed = " " },
|
||||
},
|
||||
{
|
||||
"macro-recording",
|
||||
color = {
|
||||
fg = "#FF9E3B",
|
||||
},
|
||||
fmt = show_macro_recording,
|
||||
},
|
||||
},
|
||||
lualine_c = {
|
||||
{
|
||||
"filename",
|
||||
path = 3,
|
||||
symbols = {
|
||||
modified = "[+]",
|
||||
readonly = "[]",
|
||||
unnamed = "[No Name]",
|
||||
},
|
||||
fmt = fileNameAndSize,
|
||||
},
|
||||
},
|
||||
|
||||
-- Right
|
||||
lualine_x = {
|
||||
{
|
||||
function()
|
||||
local lazy_stats = require("lazy").stats()
|
||||
local plugin_count = lazy_stats.count
|
||||
local loaded_plugins = lazy_stats.loaded
|
||||
return "" .. loaded_plugins .. "/" .. plugin_count .. " "
|
||||
end,
|
||||
},
|
||||
{
|
||||
require("lazy.status").updates,
|
||||
cond = require("lazy.status").has_updates,
|
||||
},
|
||||
},
|
||||
lualine_y = {
|
||||
{
|
||||
"buffers",
|
||||
mode = 2,
|
||||
show_filename_only = false,
|
||||
},
|
||||
},
|
||||
lualine_z = {
|
||||
{ "tabs" },
|
||||
},
|
||||
},
|
||||
inactive_sections = {},
|
||||
tabline = {},
|
||||
extensions = {
|
||||
"aerial",
|
||||
"fugitive",
|
||||
"nvim-tree",
|
||||
"neo-tree",
|
||||
"quickfix",
|
||||
"toggleterm",
|
||||
},
|
||||
}
|
||||
end,
|
||||
},
|
||||
}
|
7
dots/.config/nvim/lua/plugins/configs/markdown.lua
Normal file
7
dots/.config/nvim/lua/plugins/configs/markdown.lua
Normal file
@ -0,0 +1,7 @@
|
||||
return {
|
||||
{
|
||||
"iamcco/markdown-preview.nvim",
|
||||
build = "cd app && npm install",
|
||||
ft = { "markdown" },
|
||||
},
|
||||
}
|
10
dots/.config/nvim/lua/plugins/configs/mini.lua
Normal file
10
dots/.config/nvim/lua/plugins/configs/mini.lua
Normal file
@ -0,0 +1,10 @@
|
||||
return {
|
||||
{
|
||||
"echasnovski/mini.nvim",
|
||||
event = { "BufReadPre", "BufNewFile" },
|
||||
config = function()
|
||||
require("mini.align").setup({})
|
||||
require("mini.cursorword").setup({})
|
||||
end,
|
||||
},
|
||||
}
|
6
dots/.config/nvim/lua/plugins/configs/mkdir.lua
Normal file
6
dots/.config/nvim/lua/plugins/configs/mkdir.lua
Normal file
@ -0,0 +1,6 @@
|
||||
return {
|
||||
{
|
||||
"jghauser/mkdir.nvim",
|
||||
event = "BufWritePre"
|
||||
},
|
||||
}
|
12
dots/.config/nvim/lua/plugins/configs/move.lua
Normal file
12
dots/.config/nvim/lua/plugins/configs/move.lua
Normal file
@ -0,0 +1,12 @@
|
||||
return {
|
||||
{
|
||||
"matze/vim-move",
|
||||
event = "VeryLazy",
|
||||
keys = {
|
||||
"<A-j>",
|
||||
"<A-j>",
|
||||
"<A-h>",
|
||||
"<A-l>"
|
||||
}
|
||||
},
|
||||
}
|
32
dots/.config/nvim/lua/plugins/configs/neo-tree.lua
Normal file
32
dots/.config/nvim/lua/plugins/configs/neo-tree.lua
Normal file
@ -0,0 +1,32 @@
|
||||
return {
|
||||
{
|
||||
"nvim-neo-tree/neo-tree.nvim",
|
||||
dependencies = {
|
||||
"nvim-tree/nvim-web-devicons",
|
||||
"nvim-lua/plenary.nvim",
|
||||
"MunifTanjim/nui.nvim",
|
||||
},
|
||||
cmd = "Neotree",
|
||||
keys = {
|
||||
{ "<leader>nt", "<cmd>Neotree show toggle focus<cr>", desc = "Neotree: Toggle" },
|
||||
},
|
||||
opts = function()
|
||||
vim.g.neo_tree_remove_legacy_commands = 1
|
||||
|
||||
return {
|
||||
source_selector = {
|
||||
winbar = true,
|
||||
},
|
||||
filesystem = {
|
||||
use_libuv_file_watcher = true,
|
||||
},
|
||||
window = {
|
||||
mappings = {
|
||||
["<space>"] = "none",
|
||||
["/"] = "none",
|
||||
},
|
||||
},
|
||||
}
|
||||
end,
|
||||
},
|
||||
}
|
13
dots/.config/nvim/lua/plugins/configs/neoclip.lua
Normal file
13
dots/.config/nvim/lua/plugins/configs/neoclip.lua
Normal file
@ -0,0 +1,13 @@
|
||||
return {
|
||||
{
|
||||
"AckslD/nvim-neoclip.lua",
|
||||
event = { "BufReadPre", "BufNewFile" },
|
||||
dependencies = {
|
||||
{ "tami5/sqlite.lua" },
|
||||
{ "nvim-telescope/telescope.nvim" },
|
||||
},
|
||||
opts = {
|
||||
enable_persistent_history = true,
|
||||
},
|
||||
},
|
||||
}
|
22
dots/.config/nvim/lua/plugins/configs/neoformat.lua
Executable file → Normal file
22
dots/.config/nvim/lua/plugins/configs/neoformat.lua
Executable file → Normal file
@ -1,8 +1,14 @@
|
||||
vim.cmd([[
|
||||
let g:neoformat_python_black = {
|
||||
\ 'exe': 'black',
|
||||
\ 'stdin': 1,
|
||||
\ 'args': ['-q', '-'],
|
||||
\ }
|
||||
let g:neoformat_enabled_python = ['black']
|
||||
]])
|
||||
return {
|
||||
{
|
||||
"sbdchd/neoformat",
|
||||
cmd = "Neoformat",
|
||||
config = function()
|
||||
vim.g.neoformat_python_black = {
|
||||
exe = "black",
|
||||
stdin = 1,
|
||||
args = { "-q", "-" }
|
||||
}
|
||||
vim.g.neoformat_enabled_python = { "black" }
|
||||
end,
|
||||
},
|
||||
}
|
||||
|
@ -1,17 +0,0 @@
|
||||
local neogit = require("neogit")
|
||||
neogit.setup({
|
||||
disable_insert_on_commit = "auto",
|
||||
disable_commit_confirmation = true,
|
||||
disable_builtin_notifications = true,
|
||||
integrations = {
|
||||
diffview = true,
|
||||
telescope = true,
|
||||
},
|
||||
})
|
||||
|
||||
vim.api.nvim_create_autocmd("FileType", {
|
||||
pattern = "*Neogit*",
|
||||
callback = function()
|
||||
vim.opt_local.list = false
|
||||
end,
|
||||
})
|
9
dots/.config/nvim/lua/plugins/configs/neoscroll.lua
Normal file
9
dots/.config/nvim/lua/plugins/configs/neoscroll.lua
Normal file
@ -0,0 +1,9 @@
|
||||
return {
|
||||
{
|
||||
"karb94/neoscroll.nvim",
|
||||
event = "WinScrolled",
|
||||
opts = {
|
||||
easing_function = "circular",
|
||||
},
|
||||
},
|
||||
}
|
@ -1,17 +0,0 @@
|
||||
local neotree = require("neo-tree")
|
||||
|
||||
vim.g.neo_tree_remove_legacy_commands = 1
|
||||
neotree.setup({
|
||||
source_selector = {
|
||||
winbar = true,
|
||||
},
|
||||
filesystem = {
|
||||
use_libuv_file_watcher = true,
|
||||
},
|
||||
window = {
|
||||
mappings = {
|
||||
["<space>"] = "none",
|
||||
["/"] = "none",
|
||||
},
|
||||
},
|
||||
})
|
6
dots/.config/nvim/lua/plugins/configs/nftables.lua
Normal file
6
dots/.config/nvim/lua/plugins/configs/nftables.lua
Normal file
@ -0,0 +1,6 @@
|
||||
return {
|
||||
{
|
||||
"nfnty/vim-nftables",
|
||||
ft = { "nftables" },
|
||||
},
|
||||
}
|
17
dots/.config/nvim/lua/plugins/configs/nibbler.lua
Normal file
17
dots/.config/nvim/lua/plugins/configs/nibbler.lua
Normal file
@ -0,0 +1,17 @@
|
||||
return {
|
||||
{
|
||||
"skosulor/nibbler",
|
||||
event = { "BufReadPre", "BufNewFile" },
|
||||
cmd = {
|
||||
"NibblerToBin",
|
||||
"NibblerToHex",
|
||||
"NibblerToDec",
|
||||
"NibblerToCArray",
|
||||
"NibblerHexStringToCArray",
|
||||
"NibblerToggle",
|
||||
},
|
||||
opts = {
|
||||
display_enabled = true,
|
||||
},
|
||||
},
|
||||
}
|
@ -1,14 +1,85 @@
|
||||
require("noice").setup({
|
||||
lsp = {
|
||||
override = {
|
||||
["vim.lsp.util.convert_input_to_markdown_lines"] = true,
|
||||
["vim.lsp.util.stylize_markdown"] = true,
|
||||
["cmp.entry.get_documentation"] = true,
|
||||
return {
|
||||
{
|
||||
"folke/noice.nvim",
|
||||
event = "VeryLazy",
|
||||
opts = {
|
||||
lsp = {
|
||||
override = {
|
||||
["vim.lsp.util.convert_input_to_markdown_lines"] = true,
|
||||
["vim.lsp.util.stylize_markdown"] = true,
|
||||
["cmp.entry.get_documentation"] = true,
|
||||
},
|
||||
},
|
||||
presets = {
|
||||
long_message_to_split = true,
|
||||
inc_rename = true,
|
||||
command_palette = true,
|
||||
},
|
||||
views = {
|
||||
cmdline_popup = {
|
||||
border = {
|
||||
style = "none",
|
||||
},
|
||||
position = {
|
||||
row = "99%",
|
||||
col = "0%",
|
||||
},
|
||||
},
|
||||
},
|
||||
popupmenu = {
|
||||
backend = "cmp"
|
||||
}
|
||||
},
|
||||
dependencies = {
|
||||
-- if you lazy-load any plugin below, make sure to add proper `module="..."` entries
|
||||
"MunifTanjim/nui.nvim",
|
||||
{
|
||||
"rcarriga/nvim-notify",
|
||||
keys = {
|
||||
{
|
||||
"<leader>nd",
|
||||
function()
|
||||
require("notify").dismiss({
|
||||
pending = true,
|
||||
silent = true
|
||||
})
|
||||
end,
|
||||
desc = "Notifications: Dismiss",
|
||||
},
|
||||
},
|
||||
opts = { -- Animation style ()
|
||||
stages = "slide",
|
||||
fps = 60,
|
||||
|
||||
-- Function called when a new window is opened, use for changing win settings/config
|
||||
on_open = nil,
|
||||
|
||||
-- Function called when a window is closed
|
||||
on_close = nil,
|
||||
|
||||
-- Render function for notifications. See notify-render()
|
||||
render = "default",
|
||||
|
||||
-- Default timeout for notifications
|
||||
timeout = 5000,
|
||||
|
||||
-- For stages that change opacity this is treated as the highlight behind the window
|
||||
-- Set this to either a highlight group, an RGB hex value e.g. "#000000" or a function returning an RGB code for dynamic values
|
||||
background_colour = "#000000",
|
||||
|
||||
-- Minimum width for notification windows
|
||||
minimum_width = 50,
|
||||
|
||||
-- Icons for the different levels
|
||||
icons = {
|
||||
ERROR = "",
|
||||
WARN = "",
|
||||
INFO = "",
|
||||
DEBUG = "",
|
||||
TRACE = "✎",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
presets = {
|
||||
long_message_to_split = true,
|
||||
inc_rename = true,
|
||||
},
|
||||
})
|
||||
}
|
||||
|
@ -1,11 +0,0 @@
|
||||
local null_ls = require("null-ls")
|
||||
|
||||
null_ls.setup({
|
||||
sources = {
|
||||
null_ls.builtins.diagnostics.hadolint,
|
||||
null_ls.builtins.code_actions.refactoring,
|
||||
null_ls.builtins.formatting.black,
|
||||
null_ls.builtins.formatting.stylua,
|
||||
null_ls.builtins.formatting.prettier,
|
||||
},
|
||||
})
|
@ -1,35 +0,0 @@
|
||||
require("notify").setup({
|
||||
-- Animation style (see below for details)
|
||||
stages = "slide",
|
||||
fps = 60,
|
||||
|
||||
-- Function called when a new window is opened, use for changing win settings/config
|
||||
on_open = nil,
|
||||
|
||||
-- Function called when a window is closed
|
||||
on_close = nil,
|
||||
|
||||
-- Render function for notifications. See notify-render()
|
||||
render = "default",
|
||||
|
||||
-- Default timeout for notifications
|
||||
timeout = 5000,
|
||||
|
||||
-- For stages that change opacity this is treated as the highlight behind the window
|
||||
-- Set this to either a highlight group, an RGB hex value e.g. "#000000" or a function returning an RGB code for dynamic values
|
||||
background_colour = "#000000",
|
||||
|
||||
-- Minimum width for notification windows
|
||||
minimum_width = 50,
|
||||
|
||||
-- Icons for the different levels
|
||||
icons = {
|
||||
ERROR = "",
|
||||
WARN = "",
|
||||
INFO = "",
|
||||
DEBUG = "",
|
||||
TRACE = "✎",
|
||||
},
|
||||
})
|
||||
|
||||
-- vim.notify = require('notify')
|
@ -1,46 +1,51 @@
|
||||
vim.o.foldcolumn = "1"
|
||||
vim.o.foldlevel = 99
|
||||
vim.o.foldlevelstart = 99
|
||||
vim.o.foldenable = true
|
||||
return {
|
||||
{
|
||||
"kevinhwang91/nvim-ufo",
|
||||
dependencies = {
|
||||
"kevinhwang91/promise-async",
|
||||
},
|
||||
event = { "BufReadPre", "BufNewFile" },
|
||||
opts = function()
|
||||
vim.keymap.set("n", "zR", require("ufo").openAllFolds)
|
||||
vim.keymap.set("n", "zM", require("ufo").closeAllFolds)
|
||||
|
||||
-- Using ufo provider need remap `zR` and `zM`. If Neovim is 0.6.1, remap yourself
|
||||
vim.keymap.set("n", "zR", require("ufo").openAllFolds)
|
||||
vim.keymap.set("n", "zM", require("ufo").closeAllFolds)
|
||||
|
||||
-- Show numbers for fold text
|
||||
local handler = function(virtText, lnum, endLnum, width, truncate)
|
||||
local newVirtText = {}
|
||||
local suffix = (" %d "):format(endLnum - lnum)
|
||||
local sufWidth = vim.fn.strdisplaywidth(suffix)
|
||||
local targetWidth = width - sufWidth
|
||||
local curWidth = 0
|
||||
for _, chunk in ipairs(virtText) do
|
||||
local chunkText = chunk[1]
|
||||
local chunkWidth = vim.fn.strdisplaywidth(chunkText)
|
||||
if targetWidth > curWidth + chunkWidth then
|
||||
table.insert(newVirtText, chunk)
|
||||
else
|
||||
chunkText = truncate(chunkText, targetWidth - curWidth)
|
||||
local hlGroup = chunk[2]
|
||||
table.insert(newVirtText, { chunkText, hlGroup })
|
||||
chunkWidth = vim.fn.strdisplaywidth(chunkText)
|
||||
-- str width returned from truncate() may less than 2nd argument, need padding
|
||||
if curWidth + chunkWidth < targetWidth then
|
||||
suffix = suffix .. (" "):rep(targetWidth - curWidth - chunkWidth)
|
||||
-- Show numbers for fold text
|
||||
local handler = function(virtText, lnum, endLnum, width, truncate)
|
||||
local newVirtText = {}
|
||||
local suffix = (" %d "):format(endLnum - lnum)
|
||||
local sufWidth = vim.fn.strdisplaywidth(suffix)
|
||||
local targetWidth = width - sufWidth
|
||||
local curWidth = 0
|
||||
for _, chunk in ipairs(virtText) do
|
||||
local chunkText = chunk[1]
|
||||
local chunkWidth = vim.fn.strdisplaywidth(chunkText)
|
||||
if targetWidth > curWidth + chunkWidth then
|
||||
table.insert(newVirtText, chunk)
|
||||
else
|
||||
chunkText = truncate(chunkText, targetWidth - curWidth)
|
||||
local hlGroup = chunk[2]
|
||||
table.insert(newVirtText, { chunkText, hlGroup })
|
||||
chunkWidth = vim.fn.strdisplaywidth(chunkText)
|
||||
-- str width returned from truncate() may less than 2nd argument, need padding
|
||||
if curWidth + chunkWidth < targetWidth then
|
||||
suffix = suffix .. (" "):rep(targetWidth - curWidth - chunkWidth)
|
||||
end
|
||||
break
|
||||
end
|
||||
curWidth = curWidth + chunkWidth
|
||||
end
|
||||
table.insert(newVirtText, { suffix, "@conditional" })
|
||||
return newVirtText
|
||||
end
|
||||
break
|
||||
end
|
||||
curWidth = curWidth + chunkWidth
|
||||
end
|
||||
table.insert(newVirtText, { suffix, "@conditional" })
|
||||
return newVirtText
|
||||
end
|
||||
|
||||
local ft_options = { norg = "" }
|
||||
require("ufo").setup({
|
||||
provider_selector = function(bufnr, filetype, buftype)
|
||||
return ft_options[filetype] or { "treesitter", "indent" }
|
||||
end,
|
||||
fold_virt_text_handler = handler,
|
||||
disabled = { "norg" },
|
||||
})
|
||||
local ft_options = { norg = "" }
|
||||
return {
|
||||
provider_selector = function(_, filetype, _)
|
||||
return ft_options[filetype] or { "treesitter", "indent" }
|
||||
end,
|
||||
fold_virt_text_handler = handler,
|
||||
disabled = { "norg" },
|
||||
}
|
||||
end,
|
||||
},
|
||||
}
|
||||
|
26
dots/.config/nvim/lua/plugins/configs/overseer.lua
Normal file
26
dots/.config/nvim/lua/plugins/configs/overseer.lua
Normal file
@ -0,0 +1,26 @@
|
||||
return {
|
||||
{
|
||||
"stevearc/overseer.nvim",
|
||||
cmd = {
|
||||
"OverseerRun",
|
||||
"OverseerInfo",
|
||||
"OverseerOpen",
|
||||
"OverseerBuild",
|
||||
"OverseerClose",
|
||||
"OverseerRunCmd",
|
||||
"OverseerToggle",
|
||||
"OverseerClearCache",
|
||||
"OverseerLoadBundle",
|
||||
"OverseerSaveBundle",
|
||||
"OverseerTaskAction",
|
||||
"OverseerQuickAction",
|
||||
"OverseerDeleteBundle",
|
||||
},
|
||||
keys = {
|
||||
{ "<leader>or", desc = "> Overseer" },
|
||||
{ "<leader>or", vim.cmd.OverseerRun, desc = "Overseer: Run" },
|
||||
{ "<leader>ot", vim.cmd.OverseerToggle, desc = "Overseer: Toggle" },
|
||||
},
|
||||
opts = {},
|
||||
},
|
||||
}
|
@ -1,3 +0,0 @@
|
||||
local dap_python = require("dap-python")
|
||||
dap_python.setup(vim.fn.stdpath("data") .. "/mason/packages/debugpy/venv/bin/python3")
|
||||
dap_python.test_runner = "pytest"
|
50
dots/.config/nvim/lua/plugins/configs/statuscol.lua
Normal file
50
dots/.config/nvim/lua/plugins/configs/statuscol.lua
Normal file
@ -0,0 +1,50 @@
|
||||
return {
|
||||
{
|
||||
"gen740/SmoothCursor.nvim",
|
||||
event = { "BufReadPre", "BufNewFile" },
|
||||
opts = {
|
||||
priority = 8,
|
||||
fancy = {
|
||||
enable = true,
|
||||
head = { cursor = "⯈", texthl = "SmoothCursorCursor", linehl = nil },
|
||||
body = {
|
||||
{ cursor = "", texthl = "SmoothCursorTrailBig1" },
|
||||
{ cursor = "", texthl = "SmoothCursorTrailBig2" },
|
||||
{ cursor = "", texthl = "SmoothCursorTrailMedium" },
|
||||
{ cursor = "", texthl = "SmoothCursorTrailMedium" },
|
||||
{ cursor = "•", texthl = "SmoothCursorTrailSmall" },
|
||||
{ cursor = ".", texthl = "SmoothCursorTrailXSmall" },
|
||||
{ cursor = ".", texthl = "SmoothCursorTrailXSmall" },
|
||||
},
|
||||
},
|
||||
disabled_filetypes = { "NeogitNotification" },
|
||||
},
|
||||
},
|
||||
{
|
||||
"luukvbaal/statuscol.nvim",
|
||||
event = { "BufReadPre", "BufNewFile" },
|
||||
opts = function()
|
||||
local builtin = require("statuscol.builtin")
|
||||
return {
|
||||
foldfunc = "builtin",
|
||||
setopt = true,
|
||||
relculright = false,
|
||||
segments = {
|
||||
{ text = { "%s" }, click = "v:lua.ScSa" },
|
||||
{ text = { builtin.lnumfunc }, click = "v:lua.ScLa" },
|
||||
{ text = { " ", builtin.foldfunc, " " }, click = "v:lua.ScFa" },
|
||||
},
|
||||
}
|
||||
end,
|
||||
},
|
||||
{
|
||||
"lewis6991/gitsigns.nvim",
|
||||
event = { "BufReadPre", "BufNewFile" },
|
||||
opts = {
|
||||
current_line_blame = true,
|
||||
current_line_blame_opts = {
|
||||
delay = 0,
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
@ -1,224 +0,0 @@
|
||||
local util = require("utils.funcs")
|
||||
local present, lualine = pcall(require, "lualine")
|
||||
if not present then
|
||||
return
|
||||
end
|
||||
|
||||
-- Thanks to rockyzhang24 (github.com/rockyzhang24)
|
||||
|
||||
local function simplifiedMode(str)
|
||||
return " " .. (str == "V-LINE" and "VL" or (str == "V-BLOCK" and "VB" or str:sub(1, 1)))
|
||||
end
|
||||
|
||||
-- For location, show total lines
|
||||
local function customLocation(str)
|
||||
return string.gsub(str, "%w+", "%1" .. "/%%L", 1)
|
||||
end
|
||||
|
||||
-- For progress, add a fancy icon
|
||||
local function customProgress(str)
|
||||
return " " .. str
|
||||
end
|
||||
|
||||
-- For filename, show the filename and the filesize
|
||||
local function fileNameAndSize(str)
|
||||
-- For doc, only show filename
|
||||
if string.find(str, ".*/doc/.*%.txt") then
|
||||
str = vim.fn.expand("%:t")
|
||||
end
|
||||
local size = require("lualine.components.filesize")()
|
||||
return size == "" and str or str .. " [" .. size .. "]"
|
||||
end
|
||||
|
||||
local function show_macro_recording()
|
||||
local recording_register = vim.fn.reg_recording()
|
||||
if recording_register == "" then
|
||||
return ""
|
||||
else
|
||||
return "Recording @" .. recording_register
|
||||
end
|
||||
end
|
||||
|
||||
local show_lsp_name = {
|
||||
function()
|
||||
local buf_ft = vim.api.nvim_get_option_value("filetype", { scope = "local" })
|
||||
local clients = vim.lsp.get_active_clients()
|
||||
if next(clients) == nil then
|
||||
return "No Active Lsp"
|
||||
else
|
||||
local msg = nil
|
||||
for _, client in ipairs(clients) do
|
||||
local filetypes = client.config.filetypes
|
||||
-- Prep filetypes for indexing, some language servers only register with a single filetype so we need to
|
||||
-- convert them into a blob so vim.fn.index doesn't throw a fit
|
||||
if type(filetypes) == "string" then
|
||||
filetypes = { filetypes }
|
||||
end
|
||||
|
||||
if filetypes and vim.fn.index(filetypes, buf_ft) ~= -1 then
|
||||
if not msg then
|
||||
msg = client.name
|
||||
else
|
||||
msg = msg .. ", " .. client.name
|
||||
end
|
||||
end
|
||||
end
|
||||
return msg or "No Active Lsp"
|
||||
end
|
||||
end,
|
||||
icon = " LSP:",
|
||||
color = { fg = "#957fb8" },
|
||||
}
|
||||
|
||||
lualine.setup({
|
||||
options = {
|
||||
icons_enabled = true,
|
||||
theme = "auto",
|
||||
component_separators = { left = "", right = "" },
|
||||
section_separators = { left = "", right = "" },
|
||||
disabled_filetypes = { "alpha", "neo-tree" },
|
||||
always_divide_middle = true,
|
||||
globalstatus = true,
|
||||
},
|
||||
winbar = {
|
||||
lualine_a = {
|
||||
{
|
||||
"filename",
|
||||
path = 1,
|
||||
},
|
||||
},
|
||||
lualine_b = {
|
||||
{
|
||||
"macro-recording",
|
||||
color = {
|
||||
fg = "#FF9E3B",
|
||||
},
|
||||
fmt = show_macro_recording,
|
||||
},
|
||||
show_lsp_name,
|
||||
{
|
||||
"diagnostics",
|
||||
sources = { "nvim_diagnostic" },
|
||||
symbols = { error = " ", warn = " ", info = " ", hint = " " },
|
||||
},
|
||||
},
|
||||
lualine_c = {},
|
||||
lualine_x = {
|
||||
"encoding",
|
||||
"fileformat",
|
||||
"filetype",
|
||||
},
|
||||
lualine_y = {
|
||||
{
|
||||
"location",
|
||||
fmt = customLocation,
|
||||
},
|
||||
},
|
||||
lualine_z = {
|
||||
{
|
||||
"progress",
|
||||
fmt = customProgress,
|
||||
},
|
||||
},
|
||||
},
|
||||
inactive_winbar = {
|
||||
lualine_a = { { "filename", path = 1 } },
|
||||
lualine_b = { show_lsp_name },
|
||||
lualine_c = {},
|
||||
lualine_x = {
|
||||
"filetype",
|
||||
},
|
||||
lualine_y = {},
|
||||
lualine_z = {},
|
||||
},
|
||||
sections = {
|
||||
lualine_a = {
|
||||
{
|
||||
"mode",
|
||||
fmt = simplifiedMode,
|
||||
},
|
||||
},
|
||||
lualine_b = {
|
||||
{
|
||||
"branch",
|
||||
icon = "",
|
||||
},
|
||||
{
|
||||
"diff",
|
||||
symbols = { added = " ", modified = " ", removed = " " },
|
||||
},
|
||||
{
|
||||
"macro-recording",
|
||||
color = {
|
||||
fg = "#FF9E3B",
|
||||
},
|
||||
fmt = show_macro_recording,
|
||||
},
|
||||
},
|
||||
lualine_c = {
|
||||
{
|
||||
"filename",
|
||||
path = 3,
|
||||
symbols = {
|
||||
modified = "[+]",
|
||||
readonly = "[]",
|
||||
unnamed = "[No Name]",
|
||||
},
|
||||
fmt = fileNameAndSize,
|
||||
},
|
||||
},
|
||||
|
||||
-- Right
|
||||
lualine_x = {
|
||||
{
|
||||
function()
|
||||
local lazy_stats = require("lazy").stats()
|
||||
local plugin_count = lazy_stats.count
|
||||
local loaded_plugins = lazy_stats.loaded
|
||||
return "" .. loaded_plugins .. "/" .. plugin_count .. " "
|
||||
end,
|
||||
},
|
||||
{
|
||||
require("lazy.status").updates,
|
||||
cond = require("lazy.status").has_updates,
|
||||
},
|
||||
},
|
||||
lualine_y = {
|
||||
{
|
||||
"buffers",
|
||||
mode = 2,
|
||||
show_filename_only = false,
|
||||
},
|
||||
},
|
||||
lualine_z = {
|
||||
{ "tabs" },
|
||||
},
|
||||
},
|
||||
inactive_sections = {},
|
||||
tabline = {},
|
||||
extensions = {
|
||||
"aerial",
|
||||
"fugitive",
|
||||
"nvim-tree",
|
||||
"neo-tree",
|
||||
"quickfix",
|
||||
"toggleterm",
|
||||
},
|
||||
})
|
||||
|
||||
local macro_refresh_places = { "statusline", "winbar" }
|
||||
vim.api.nvim_create_autocmd("RecordingEnter", {
|
||||
callback = function()
|
||||
lualine.refresh({
|
||||
place = macro_refresh_places,
|
||||
})
|
||||
end,
|
||||
})
|
||||
|
||||
vim.api.nvim_create_autocmd("RecordingLeave", {
|
||||
callback = function()
|
||||
lualine.refresh({
|
||||
place = macro_refresh_places,
|
||||
})
|
||||
end,
|
||||
})
|
7
dots/.config/nvim/lua/plugins/configs/surround.lua
Normal file
7
dots/.config/nvim/lua/plugins/configs/surround.lua
Normal file
@ -0,0 +1,7 @@
|
||||
return {
|
||||
{
|
||||
"kylechui/nvim-surround",
|
||||
event = { "BufReadPre", "BufNewFile" },
|
||||
opts = {},
|
||||
},
|
||||
}
|
@ -1,150 +0,0 @@
|
||||
local telescope = require("telescope")
|
||||
local actions = require("telescope.actions")
|
||||
|
||||
telescope.setup({
|
||||
pickers = {
|
||||
find_files = {
|
||||
find_command = {
|
||||
"fd",
|
||||
"--no-ignore",
|
||||
},
|
||||
hidden = true,
|
||||
},
|
||||
},
|
||||
defaults = {
|
||||
vimgrep_arguments = {
|
||||
"rg",
|
||||
"--color=never",
|
||||
"--no-heading",
|
||||
"--with-filename",
|
||||
"--line-number",
|
||||
"--column",
|
||||
"--hidden",
|
||||
"--smart-case",
|
||||
},
|
||||
history = {
|
||||
path = "~/.local/share/nvim/databases/telescope_history.sqlite3",
|
||||
limit = 1000,
|
||||
},
|
||||
mappings = {
|
||||
i = {
|
||||
["<C-d>"] = actions.cycle_history_next,
|
||||
["<C-s>"] = actions.cycle_history_prev,
|
||||
},
|
||||
},
|
||||
prompt_prefix = " ",
|
||||
selection_caret = " ",
|
||||
entry_prefix = " ",
|
||||
initial_mode = "insert",
|
||||
selection_strategy = "reset",
|
||||
sorting_strategy = "ascending",
|
||||
layout_strategy = "flex",
|
||||
layout_config = {
|
||||
vertical = {
|
||||
prompt_position = "top",
|
||||
width = 0.90,
|
||||
height = 0.98,
|
||||
preview_height = 0.65,
|
||||
},
|
||||
horizontal = {
|
||||
prompt_position = "top",
|
||||
width = 0.90,
|
||||
height = 0.98,
|
||||
preview_width = 0.70,
|
||||
},
|
||||
flex = {
|
||||
flip_cloumns = 120,
|
||||
},
|
||||
},
|
||||
file_sorter = require("telescope.sorters").get_fuzzy_file,
|
||||
generic_sorter = require("telescope.sorters").get_generic_fuzzy_sorter,
|
||||
path_display = { "truncate" },
|
||||
winblend = 0,
|
||||
border = {},
|
||||
borderchars = { " ", "", "", "", "", "", "", "" },
|
||||
results_title = false,
|
||||
color_devicons = true,
|
||||
use_less = true,
|
||||
set_env = { ["COLORTERM"] = "truecolor" },
|
||||
file_previewer = require("telescope.previewers").vim_buffer_cat.new,
|
||||
grep_previewer = require("telescope.previewers").vim_buffer_vimgrep.new,
|
||||
qflist_previewer = require("telescope.previewers").vim_buffer_qflist.new,
|
||||
buffer_previewer_maker = require("telescope.previewers").buffer_previewer_maker,
|
||||
},
|
||||
extensions = {
|
||||
media_files = {
|
||||
filetypes = { "png", "webp", "jpg", "jpeg" },
|
||||
find_cmd = "rg",
|
||||
},
|
||||
["ui-select"] = {
|
||||
require("telescope.themes").get_dropdown(),
|
||||
},
|
||||
undo = {
|
||||
side_by_side = true,
|
||||
use_delta = true,
|
||||
mappings = {
|
||||
i = {
|
||||
["<C-cr>"] = require("telescope-undo.actions").yank_additions,
|
||||
["<S-cr>"] = require("telescope-undo.actions").yank_deletions,
|
||||
["<cr>"] = require("telescope-undo.actions").restore,
|
||||
},
|
||||
},
|
||||
layout_strategy = "vertical",
|
||||
layout_config = {
|
||||
preview_height = 0.8,
|
||||
},
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
telescope.load_extension("media_files")
|
||||
telescope.load_extension("find_directories")
|
||||
telescope.load_extension("file_browser")
|
||||
telescope.load_extension("notify")
|
||||
telescope.load_extension("fzf")
|
||||
telescope.load_extension("ui-select")
|
||||
telescope.load_extension("smart_history")
|
||||
telescope.load_extension("undo")
|
||||
|
||||
vim.api.nvim_create_user_command("Search", function()
|
||||
-- Thank you u/SPEKTRUMdagreat :)
|
||||
local search = vim.fn.input("Search: ")
|
||||
local pickers = require("telescope.pickers")
|
||||
local finders = require("telescope.finders")
|
||||
local conf = require("telescope.config").values
|
||||
---@diagnostic disable-next-line: redefined-local
|
||||
local actions = require("telescope.actions")
|
||||
local action_state = require("telescope.actions.state")
|
||||
|
||||
-- our picker function: colors
|
||||
local searcher = function(opts)
|
||||
opts = opts or {}
|
||||
pickers
|
||||
.new(opts, {
|
||||
prompt_title = "OmniSearch",
|
||||
finder = finders.new_table({
|
||||
results = {
|
||||
{ "Stack Overflow", ("www.stackoverflow.com/search\\?q\\=" .. search:gsub(" ", "+")) },
|
||||
{ "Google Search", ("www.google.com/search\\?q\\=" .. search:gsub(" ", "+")) },
|
||||
{ "Youtube", ("https://www.youtube.com/results\\?search_query\\=" .. search:gsub(" ", "+")) },
|
||||
{ "Wikipedia", ("https://en.wikipedia.org/w/index.php\\?search\\=" .. search:gsub(" ", "+")) },
|
||||
{ "Github", ("https://github.com/search\\?q\\=" .. search:gsub(" ", "+")) },
|
||||
},
|
||||
entry_maker = function(entry)
|
||||
return { value = entry, display = entry[1], ordinal = entry[1] }
|
||||
end,
|
||||
}),
|
||||
sorter = conf.generic_sorter(opts),
|
||||
attach_mappings = function(prompt_bufnr, map)
|
||||
actions.select_default:replace(function()
|
||||
actions.close(prompt_bufnr)
|
||||
local selection = action_state.get_selected_entry()
|
||||
vim.cmd(("silent execute '!firefox-developer-edition %s &'"):format(selection["value"][2]))
|
||||
end)
|
||||
return true
|
||||
end,
|
||||
})
|
||||
:find()
|
||||
end
|
||||
searcher(require("telescope.themes").get_dropdown({}))
|
||||
end, { nargs = 0 })
|
214
dots/.config/nvim/lua/plugins/configs/telescope.lua
Normal file
214
dots/.config/nvim/lua/plugins/configs/telescope.lua
Normal file
@ -0,0 +1,214 @@
|
||||
return {
|
||||
{
|
||||
"nvim-telescope/telescope.nvim",
|
||||
cmd = {
|
||||
"Telescope",
|
||||
"Search",
|
||||
},
|
||||
keys = {
|
||||
{
|
||||
"<leader>lq",
|
||||
":Telescope diagnostics bufnr=0<CR>",
|
||||
desc = "LSP: Telescope Diagnostics",
|
||||
},
|
||||
{ "<leader>t", desc = "> Telescope" },
|
||||
{ "<leader>tg", desc = "> Telescope: Git" },
|
||||
{ "<leader>tw", ":Telescope live_grep<CR>", desc = "Telescope: Grep for Word" },
|
||||
{ "<leader>tgs", ":Telescope git_status<CR>", desc = "Telescope: Git Status" },
|
||||
{ "<leader>tgc", ":Telescope git_commits<CR>", desc = "Telescope: Git Commits" },
|
||||
{ "<leader>tgb", ":Telescope git_branches<CR>", desc = "Telescope: Git Branches" },
|
||||
{ "<leader>tf", ":Telescope find_files<CR>", desc = "Telescope: Find Files" },
|
||||
{ "<leader>td", ":Telescope find_directories<CR>", desc = "Telescope: Find Directories" },
|
||||
{ "<leader>tb", ":Telescope buffers<CR>", desc = "Telescope: Buffers" },
|
||||
{ "<leader>th", ":Telescope help_tags<CR>", desc = "Telescope: Help Tags" },
|
||||
{ "<leader>to", ":Telescope oldfiles<CR>", desc = "Telescope: Recent Files" },
|
||||
{ "<leader>tn", ":Telescope neoclip default<CR>", desc = "Telescope: Neoclip Buffer" },
|
||||
{ "<leader>tr", ":Telescope resume<CR>", desc = "Telescope: Resume" },
|
||||
{ "<leader>tR", ":Telescope registers<CR>", desc = "Telescope: Registers" },
|
||||
{ "<leader>tt", ":Telescope file_browser<CR>", desc = "Telescope: File Tree" },
|
||||
{ "<leader>ts", ":Telescope spell_suggest<CR>", desc = "Telescope: Spell Suggest" },
|
||||
{ "<leader>tl", ":Telescope resume<CR>", desc = "Telescope: Previous State" },
|
||||
{ "<leader>tT", ":TodoTelescope<CR>", desc = "Telescope: Todo Items" },
|
||||
{ "<leader>tk", ":Telescope keymaps<CR>", desc = "Telescope: Keymaps" },
|
||||
{ "<leader>tc", ":Telescope commands<CR>", desc = "Telescope: Commands" },
|
||||
{ "<leader>tu", ":Telescope undo<CR>", desc = "Telescope: Undo History" },
|
||||
{ "<leader>lq", ":Telescope diagnostics bufnr=0<CR>", desc = "LSP: Telescope Diagnostics" },
|
||||
{ "<leader>nv", ":Telescope notify<CR>", desc = "Notifications: Search" },
|
||||
},
|
||||
dependencies = {
|
||||
"nvim-telescope/telescope-media-files.nvim",
|
||||
"nvim-telescope/telescope-file-browser.nvim",
|
||||
"artart222/telescope_find_directories",
|
||||
"nvim-telescope/telescope-ui-select.nvim",
|
||||
"debugloop/telescope-undo.nvim",
|
||||
"rcarriga/nvim-notify",
|
||||
{ "nvim-telescope/telescope-smart-history.nvim", dependencies = "tami5/sqlite.lua" },
|
||||
{ "nvim-telescope/telescope-fzf-native.nvim", build = "make" },
|
||||
},
|
||||
config = function()
|
||||
local telescope = require("telescope")
|
||||
local actions = require("telescope.actions")
|
||||
|
||||
telescope.setup({
|
||||
pickers = {
|
||||
find_files = {
|
||||
find_command = {
|
||||
"fd",
|
||||
"--no-ignore",
|
||||
},
|
||||
hidden = true,
|
||||
},
|
||||
},
|
||||
defaults = {
|
||||
vimgrep_arguments = {
|
||||
"rg",
|
||||
"--color=never",
|
||||
"--no-heading",
|
||||
"--with-filename",
|
||||
"--line-number",
|
||||
"--column",
|
||||
"--hidden",
|
||||
"--smart-case",
|
||||
},
|
||||
history = {
|
||||
path = "~/.local/share/nvim/databases/telescope_history.sqlite3",
|
||||
limit = 1000,
|
||||
},
|
||||
mappings = {
|
||||
i = {
|
||||
["<C-d>"] = actions.cycle_history_next,
|
||||
["<C-s>"] = actions.cycle_history_prev,
|
||||
},
|
||||
},
|
||||
prompt_prefix = " ",
|
||||
selection_caret = " ",
|
||||
entry_prefix = " ",
|
||||
initial_mode = "insert",
|
||||
selection_strategy = "reset",
|
||||
sorting_strategy = "ascending",
|
||||
layout_strategy = "flex",
|
||||
layout_config = {
|
||||
vertical = {
|
||||
prompt_position = "top",
|
||||
width = 0.90,
|
||||
height = 0.98,
|
||||
preview_height = 0.65,
|
||||
},
|
||||
horizontal = {
|
||||
prompt_position = "top",
|
||||
width = 0.90,
|
||||
height = 0.98,
|
||||
preview_width = 0.70,
|
||||
},
|
||||
flex = {
|
||||
flip_cloumns = 120,
|
||||
},
|
||||
},
|
||||
file_sorter = require("telescope.sorters").get_fuzzy_file,
|
||||
generic_sorter = require("telescope.sorters").get_generic_fuzzy_sorter,
|
||||
path_display = { "truncate" },
|
||||
winblend = 0,
|
||||
border = {},
|
||||
borderchars = { " ", "", "", "", "", "", "", "" },
|
||||
results_title = false,
|
||||
color_devicons = true,
|
||||
use_less = true,
|
||||
set_env = { ["COLORTERM"] = "truecolor" },
|
||||
file_previewer = require("telescope.previewers").vim_buffer_cat.new,
|
||||
grep_previewer = require("telescope.previewers").vim_buffer_vimgrep.new,
|
||||
qflist_previewer = require("telescope.previewers").vim_buffer_qflist.new,
|
||||
buffer_previewer_maker = require("telescope.previewers").buffer_previewer_maker,
|
||||
},
|
||||
extensions = {
|
||||
media_files = {
|
||||
filetypes = { "png", "webp", "jpg", "jpeg" },
|
||||
find_cmd = "rg",
|
||||
},
|
||||
["ui-select"] = {
|
||||
require("telescope.themes").get_dropdown(),
|
||||
},
|
||||
undo = {
|
||||
side_by_side = true,
|
||||
use_delta = true,
|
||||
mappings = {
|
||||
i = {
|
||||
["<C-cr>"] = require("telescope-undo.actions").yank_additions,
|
||||
["<S-cr>"] = require("telescope-undo.actions").yank_deletions,
|
||||
["<cr>"] = require("telescope-undo.actions").restore,
|
||||
},
|
||||
},
|
||||
layout_strategy = "vertical",
|
||||
layout_config = {
|
||||
preview_height = 0.8,
|
||||
},
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
telescope.load_extension("media_files")
|
||||
telescope.load_extension("find_directories")
|
||||
telescope.load_extension("file_browser")
|
||||
telescope.load_extension("notify")
|
||||
telescope.load_extension("fzf")
|
||||
telescope.load_extension("ui-select")
|
||||
telescope.load_extension("smart_history")
|
||||
telescope.load_extension("undo")
|
||||
|
||||
vim.api.nvim_create_user_command("Search", function()
|
||||
-- Thank you u/SPEKTRUMdagreat :)
|
||||
local search = vim.fn.input("Search: ")
|
||||
local pickers = require("telescope.pickers")
|
||||
local finders = require("telescope.finders")
|
||||
local conf = require("telescope.config").values
|
||||
---@diagnostic disable-next-line: redefined-local
|
||||
local actions = require("telescope.actions")
|
||||
local action_state = require("telescope.actions.state")
|
||||
|
||||
-- our picker function: colors
|
||||
local searcher = function(opts)
|
||||
opts = opts or {}
|
||||
pickers
|
||||
.new(opts, {
|
||||
prompt_title = "OmniSearch",
|
||||
finder = finders.new_table({
|
||||
results = {
|
||||
{
|
||||
"Stack Overflow",
|
||||
("www.stackoverflow.com/search\\?q\\=" .. search:gsub(" ", "+")),
|
||||
},
|
||||
{ "Google Search", ("www.google.com/search\\?q\\=" .. search:gsub(" ", "+")) },
|
||||
{
|
||||
"Youtube",
|
||||
("https://www.youtube.com/results\\?search_query\\=" .. search:gsub(" ", "+")),
|
||||
},
|
||||
{
|
||||
"Wikipedia",
|
||||
("https://en.wikipedia.org/w/index.php\\?search\\=" .. search:gsub(" ", "+")),
|
||||
},
|
||||
{ "Github", ("https://github.com/search\\?q\\=" .. search:gsub(" ", "+")) },
|
||||
},
|
||||
entry_maker = function(entry)
|
||||
return { value = entry, display = entry[1], ordinal = entry[1] }
|
||||
end,
|
||||
}),
|
||||
sorter = conf.generic_sorter(opts),
|
||||
attach_mappings = function(prompt_bufnr, _)
|
||||
actions.select_default:replace(function()
|
||||
actions.close(prompt_bufnr)
|
||||
local selection = action_state.get_selected_entry()
|
||||
vim.cmd(
|
||||
("silent execute '!firefox-developer-edition %s &'"):format(
|
||||
selection["value"][2]
|
||||
)
|
||||
)
|
||||
end)
|
||||
return true
|
||||
end,
|
||||
})
|
||||
:find()
|
||||
end
|
||||
searcher(require("telescope.themes").get_dropdown({}))
|
||||
end, { nargs = 0 })
|
||||
end,
|
||||
},
|
||||
}
|
28
dots/.config/nvim/lua/plugins/configs/tint.lua
Normal file
28
dots/.config/nvim/lua/plugins/configs/tint.lua
Normal file
@ -0,0 +1,28 @@
|
||||
return {
|
||||
{
|
||||
"levouh/tint.nvim",
|
||||
event = "WinLeave",
|
||||
opts = {
|
||||
highlight_ignore_patterns = {
|
||||
"WinSeparator",
|
||||
},
|
||||
window_ignore_function = function(winid)
|
||||
local bufid = vim.api.nvim_win_get_buf(winid)
|
||||
|
||||
local ignoredFiletypes = { "DiffviewFiles", "DiffviewFileHistory", "neo-tree" }
|
||||
local ignoredBuftypes = { "terminal" }
|
||||
|
||||
local isDiff = vim.api.nvim_win_get_option(winid, "diff")
|
||||
local isFloating = vim.api.nvim_win_get_config(winid).relative ~= ""
|
||||
local isIgnoredBuftype =
|
||||
vim.tbl_contains(ignoredBuftypes, vim.api.nvim_buf_get_option(bufid, "buftype"))
|
||||
local isIgnoredFiletype =
|
||||
vim.tbl_contains(ignoredFiletypes, vim.api.nvim_buf_get_option(bufid, "filetype"))
|
||||
|
||||
return isDiff or isFloating or isIgnoredBuftype or isIgnoredFiletype
|
||||
end,
|
||||
tint = -30,
|
||||
saturation = 0.8,
|
||||
},
|
||||
},
|
||||
}
|
27
dots/.config/nvim/lua/plugins/configs/toggleterm.lua
Normal file
27
dots/.config/nvim/lua/plugins/configs/toggleterm.lua
Normal file
@ -0,0 +1,27 @@
|
||||
return {
|
||||
{
|
||||
"akinsho/toggleterm.nvim",
|
||||
keys = {
|
||||
{"<leader><leader>", "<cmd>ToggleTerm<CR>", desc = "ToggleTerm: Toggle" },
|
||||
},
|
||||
opts = {
|
||||
start_in_insert = false,
|
||||
direction = "float",
|
||||
autochdir = true,
|
||||
winbar = {
|
||||
enable = true,
|
||||
name_formatter = function(term) -- term: Terminal
|
||||
return term.name
|
||||
end,
|
||||
},
|
||||
},
|
||||
cmd = {
|
||||
"ToggleTerm",
|
||||
"ToggleTermSetName",
|
||||
"ToggleTermToggleAll",
|
||||
"ToggleTermSendCurrentLine",
|
||||
"ToggleTermSendVisualLines",
|
||||
"ToggleTermSendVisualSelection",
|
||||
},
|
||||
},
|
||||
}
|
293
dots/.config/nvim/lua/plugins/configs/treesitter.lua
Executable file → Normal file
293
dots/.config/nvim/lua/plugins/configs/treesitter.lua
Executable file → Normal file
@ -1,101 +1,208 @@
|
||||
local nvim_treesitter = require("nvim-treesitter.configs")
|
||||
|
||||
local treesitter_dir = vim.fn.stdpath("data") .. "/treesitter"
|
||||
|
||||
vim.opt.runtimepath:append(treesitter_dir)
|
||||
|
||||
nvim_treesitter.setup({
|
||||
parser_install_dir = treesitter_dir,
|
||||
ensure_installed = "all",
|
||||
incremental_selection = {
|
||||
enable = true,
|
||||
keymaps = {
|
||||
init_selection = "<CR>",
|
||||
scope_incremental = "<S-CR>",
|
||||
node_incremental = "<CR>",
|
||||
node_decremental = "<BS>",
|
||||
---@diagnostic disable: missing-fields
|
||||
return {
|
||||
{
|
||||
"danymat/neogen",
|
||||
keys = {
|
||||
{ "<leader>ng", desc = "> Neogen" },
|
||||
{ "<leader>ngf", "<cmd>Neogen func<CR>", desc = "Neogen: Function Annotation" },
|
||||
{ "<leader>ngc", "<cmd>Neogen class<CR>", desc = "Neogen: Class Annotation" },
|
||||
{ "<leader>ngt", "<cmd>Neogen type<CR>", desc = "Neogen: Type Annotation" },
|
||||
{ "<leader>ngb", "<cmd>Neogen file<CR>", desc = "Neogen: File Annotation" },
|
||||
},
|
||||
cmd = {
|
||||
"Neogen",
|
||||
},
|
||||
dependencies = "nvim-treesitter/nvim-treesitter",
|
||||
opts = {
|
||||
snippet_engine = "luasnip",
|
||||
languages = {
|
||||
cs = {
|
||||
template = {
|
||||
annotation_convention = "xmldoc",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
highlight = {
|
||||
enable = true,
|
||||
additional_vim_regex_highlighting = false,
|
||||
disable = function(_, buf)
|
||||
local disabled_filetypes = {
|
||||
"tex",
|
||||
}
|
||||
|
||||
for _, ft in ipairs(disabled_filetypes) do
|
||||
if vim.bo.filetype == ft then
|
||||
return true
|
||||
end
|
||||
end
|
||||
|
||||
local max_filesize = 100 * 1024 -- 100 KB
|
||||
local ok, stats = pcall(vim.loop.fs_stat, vim.api.nvim_buf_get_name(buf))
|
||||
if ok and stats and stats.size > max_filesize then
|
||||
return true
|
||||
end
|
||||
{
|
||||
"nvim-treesitter/nvim-treesitter-context",
|
||||
event = { "BufReadPre", "BufNewFile" },
|
||||
dependencies = {
|
||||
"nvim-treesitter/nvim-treesitter",
|
||||
},
|
||||
config = function()
|
||||
require("treesitter-context").setup({})
|
||||
vim.cmd.TSContextEnable()
|
||||
end,
|
||||
},
|
||||
matchup = { enable = true },
|
||||
autotag = {
|
||||
enable = true,
|
||||
},
|
||||
indent = { enable = true },
|
||||
textobjects = {
|
||||
select = {
|
||||
enable = true,
|
||||
lookahead = true,
|
||||
disable = function(lang, bufnr)
|
||||
local mode = vim.fn.mode()
|
||||
if mode == "c" then
|
||||
return true
|
||||
end
|
||||
end,
|
||||
keymaps = {
|
||||
["af"] = "@function.outer",
|
||||
["if"] = "@function.inner",
|
||||
["ac"] = "@class.outer",
|
||||
["ic"] = "@class.inner",
|
||||
["ib"] = "@block.inner",
|
||||
["ab"] = "@block.outer",
|
||||
["as"] = { query = "@scope", query_group = "locals", desc = "Select language scope" },
|
||||
},
|
||||
},
|
||||
move = {
|
||||
enable = true,
|
||||
disable = function(lang, bufnr)
|
||||
local mode = vim.fn.mode()
|
||||
if mode == "c" then
|
||||
return true
|
||||
end
|
||||
end,
|
||||
set_jumps = true,
|
||||
goto_next_start = {
|
||||
["]fs"] = "@function.outer",
|
||||
["]bs"] = "@block.outer",
|
||||
},
|
||||
goto_next_end = {
|
||||
["]fe"] = "@function.outer",
|
||||
["]be"] = "@block.outer",
|
||||
},
|
||||
goto_previous_start = {
|
||||
["[fs"] = "@function.outer",
|
||||
["[bs"] = "@block.outer",
|
||||
},
|
||||
goto_previous_end = {
|
||||
["[fe"] = "@function.outer",
|
||||
["[bs"] = "@block.outer",
|
||||
},
|
||||
{
|
||||
"windwp/nvim-ts-autotag",
|
||||
dependencies = { "nvim-treesitter/nvim-treesitter" },
|
||||
event = { "BufReadPre", "BufNewFile" },
|
||||
config = true,
|
||||
ft = {
|
||||
"astro",
|
||||
"glimmer",
|
||||
"handlebars",
|
||||
"html",
|
||||
"javascript",
|
||||
"jsx",
|
||||
"markdown",
|
||||
"php",
|
||||
"rescript",
|
||||
"svelte",
|
||||
"tsx",
|
||||
"typescript",
|
||||
"vue",
|
||||
"xml",
|
||||
},
|
||||
},
|
||||
playground = {
|
||||
enable = true,
|
||||
{
|
||||
url = "https://gitlab.com/HiPhish/rainbow-delimiters.nvim",
|
||||
dependencies = { "nvim-treesitter/nvim-treesitter" },
|
||||
event = { "BufReadPre", "BufNewFile" },
|
||||
config = function()
|
||||
local rainbow_delimiters = require("rainbow-delimiters")
|
||||
vim.g.rainbow_delimiters = {
|
||||
strategy = {
|
||||
on_attach = function()
|
||||
if vim.fn.line("$") > 10000 then
|
||||
return nil
|
||||
elseif vim.fn.line("$") > 1000 then
|
||||
return rainbow_delimiters.strategy["global"]
|
||||
end
|
||||
return rainbow_delimiters.strategy["local"]
|
||||
end,
|
||||
},
|
||||
query = {
|
||||
[""] = "rainbow-delimiters",
|
||||
lua = "rainbow-blocks",
|
||||
latex = "rainbow-blocks",
|
||||
html = "rainbow-blocks",
|
||||
javascript = "rainbow-delimiters-react",
|
||||
tsx = "rainbow-parens",
|
||||
verilog = "rainbow-blocks",
|
||||
},
|
||||
highlight = {
|
||||
"RainbowDelimiterRed",
|
||||
"RainbowDelimiterYellow",
|
||||
"RainbowDelimiterBlue",
|
||||
"RainbowDelimiterOrange",
|
||||
"RainbowDelimiterGreen",
|
||||
"RainbowDelimiterViolet",
|
||||
"RainbowDelimiterCyan",
|
||||
},
|
||||
}
|
||||
end,
|
||||
},
|
||||
query_linter = {
|
||||
enable = true,
|
||||
},
|
||||
})
|
||||
{
|
||||
"nvim-treesitter/nvim-treesitter",
|
||||
build = ":TSUpdate",
|
||||
event = { "BufReadPost", "BufNewFile" },
|
||||
dependencies = {
|
||||
"nvim-treesitter/playground",
|
||||
{
|
||||
"pfeiferj/nvim-hurl",
|
||||
config = true,
|
||||
},
|
||||
},
|
||||
config = function()
|
||||
local treesitter_dir = vim.fn.stdpath("data") .. "/treesitter"
|
||||
|
||||
require("treesitter-context").setup({})
|
||||
vim.cmd.TSContextEnable()
|
||||
vim.opt.runtimepath:append(treesitter_dir)
|
||||
|
||||
require("nvim-treesitter.configs").setup({
|
||||
parser_install_dir = treesitter_dir,
|
||||
ensure_installed = "all",
|
||||
incremental_selection = {
|
||||
enable = true,
|
||||
keymaps = {
|
||||
init_selection = "<CR>",
|
||||
scope_incremental = "<S-CR>",
|
||||
node_incremental = "<CR>",
|
||||
node_decremental = "<BS>",
|
||||
},
|
||||
},
|
||||
highlight = {
|
||||
enable = true,
|
||||
additional_vim_regex_highlighting = false,
|
||||
disable = function(_, buf)
|
||||
local disabled_filetypes = {
|
||||
"tex",
|
||||
}
|
||||
|
||||
for _, ft in ipairs(disabled_filetypes) do
|
||||
if vim.bo.filetype == ft then
|
||||
return true
|
||||
end
|
||||
end
|
||||
|
||||
local max_filesize = 100 * 1024 -- 100 KB
|
||||
local ok, stats = pcall(vim.loop.fs_stat, vim.api.nvim_buf_get_name(buf))
|
||||
if ok and stats and stats.size > max_filesize then
|
||||
return true
|
||||
end
|
||||
end,
|
||||
},
|
||||
matchup = { enable = true },
|
||||
autotag = {
|
||||
enable = true,
|
||||
},
|
||||
indent = { enable = true },
|
||||
-- textobjects = {
|
||||
-- select = {
|
||||
-- enable = true,
|
||||
-- lookahead = true,
|
||||
-- disable = function(lang, bufnr)
|
||||
-- local mode = vim.fn.mode()
|
||||
-- if mode == "c" then
|
||||
-- return true
|
||||
-- end
|
||||
-- end,
|
||||
-- keymaps = {
|
||||
-- ["af"] = "@function.outer",
|
||||
-- ["if"] = "@function.inner",
|
||||
-- ["ac"] = "@class.outer",
|
||||
-- ["ic"] = "@class.inner",
|
||||
-- ["ib"] = "@block.inner",
|
||||
-- ["ab"] = "@block.outer",
|
||||
-- ["as"] = { query = "@scope", query_group = "locals", desc = "Select language scope" },
|
||||
-- },
|
||||
-- },
|
||||
-- move = {
|
||||
-- enable = true,
|
||||
-- disable = function(lang, bufnr)
|
||||
-- local mode = vim.fn.mode()
|
||||
-- if mode == "c" then
|
||||
-- return true
|
||||
-- end
|
||||
-- end,
|
||||
-- set_jumps = true,
|
||||
-- goto_next_start = {
|
||||
-- ["]fs"] = "@function.outer",
|
||||
-- ["]bs"] = "@block.outer",
|
||||
-- },
|
||||
-- goto_next_end = {
|
||||
-- ["]fe"] = "@function.outer",
|
||||
-- ["]be"] = "@block.outer",
|
||||
-- },
|
||||
-- goto_previous_start = {
|
||||
-- ["[fs"] = "@function.outer",
|
||||
-- ["[bs"] = "@block.outer",
|
||||
-- },
|
||||
-- goto_previous_end = {
|
||||
-- ["[fe"] = "@function.outer",
|
||||
-- ["[bs"] = "@block.outer",
|
||||
-- },
|
||||
-- },
|
||||
-- },
|
||||
playground = {
|
||||
enable = true,
|
||||
},
|
||||
query_linter = {
|
||||
enable = true,
|
||||
},
|
||||
})
|
||||
end,
|
||||
},
|
||||
}
|
||||
|
53
dots/.config/nvim/lua/plugins/configs/trouble.lua
Normal file
53
dots/.config/nvim/lua/plugins/configs/trouble.lua
Normal file
@ -0,0 +1,53 @@
|
||||
return {
|
||||
{
|
||||
"folke/todo-comments.nvim",
|
||||
event = { "BufReadPre", "BufNewFile" },
|
||||
keys = {
|
||||
{ "<leader>xt", "<cmd>TodoTrouble<cr>", desc = "Trouble: Todo Items" },
|
||||
},
|
||||
cmd = {
|
||||
"TodoTrouble",
|
||||
"TodoTelescope",
|
||||
"TodoQuickFix",
|
||||
"TodoLocList",
|
||||
},
|
||||
dependencies = { "nvim-lua/plenary.nvim" },
|
||||
config = true,
|
||||
},
|
||||
{
|
||||
"folke/trouble.nvim",
|
||||
keys = {
|
||||
{ "<leader>x", desc = "> Trouble" },
|
||||
{ "<leader>lr", "<cmd>TroubleToggle lsp_references<cr>", desc = "LSP: References" },
|
||||
{
|
||||
"<leader>li",
|
||||
"<cmd>TroubleToggle lsp_implementations<cr>",
|
||||
desc = "LSP: Implementation",
|
||||
},
|
||||
{ "<leader>ld", "<cmd>TroubleToggle lsp_definitions<CR>", desc = "LSP: Definition" },
|
||||
{ "<leader>xd", "<cmd>TroubleToggle document_diagnostics<cr>", desc = "Trouble: Document Diagnostics" },
|
||||
{ "<leader>xl", "<cmd>TroubleToggle loclist<cr>", desc = "Trouble: Loclist" },
|
||||
{ "<leader>xq", "<cmd>TroubleToggle quickfix<cr>", desc = "Trouble: Quickfix" },
|
||||
{ "<leader>xt", "<cmd>TodoTrouble<cr>", desc = "Trouble: Todo Items" },
|
||||
},
|
||||
dependencies = { "nvim-tree/nvim-web-devicons" },
|
||||
config = function()
|
||||
require("trouble").setup({
|
||||
auto_close = true,
|
||||
position = "right",
|
||||
})
|
||||
vim.api.nvim_create_autocmd("BufLeave", {
|
||||
pattern = "*Trouble*",
|
||||
callback = function()
|
||||
vim.api.nvim_win_close(0, true)
|
||||
end,
|
||||
})
|
||||
end,
|
||||
cmd = {
|
||||
"Trouble",
|
||||
"TroubleClose",
|
||||
"TroubleToggle",
|
||||
"TroubleRefresh",
|
||||
},
|
||||
},
|
||||
}
|
@ -0,0 +1,9 @@
|
||||
return {
|
||||
{
|
||||
"mg979/vim-visual-multi",
|
||||
event = "VeryLazy",
|
||||
config = function()
|
||||
vim.cmd.VMTheme("codedark")
|
||||
end,
|
||||
},
|
||||
}
|
10
dots/.config/nvim/lua/plugins/configs/vimtex.lua
Normal file
10
dots/.config/nvim/lua/plugins/configs/vimtex.lua
Normal file
@ -0,0 +1,10 @@
|
||||
return {
|
||||
{
|
||||
"lervag/vimtex",
|
||||
ft = "tex",
|
||||
config = function()
|
||||
vim.g.vimtext_view_method = "zathura"
|
||||
vim.g.vimtex_view_general_viewer = "zathura"
|
||||
end,
|
||||
},
|
||||
}
|
11
dots/.config/nvim/lua/plugins/configs/which-key.lua
Normal file
11
dots/.config/nvim/lua/plugins/configs/which-key.lua
Normal file
@ -0,0 +1,11 @@
|
||||
return {
|
||||
{
|
||||
"folke/which-key.nvim",
|
||||
event = "VeryLazy",
|
||||
config = function()
|
||||
local wk = require("which-key")
|
||||
wk.setup()
|
||||
end,
|
||||
opts = {},
|
||||
},
|
||||
}
|
@ -1 +1,50 @@
|
||||
require("plugins.plugins")
|
||||
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
|
||||
if not vim.loop.fs_stat(lazypath) then
|
||||
vim.notify("Installing Lazy plugin manager, please wait...")
|
||||
vim.fn.system({
|
||||
"git",
|
||||
"clone",
|
||||
"--filter=blob:none",
|
||||
"--single-branch",
|
||||
"https://github.com/folke/lazy.nvim.git",
|
||||
lazypath,
|
||||
})
|
||||
end
|
||||
vim.opt.runtimepath:prepend(lazypath)
|
||||
|
||||
local lazy = require("lazy")
|
||||
|
||||
lazy.setup("plugins.configs", {
|
||||
defaults = {
|
||||
version = false,
|
||||
lazy = false,
|
||||
},
|
||||
colorscheme = function()
|
||||
vim.cmd.colorscheme("kanagawa")
|
||||
vim.notify("WTF!")
|
||||
end,
|
||||
checker = {
|
||||
enabled = true,
|
||||
concurrency = 20,
|
||||
notify = false,
|
||||
},
|
||||
lockfile = vim.fn.stdpath("config") .. "/lazy-lock.json",
|
||||
dev = {
|
||||
path = "~/Git/Neovim",
|
||||
},
|
||||
install = {
|
||||
missing = true,
|
||||
colorscheme = { "kanagawa" },
|
||||
},
|
||||
performance = {
|
||||
rtp = {
|
||||
disabled_plugins = {
|
||||
"gzip",
|
||||
"tarPlugin",
|
||||
"tohtml",
|
||||
"tutor",
|
||||
"zipPlugin",
|
||||
},
|
||||
},
|
||||
},
|
||||
})
|
||||
|
@ -1,339 +0,0 @@
|
||||
local loaded = pcall(require, "plenary.async")
|
||||
|
||||
if not loaded then
|
||||
return
|
||||
end
|
||||
|
||||
local wk = require("which-key")
|
||||
|
||||
-- Telescope mappings
|
||||
wk.register({
|
||||
t = {
|
||||
name = "Telescope",
|
||||
},
|
||||
}, { prefix = "<leader>" })
|
||||
vim.keymap.set("n", "<Leader>tw", ":Telescope live_grep<CR>", { silent = true, desc = "Telescope: Grep for Word" })
|
||||
vim.keymap.set("n", "<Leader>tgs", ":Telescope git_status<CR>", { silent = true, desc = "Telescope: Git Status" })
|
||||
vim.keymap.set("n", "<Leader>tgc", ":Telescope git_commits<CR>", { silent = true, desc = "Telescope: Git Commits" })
|
||||
vim.keymap.set("n", "<Leader>tgb", ":Telescope git_branches<CR>", { silent = true, desc = "Telescope: Git Branches" })
|
||||
vim.keymap.set("n", "<Leader>tf", ":Telescope find_files<CR>", { silent = true, desc = "Telescope: Find Files" })
|
||||
vim.keymap.set(
|
||||
"n",
|
||||
"<Leader>td",
|
||||
":Telescope find_directories<CR>",
|
||||
{ silent = true, desc = "Telescope: Find Directories" }
|
||||
)
|
||||
vim.keymap.set("n", "<Leader>tb", ":Telescope buffers<CR>", { silent = true, desc = "Telescope: Buffers" })
|
||||
vim.keymap.set("n", "<Leader>th", ":Telescope help_tags<CR>", { silent = true, desc = "Telescope: Help Tags" })
|
||||
vim.keymap.set("n", "<Leader>to", ":Telescope oldfiles<CR>", { silent = true, desc = "Telescope: Recent Files" })
|
||||
vim.keymap.set(
|
||||
"n",
|
||||
"<leader>tn",
|
||||
":Telescope neoclip default<CR>",
|
||||
{ silent = true, desc = "Telescope: Neoclip Buffer" }
|
||||
)
|
||||
vim.keymap.set("n", "<leader>tr", ":Telescope resume<CR>", { silent = true, desc = "Telescope: Resume" })
|
||||
vim.keymap.set("n", "<leader>tR", ":Telescope registers<CR>", { silent = true, desc = "Telescope: Registers" })
|
||||
vim.keymap.set("n", "<leader>tt", ":Telescope file_browser<CR>", { silent = true, desc = "Telescope: File Tree" })
|
||||
vim.keymap.set("n", "<leader>ts", ":Telescope spell_suggest<CR>", { silent = true, desc = "Telescope: Spell Suggest" })
|
||||
vim.keymap.set("n", "<leader>tl", ":Telescope resume<CR>", { silent = true, desc = "Telescope: Previous State" })
|
||||
vim.keymap.set("n", "<leader>tT", ":TodoTelescope<CR>", { silent = true, desc = "Telescope: Todo Items" })
|
||||
vim.keymap.set("n", "<leader>tk", ":Telescope keymaps<CR>", { silent = true, desc = "Telescope: Keymaps" })
|
||||
vim.keymap.set("n", "<leader>tc", ":Telescope commands<CR>", { silent = true, desc = "Telescope: Commands" })
|
||||
vim.keymap.set("n", "<leader>tu", ":Telescope undo<CR>", { silent = true, desc = "Telescope: Undo History" })
|
||||
|
||||
-- Lsp Mappings
|
||||
wk.register({
|
||||
l = {
|
||||
name = "LSP",
|
||||
},
|
||||
}, { prefix = "<leader>" })
|
||||
vim.keymap.set("n", "<leader>lD", vim.lsp.buf.declaration, { silent = true, desc = "LSP: Declaration" })
|
||||
vim.keymap.set("n", "<leader>ld", "<cmd>TroubleToggle lsp_definitions<CR>", { silent = true, desc = "LSP: Definition" })
|
||||
vim.keymap.set("n", "<leader>k", vim.lsp.buf.hover, { silent = true, desc = "LSP: Hover" })
|
||||
vim.keymap.set("n", "<leader>K", vim.lsp.buf.signature_help, { silent = true, desc = "LSP: Sig Help" })
|
||||
vim.keymap.set(
|
||||
"n",
|
||||
"<leader>li",
|
||||
"<cmd>TroubleToggle lsp_implementations<cr>",
|
||||
{ silent = true, desc = "LSP: Implementation" }
|
||||
)
|
||||
vim.keymap.set(
|
||||
"n",
|
||||
"<leader>la",
|
||||
vim.lsp.buf.add_workspace_folder,
|
||||
{ silent = true, desc = "LSP: Add Workspace Folder" }
|
||||
)
|
||||
vim.keymap.set(
|
||||
"n",
|
||||
"<leader>lx",
|
||||
vim.lsp.buf.remove_workspace_folder,
|
||||
{ silent = true, desc = "LSP: Remove Workspace Folder" }
|
||||
)
|
||||
vim.keymap.set("n", "<leader>ll", function()
|
||||
local output_workspaces = ""
|
||||
for _, workspace in ipairs(vim.lsp.buf.list_workspace_folders()) do
|
||||
output_workspaces = string.format("%s- %s\n", output_workspaces, vim.inspect(workspace):gsub('%"', ""))
|
||||
end
|
||||
vim.notify(output_workspaces:gsub("\n[^\n]*$", ""), "info", { title = "LSP: Workspaces" })
|
||||
end, { silent = true, desc = "LSP: List Workspaces" })
|
||||
vim.keymap.set("n", "<leader>ln", ":IncRename ", { silent = true, desc = "LSP: Rename" })
|
||||
vim.keymap.set("n", "<leader>lc", vim.lsp.buf.code_action, { silent = true, desc = "LSP: Code Action" })
|
||||
vim.keymap.set("n", "<leader>lr", "<cmd>TroubleToggle lsp_references<cr>", { silent = true, desc = "LSP: References" })
|
||||
vim.keymap.set("n", "<leader>lR", ":LspRestart<CR>", { silent = true, desc = "LSP: Restart" })
|
||||
vim.keymap.set("n", "<leader>ls", function()
|
||||
vim.diagnostic.open_float(nil, { focus = true, scope = "cursor" })
|
||||
vim.cmd.vsplit()
|
||||
end, { silent = true, desc = "LSP: Diagnostic Open Float" })
|
||||
vim.keymap.set("n", "<leader>lf", function()
|
||||
vim.lsp.buf.format({ async = true })
|
||||
end, { silent = true, desc = "LSP: Format" })
|
||||
vim.keymap.set("n", "[l", vim.diagnostic.goto_prev, { silent = true, desc = "LSP: Diagnostic Previous" })
|
||||
vim.keymap.set("n", "]l", vim.diagnostic.goto_next, { silent = true, desc = "LSP: Diagnostic Next" })
|
||||
vim.keymap.set(
|
||||
"n",
|
||||
"<leader>lq",
|
||||
":Telescope diagnostics bufnr=0<CR>",
|
||||
{ silent = true, desc = "LSP: Telescope Diagnostics" }
|
||||
)
|
||||
vim.keymap.set("n", "<leader>lt", function()
|
||||
local virtual_lines_enabled = not vim.diagnostic.config().virtual_lines
|
||||
vim.diagnostic.config({ virtual_lines = virtual_lines_enabled, virtual_text = not virtual_lines_enabled })
|
||||
end, {
|
||||
desc = "LSP: Toggle Diagnostic Style",
|
||||
})
|
||||
vim.keymap.set("n", "<leader>lT", function()
|
||||
vim.lsp.inlay_hint(0, nil)
|
||||
end, {
|
||||
desc = "LSP: Toggle Inlay Hints",
|
||||
})
|
||||
|
||||
-- Formatter
|
||||
vim.keymap.set("n", "<leader>nf", ":Neoformat<CR>", { silent = true, desc = "Neoformat" })
|
||||
|
||||
-- DAP Mappings
|
||||
wk.register({
|
||||
d = {
|
||||
name = "DAP",
|
||||
},
|
||||
}, { prefix = "<leader>" })
|
||||
local dap = require("dap")
|
||||
vim.keymap.set("n", "<leader>dc", dap.continue, { silent = true, desc = "DAP: Continue" })
|
||||
vim.keymap.set("n", "<leader>de", dap.terminate, { silent = true, desc = "DAP: Terminate" })
|
||||
vim.keymap.set("n", "<leader>db", dap.toggle_breakpoint, { silent = true, desc = "DAP: Toggle Breakpoint" })
|
||||
vim.keymap.set("n", "<leader>dr", function()
|
||||
dap.set_breakpoint(vim.fn.input("Breakpoint Condition: "))
|
||||
end, { silent = true, desc = "DAP: Set Conditional Breakpoint" })
|
||||
|
||||
vim.keymap.set("n", "<leader>dp", function()
|
||||
dap.set_breakpoint(nil, nil, vim.fn.input("Log point message: "))
|
||||
end, { silent = true, desc = "DAP: Set Log Breakpoint" })
|
||||
vim.keymap.set("n", "<F5>", dap.step_over, { silent = true, desc = "DAP: Step Over" })
|
||||
vim.keymap.set("n", "<F6>", dap.step_into, { silent = true, desc = "DAP: Step Into" })
|
||||
vim.keymap.set("n", "<F7>", dap.step_out, { silent = true, desc = "DAP: Step Out" })
|
||||
vim.keymap.set("n", "<F8>", dap.step_back, { silent = true, desc = "DAP: Step Back" })
|
||||
vim.keymap.set("n", "<leader>dR", dap.run_to_cursor, { silent = true, desc = "DAP: Run to Cursor" })
|
||||
vim.keymap.set("n", "<leader>do", dap.repl.open, { silent = true, desc = "DAP: Open Repl" })
|
||||
vim.keymap.set("n", "<leader>dt", require("dapui").toggle, { silent = true, desc = "DAP: Toggle UI" })
|
||||
vim.keymap.set("n", "<leader>dl", dap.run_last, { silent = true, desc = "DAP: Run Last" })
|
||||
|
||||
-- Comments
|
||||
vim.keymap.set("n", "<leader>/", ":CommentToggle<CR>", { silent = true, desc = "Toggle Comment" })
|
||||
vim.keymap.set("v", "<leader>/", ":'<,'>CommentToggle<CR>", { silent = true, desc = "Toggle Selection Comment" })
|
||||
|
||||
-- Buffer mappings
|
||||
vim.keymap.set("n", "<A-a>", ":bprevious<CR>", { silent = true, desc = "Go to Previous Buffer" })
|
||||
vim.keymap.set("n", "<A-s>", ":bnext<CR>", { silent = true, desc = "Go to Next Buffer" })
|
||||
vim.keymap.set("n", "<A-x>", function()
|
||||
require("bufdelete").bufdelete(0)
|
||||
end, { silent = true, desc = "Close Buffer" })
|
||||
|
||||
-- Vim Notify Mappings
|
||||
vim.keymap.set("n", "<leader>nv", ":Telescope notify<CR>", { silent = true, desc = "Notifications: Search" })
|
||||
vim.keymap.set("n", "<leader>nd", require("notify").dismiss, { silent = true, desc = "Notifications: Dismiss" })
|
||||
|
||||
-- Whichkey Mappings
|
||||
vim.keymap.set("n", "<leader>ww", ":WhichKey<CR>", { silent = true, desc = "Show Keybinds" })
|
||||
|
||||
-- Neogen Mappings
|
||||
wk.register({
|
||||
n = {
|
||||
g = {
|
||||
name = "Neogen",
|
||||
},
|
||||
},
|
||||
}, { prefix = "<leader>" })
|
||||
vim.keymap.set("n", "<leader>ngf", ":Neogen func<CR>", { silent = true, desc = "Neogen: Function Annotation" })
|
||||
vim.keymap.set("n", "<leader>ngc", ":Neogen class<CR>", { silent = true, desc = "Neogen: Class Annotation" })
|
||||
vim.keymap.set("n", "<leader>ngt", ":Neogen type<CR>", { silent = true, desc = "Neogen: Type Annotation" })
|
||||
vim.keymap.set("n", "<leader>ngb", ":Neogen file<CR>", { silent = true, desc = "Neogen: File Annotation" })
|
||||
|
||||
-- Nvim Tree Mappings
|
||||
vim.keymap.set("n", "<leader>nt", ":Neotree show toggle focus<cr>", { silent = true, desc = "Neotree: Toggle" })
|
||||
|
||||
-- Plenary Mappings
|
||||
vim.keymap.set("n", "<leader>pt", "<Plug>PlenaryTestFile", { silent = true, desc = "Plenary: Test File" })
|
||||
wk.register({
|
||||
p = {
|
||||
name = "Plenary",
|
||||
},
|
||||
}, { prefix = "<leader>" })
|
||||
|
||||
-- Neogit Mappings
|
||||
wk.register({
|
||||
g = {
|
||||
name = "Git",
|
||||
},
|
||||
}, { prefix = "<leader>" })
|
||||
vim.keymap.set("n", "<leader>gg", require("neogit").open, { silent = true, desc = "Neogit: Open" })
|
||||
|
||||
-- Gitsigns Mappings
|
||||
vim.keymap.set("n", "]g", "<cmd>Gitsigns next_hunk<CR><CR>", { silent = true, desc = "Gitsigns: Next Hunk" })
|
||||
vim.keymap.set("n", "[g", "<cmd>Gitsigns prev_hunk<CR><CR>", { silent = true, desc = "Gitsigns: Prev Hunk" })
|
||||
vim.keymap.set("n", "<leader>gs", "<cmd>Gitsigns stage_hunk<CR>", { silent = true, desc = "Gitsigns: Stage Hunk" })
|
||||
vim.keymap.set("n", "<leader>gr", "<cmd>Gitsigns reset_hunk<CR>", { silent = true, desc = "Gitsigns: Reset Hunk" })
|
||||
vim.keymap.set(
|
||||
"n",
|
||||
"<leader>gu",
|
||||
"<cmd>Gitsigns undo_stage_hunk<CR>",
|
||||
{ silent = true, desc = "Gitsigns: Unstage Hunk" }
|
||||
)
|
||||
|
||||
-- Diffview Mappings
|
||||
vim.keymap.set("n", "<leader>gd", "<cmd>DiffviewOpen<CR>", { silent = true, desc = "Diff View: Open" })
|
||||
vim.keymap.set("n", "<leader>gh", "<cmd>DiffviewFileHistory<CR>", { silent = true, desc = "Diff View: File History" })
|
||||
|
||||
-- Hop Mappings
|
||||
local hop = require("hop")
|
||||
|
||||
vim.keymap.set("", "f", function()
|
||||
hop.hint_char1({
|
||||
current_line_only = false,
|
||||
})
|
||||
end, { silent = true, desc = "Hop: Character" })
|
||||
|
||||
-- Hop Bindings
|
||||
vim.keymap.set("", ";l", "<cmd>HopLineStart<CR>", { silent = true, desc = "Hop: Line Start" })
|
||||
vim.keymap.set("", ";s", "<cmd>HopPattern<CR>", { silent = true, desc = "Hop: Pattern" })
|
||||
vim.keymap.set("", ";;", "<cmd>HopWord<CR>", { silent = true, desc = "Hop: Word" })
|
||||
vim.keymap.set("", ";a", "<cmd>HopAnywhere<CR>", { silent = true, desc = "Hop: Anywhere" })
|
||||
vim.keymap.set("", ";v", "<cmd>HopVertical<CR>", { silent = true, desc = "Hop Vertical" })
|
||||
|
||||
-- Term/Open bindings
|
||||
vim.keymap.set("n", "<leader><leader>", "<cmd>ToggleTerm<CR>", { silent = true, desc = "Toggle Terminal" })
|
||||
|
||||
-- Overseer mappings
|
||||
wk.register({
|
||||
o = {
|
||||
name = "Overseer",
|
||||
},
|
||||
}, { prefix = "<leader>" })
|
||||
vim.keymap.set("n", "<leader>or", vim.cmd.OverseerRun, { silent = true, desc = "Overseer: Run" })
|
||||
vim.keymap.set("n", "<leader>ot", vim.cmd.OverseerToggle, { silent = true, desc = "Overseer: Toggle" })
|
||||
|
||||
vim.keymap.set("v", "<leader>sc", ":'<,'>Silicon<CR>", { silent = true, desc = "Silicon: Copy" })
|
||||
|
||||
-- Trouble mappings
|
||||
-- NOTE: there is a references mapping placed in the LSP bindings region
|
||||
wk.register({
|
||||
x = {
|
||||
name = "Trouble",
|
||||
},
|
||||
}, { prefix = "<leader>" })
|
||||
vim.keymap.set("n", "<leader>xx", "<cmd>TroubleToggle<cr>", { silent = true, desc = "Trouble: Toggle" })
|
||||
vim.keymap.set(
|
||||
"n",
|
||||
"<leader>xw",
|
||||
"<cmd>TroubleToggle workspace_diagnostics<cr>",
|
||||
{ silent = true, desc = "Trouble: Workspace Diagnostics" }
|
||||
)
|
||||
vim.keymap.set(
|
||||
"n",
|
||||
"<leader>xd",
|
||||
"<cmd>TroubleToggle document_diagnostics<cr>",
|
||||
{ silent = true, desc = "Trouble: Document Diagnostics" }
|
||||
)
|
||||
vim.keymap.set("n", "<leader>xl", "<cmd>TroubleToggle loclist<cr>", { silent = true, desc = "Trouble: Loclist" })
|
||||
vim.keymap.set("n", "<leader>xq", "<cmd>TroubleToggle quickfix<cr>", { silent = true, desc = "Trouble: Quickfix" })
|
||||
vim.keymap.set("n", "<leader>xt", "<cmd>TodoTrouble<cr>", { silent = true, desc = "Trouble: Todo Items" })
|
||||
|
||||
-- Autolist mappings
|
||||
local autolist_group = vim.api.nvim_create_augroup("Autolist", {})
|
||||
-- NOTE: Why is this wrapped in an autocmd you ask? Because we want to bind these for buffer local *only*. We do not
|
||||
-- want to pollute the global keymaps with autolist as autolist only supports certain filetypes.
|
||||
vim.api.nvim_create_autocmd("filetype", {
|
||||
group = autolist_group,
|
||||
pattern = {
|
||||
"markdown",
|
||||
"text",
|
||||
"tex",
|
||||
"plaintex",
|
||||
"norg",
|
||||
},
|
||||
callback = function()
|
||||
if pcall(require, "autolist") then
|
||||
vim.keymap.set(
|
||||
"i",
|
||||
"<tab>",
|
||||
"<cmd>AutolistTab<cr>",
|
||||
{ silent = true, desc = "Autolist: Tab", buffer = true }
|
||||
)
|
||||
vim.keymap.set(
|
||||
"i",
|
||||
"<s-tab>",
|
||||
"<cmd>AutolistShiftTab<cr>",
|
||||
{ silent = true, desc = "Autolist: Shift Tab", buffer = true }
|
||||
)
|
||||
vim.keymap.set(
|
||||
"i",
|
||||
"<CR>",
|
||||
"<CR><cmd>AutolistNewBullet<cr>",
|
||||
{ silent = true, desc = "Autolist: New Bullet", buffer = true }
|
||||
)
|
||||
vim.keymap.set(
|
||||
"n",
|
||||
"o",
|
||||
"o<cmd>AutolistNewBullet<cr>",
|
||||
{ silent = true, desc = "Autolist: New Bullet", buffer = true }
|
||||
)
|
||||
vim.keymap.set(
|
||||
"n",
|
||||
"O",
|
||||
"O<cmd>AutolistNewBulletBefore<cr>",
|
||||
{ silent = true, desc = "Autolist: New Bullet Before", buffer = true }
|
||||
)
|
||||
vim.keymap.set(
|
||||
"n",
|
||||
"<C-CR>",
|
||||
"<cmd>AutolistToggleCheckbox<cr>",
|
||||
{ silent = true, desc = "Autolist: Toggle Checkbox", buffer = true }
|
||||
)
|
||||
|
||||
-- functions to recalculate list on edit
|
||||
vim.keymap.set(
|
||||
"n",
|
||||
">>",
|
||||
">><cmd>AutolistRecalculate<cr>",
|
||||
{ silent = true, desc = "Autolist: Indent", buffer = true }
|
||||
)
|
||||
vim.keymap.set(
|
||||
"n",
|
||||
"<<",
|
||||
"<<<cmd>AutolistRecalculate<cr>",
|
||||
{ silent = true, desc = "Autolist: Dedent", buffer = true }
|
||||
)
|
||||
vim.keymap.set(
|
||||
"n",
|
||||
"dd",
|
||||
"dd<cmd>AutolistRecalculate<cr>",
|
||||
{ silent = true, desc = "Autolist: Delete", buffer = true }
|
||||
)
|
||||
vim.keymap.set(
|
||||
"v",
|
||||
"d",
|
||||
"d<cmd>AutolistRecalculate<cr>",
|
||||
{ silent = true, desc = "Autolist: Delete", buffer = true }
|
||||
)
|
||||
end
|
||||
end,
|
||||
})
|
@ -1,858 +0,0 @@
|
||||
---@diagnostic disable: missing-fields
|
||||
-- Packer strap, install packer automatically and configure plugins
|
||||
-- See the end of this file for how the variable `packer_strap` gets used
|
||||
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
|
||||
if not vim.loop.fs_stat(lazypath) then
|
||||
vim.notify("Installing Lazy plugin manager, please wait...")
|
||||
vim.fn.system({
|
||||
"git",
|
||||
"clone",
|
||||
"--filter=blob:none",
|
||||
"--single-branch",
|
||||
"https://github.com/folke/lazy.nvim.git",
|
||||
lazypath,
|
||||
})
|
||||
end
|
||||
vim.opt.runtimepath:prepend(lazypath)
|
||||
|
||||
local lazy = require("lazy")
|
||||
|
||||
lazy.setup({
|
||||
-- Lazy itself
|
||||
{ "folke/lazy.nvim" },
|
||||
|
||||
-- Commonly used library
|
||||
{
|
||||
"nvim-lua/plenary.nvim",
|
||||
lazy = true,
|
||||
},
|
||||
|
||||
-- Much nicer ui, integrates cmdheight = 0 wella
|
||||
{
|
||||
"folke/noice.nvim",
|
||||
priorty = 900,
|
||||
config = function()
|
||||
-- NOTE: Might be redundant, to check later
|
||||
require("plugins.configs.nvim-notify")
|
||||
require("plugins.configs.noice")
|
||||
end,
|
||||
dependencies = {
|
||||
-- if you lazy-load any plugin below, make sure to add proper `module="..."` entries
|
||||
"MunifTanjim/nui.nvim",
|
||||
"rcarriga/nvim-notify",
|
||||
"hrsh7th/nvim-cmp",
|
||||
},
|
||||
},
|
||||
|
||||
-- Color schemes
|
||||
{
|
||||
"rebelot/kanagawa.nvim",
|
||||
build = function()
|
||||
require("plugins.configs.kanagawa")
|
||||
vim.cmd.KanagawaCompile()
|
||||
end,
|
||||
config = function()
|
||||
require("plugins.configs.kanagawa")
|
||||
vim.cmd.colorscheme("kanagawa")
|
||||
vim.api.nvim_create_autocmd("BufWritePost", {
|
||||
pattern = "lua/plugins/configs/kanagawa.lua",
|
||||
callback = function()
|
||||
vim.schedule(vim.cmd.KanagawaCompile)
|
||||
end,
|
||||
})
|
||||
end,
|
||||
},
|
||||
|
||||
-- Icons for folders, files, etc.
|
||||
{
|
||||
"nvim-tree/nvim-web-devicons",
|
||||
lazy = true,
|
||||
},
|
||||
|
||||
-- Statusline.
|
||||
{
|
||||
"nvim-lualine/lualine.nvim",
|
||||
event = "VeryLazy",
|
||||
config = function()
|
||||
require("plugins.configs.statusline")
|
||||
end,
|
||||
},
|
||||
|
||||
-- Indentation Guides
|
||||
{
|
||||
"lukas-reineke/indent-blankline.nvim",
|
||||
event = "VeryLazy",
|
||||
config = function()
|
||||
require("plugins.configs.indent-blankline")
|
||||
end,
|
||||
},
|
||||
|
||||
-- Treesitter
|
||||
{
|
||||
"nvim-treesitter/nvim-treesitter",
|
||||
build = ":TSUpdate",
|
||||
dependencies = {
|
||||
"nvim-treesitter/nvim-treesitter-context",
|
||||
"nvim-treesitter/playground",
|
||||
"windwp/nvim-ts-autotag",
|
||||
"nvim-treesitter/nvim-treesitter-textobjects",
|
||||
{ "pfeiferj/nvim-hurl", config = true },
|
||||
},
|
||||
config = function()
|
||||
require("plugins.configs.treesitter")
|
||||
end,
|
||||
},
|
||||
|
||||
-- Rainbow braces/brackets/etc
|
||||
{
|
||||
url = "https://gitlab.com/HiPhish/rainbow-delimiters.nvim",
|
||||
config = function()
|
||||
local rainbow_delimiters = require("rainbow-delimiters")
|
||||
vim.g.rainbow_delimiters = {
|
||||
strategy = {
|
||||
on_attach = function()
|
||||
if vim.fn.line("$") > 10000 then
|
||||
return nil
|
||||
elseif vim.fn.line("$") > 1000 then
|
||||
return rainbow_delimiters.strategy["global"]
|
||||
end
|
||||
return rainbow_delimiters.strategy["local"]
|
||||
end,
|
||||
},
|
||||
query = {
|
||||
[""] = "rainbow-delimiters",
|
||||
lua = "rainbow-blocks",
|
||||
latex = "rainbow-blocks",
|
||||
html = "rainbow-blocks",
|
||||
javascript = "rainbow-delimiters-react",
|
||||
tsx = "rainbow-parens",
|
||||
verilog = "rainbow-blocks",
|
||||
},
|
||||
highlight = {
|
||||
"RainbowDelimiterRed",
|
||||
"RainbowDelimiterYellow",
|
||||
"RainbowDelimiterBlue",
|
||||
"RainbowDelimiterOrange",
|
||||
"RainbowDelimiterGreen",
|
||||
"RainbowDelimiterViolet",
|
||||
"RainbowDelimiterCyan",
|
||||
},
|
||||
}
|
||||
end,
|
||||
},
|
||||
|
||||
-- Dashboard when no file is given to nvim
|
||||
{
|
||||
"goolord/alpha-nvim",
|
||||
dependencies = { "nvim-tree/nvim-web-devicons" },
|
||||
config = function()
|
||||
require("plugins.configs.alpha")
|
||||
end,
|
||||
},
|
||||
|
||||
-- Telescope
|
||||
{
|
||||
"nvim-telescope/telescope.nvim",
|
||||
cmd = {
|
||||
"Telescope",
|
||||
},
|
||||
dependencies = {
|
||||
"nvim-telescope/telescope-media-files.nvim",
|
||||
"nvim-telescope/telescope-file-browser.nvim",
|
||||
"artart222/telescope_find_directories",
|
||||
"nvim-telescope/telescope-ui-select.nvim",
|
||||
"debugloop/telescope-undo.nvim",
|
||||
{ "nvim-telescope/telescope-smart-history.nvim", dependencies = "tami5/sqlite.lua" },
|
||||
{ "nvim-telescope/telescope-fzf-native.nvim", build = "make" },
|
||||
},
|
||||
config = function()
|
||||
require("plugins.configs.telescope-nvim")
|
||||
end,
|
||||
},
|
||||
|
||||
{
|
||||
"stevearc/dressing.nvim",
|
||||
event = "VeryLazy",
|
||||
},
|
||||
|
||||
-- File Tree
|
||||
{
|
||||
"nvim-neo-tree/neo-tree.nvim",
|
||||
dependencies = {
|
||||
"nvim-tree/nvim-web-devicons",
|
||||
"nvim-lua/plenary.nvim",
|
||||
"MunifTanjim/nui.nvim",
|
||||
},
|
||||
config = function()
|
||||
require("plugins.configs.neotree")
|
||||
end,
|
||||
cmd = "Neotree",
|
||||
},
|
||||
|
||||
-- Lspconfig
|
||||
{
|
||||
"neovim/nvim-lspconfig",
|
||||
dependencies = {
|
||||
"folke/neodev.nvim",
|
||||
"Decodetalkers/csharpls-extended-lsp.nvim",
|
||||
"williamboman/mason-lspconfig.nvim",
|
||||
"williamboman/mason.nvim",
|
||||
"simrat39/rust-tools.nvim",
|
||||
"Hoffs/omnisharp-extended-lsp.nvim",
|
||||
"b0o/schemastore.nvim",
|
||||
|
||||
{
|
||||
"pmizio/typescript-tools.nvim",
|
||||
dependencies = { "nvim-lua/plenary.nvim" },
|
||||
},
|
||||
},
|
||||
config = function()
|
||||
require("mason").setup({})
|
||||
require("plugins.configs.lsp")
|
||||
end,
|
||||
},
|
||||
|
||||
-- Show code actions
|
||||
{
|
||||
"kosayoda/nvim-lightbulb",
|
||||
dependencies = {
|
||||
"antoinemadec/FixCursorHold.nvim",
|
||||
},
|
||||
config = function()
|
||||
local text_icon = ""
|
||||
local nvim_lightbulb = require("nvim-lightbulb")
|
||||
nvim_lightbulb.setup({
|
||||
sign = {
|
||||
priority = 9,
|
||||
text = text_icon,
|
||||
},
|
||||
})
|
||||
vim.fn.sign_define(
|
||||
"LightBulbSign",
|
||||
{ text = text_icon, numhl = "DiagnosticSignHint", texthl = "DiagnosticSignHint", priority = 9 }
|
||||
)
|
||||
vim.api.nvim_create_autocmd("CursorHold,CursorHoldI", {
|
||||
callback = nvim_lightbulb.update_lightbulb,
|
||||
})
|
||||
end,
|
||||
},
|
||||
|
||||
-- Incremental rename, easier to view renames
|
||||
{
|
||||
"smjonas/inc-rename.nvim",
|
||||
event = "VeryLazy",
|
||||
opts = {},
|
||||
},
|
||||
|
||||
-- Better LSP Virtual Text Lines
|
||||
{
|
||||
url = "https://git.sr.ht/~whynothugo/lsp_lines.nvim",
|
||||
event = "VeryLazy",
|
||||
opts = {},
|
||||
},
|
||||
|
||||
-- Lsp From Null LS
|
||||
{
|
||||
"jose-elias-alvarez/null-ls.nvim",
|
||||
event = "VeryLazy",
|
||||
config = function()
|
||||
require("plugins.configs.null_ls")
|
||||
end,
|
||||
},
|
||||
|
||||
-- Autopairs
|
||||
{
|
||||
"windwp/nvim-autopairs",
|
||||
event = "VeryLazy",
|
||||
opts = {},
|
||||
},
|
||||
|
||||
-- Code completion
|
||||
{
|
||||
"hrsh7th/nvim-cmp",
|
||||
event = "VeryLazy",
|
||||
dependencies = {
|
||||
"hrsh7th/cmp-nvim-lsp",
|
||||
"hrsh7th/cmp-cmdline",
|
||||
"hrsh7th/cmp-emoji",
|
||||
"hrsh7th/cmp-nvim-lsp-document-symbol",
|
||||
"hrsh7th/cmp-calc",
|
||||
"davidsierradz/cmp-conventionalcommits",
|
||||
"tamago324/cmp-zsh",
|
||||
"dmitmel/cmp-cmdline-history",
|
||||
"David-Kunz/cmp-npm",
|
||||
"lukas-reineke/cmp-rg",
|
||||
"onsails/lspkind.nvim",
|
||||
"f3fora/cmp-spell",
|
||||
"FelipeLema/cmp-async-path",
|
||||
{
|
||||
"petertriho/cmp-git",
|
||||
dependencies = { "nvim-lua/plenary.nvim" },
|
||||
opts = { filetypes = { "*" } },
|
||||
},
|
||||
-- Snippets
|
||||
{
|
||||
"L3MON4D3/LuaSnip",
|
||||
build = "make install_jsregexp",
|
||||
event = "VeryLazy",
|
||||
dependencies = {
|
||||
"rafamadriz/friendly-snippets",
|
||||
"saadparwaiz1/cmp_luasnip",
|
||||
},
|
||||
},
|
||||
},
|
||||
config = function()
|
||||
require("plugins.configs._cmp")
|
||||
end,
|
||||
},
|
||||
|
||||
{
|
||||
"tzachar/cmp-fuzzy-buffer",
|
||||
event = "VeryLazy",
|
||||
dependencies = { "hrsh7th/nvim-cmp", "tzachar/fuzzy.nvim" },
|
||||
},
|
||||
{
|
||||
"saecki/crates.nvim",
|
||||
dependencies = { { "nvim-lua/plenary.nvim" } },
|
||||
ft = "toml",
|
||||
opts = {},
|
||||
},
|
||||
|
||||
-- DAP, debugger
|
||||
{
|
||||
"mfussenegger/nvim-dap",
|
||||
event = "VeryLazy",
|
||||
config = function()
|
||||
require("dap.ext.vscode").load_launchjs()
|
||||
require("plugins.configs._dap")
|
||||
end,
|
||||
},
|
||||
|
||||
-- Python debugger, dapinstall does not play nice with debugpy
|
||||
{
|
||||
"mfussenegger/nvim-dap-python",
|
||||
event = "VeryLazy",
|
||||
config = function()
|
||||
require("plugins.configs.python-dap")
|
||||
end,
|
||||
},
|
||||
|
||||
-- Virtual Text for DAP
|
||||
{
|
||||
"theHamsta/nvim-dap-virtual-text",
|
||||
event = "VeryLazy",
|
||||
opts = {},
|
||||
},
|
||||
|
||||
-- Fancy ui for dap
|
||||
{
|
||||
"rcarriga/nvim-dap-ui",
|
||||
event = "VeryLazy",
|
||||
config = function()
|
||||
require("plugins.configs.dap-ui")
|
||||
end,
|
||||
},
|
||||
|
||||
-- Code formatting
|
||||
{
|
||||
"sbdchd/neoformat",
|
||||
cmd = "Neoformat",
|
||||
config = function()
|
||||
require("plugins.configs.neoformat")
|
||||
end,
|
||||
},
|
||||
|
||||
{
|
||||
"luukvbaal/statuscol.nvim",
|
||||
event = "VeryLazy",
|
||||
config = function()
|
||||
local builtin = require("statuscol.builtin")
|
||||
require("statuscol").setup({
|
||||
foldfunc = "builtin",
|
||||
setopt = true,
|
||||
relculright = false,
|
||||
segments = {
|
||||
{ text = { "%s" }, click = "v:lua.ScSa" },
|
||||
{ text = { builtin.lnumfunc }, click = "v:lua.ScLa" },
|
||||
{ text = { " ", builtin.foldfunc, " " }, click = "v:lua.ScFa" },
|
||||
},
|
||||
})
|
||||
end,
|
||||
},
|
||||
|
||||
{
|
||||
"kevinhwang91/nvim-ufo",
|
||||
dependencies = {
|
||||
"kevinhwang91/promise-async",
|
||||
},
|
||||
event = "VeryLazy",
|
||||
config = function()
|
||||
require("plugins.configs.nvim-ufo")
|
||||
end,
|
||||
},
|
||||
|
||||
-- Git signs
|
||||
{
|
||||
"lewis6991/gitsigns.nvim",
|
||||
event = "VeryLazy",
|
||||
opts = {
|
||||
current_line_blame = true,
|
||||
current_line_blame_opts = {
|
||||
delay = 0,
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
-- Highlight certain comments, TODO, BUG, etc.
|
||||
{
|
||||
"folke/todo-comments.nvim",
|
||||
cmd = {
|
||||
"TodoTrouble",
|
||||
},
|
||||
opts = {},
|
||||
},
|
||||
|
||||
-- Show possible key bindings during typing
|
||||
{
|
||||
"folke/which-key.nvim",
|
||||
lazy = true,
|
||||
opts = {},
|
||||
},
|
||||
|
||||
-- Create full path if not existing on write
|
||||
{
|
||||
"jghauser/mkdir.nvim",
|
||||
},
|
||||
|
||||
-- Text commenting
|
||||
{
|
||||
"terrortylor/nvim-comment",
|
||||
event = "VeryLazy",
|
||||
cmd = "CommentToggle",
|
||||
config = function()
|
||||
require("nvim_comment").setup()
|
||||
end,
|
||||
},
|
||||
|
||||
-- Move selections with alt+movement key
|
||||
{
|
||||
"matze/vim-move",
|
||||
event = "VeryLazy",
|
||||
},
|
||||
|
||||
-- Register support in telescope with persistent save
|
||||
{
|
||||
"AckslD/nvim-neoclip.lua",
|
||||
event = "VeryLazy",
|
||||
dependencies = {
|
||||
{ "tami5/sqlite.lua" },
|
||||
{ "nvim-telescope/telescope.nvim" },
|
||||
},
|
||||
opts = {
|
||||
enable_persistent_history = true,
|
||||
},
|
||||
},
|
||||
|
||||
-- Markdown Previewer
|
||||
{
|
||||
"iamcco/markdown-preview.nvim",
|
||||
build = "cd app && npm install",
|
||||
ft = { "markdown" },
|
||||
},
|
||||
|
||||
-- Better Git integration
|
||||
{
|
||||
"NeogitOrg/neogit",
|
||||
dev = true,
|
||||
lazy = true,
|
||||
config = function()
|
||||
require("plugins.configs.neogit")
|
||||
end,
|
||||
dependencies = {
|
||||
{
|
||||
"sindrets/diffview.nvim",
|
||||
opts = {
|
||||
enhanced_diff_hl = true,
|
||||
},
|
||||
},
|
||||
"nvim-lua/plenary.nvim",
|
||||
"nvim-telescope/telescope.nvim",
|
||||
},
|
||||
},
|
||||
|
||||
{
|
||||
"tpope/vim-fugitive",
|
||||
event = "VeryLazy",
|
||||
},
|
||||
|
||||
-- Better search display
|
||||
{
|
||||
"kevinhwang91/nvim-hlslens",
|
||||
event = "VeryLazy",
|
||||
opts = {},
|
||||
},
|
||||
|
||||
-- Log Syntax Highlighting
|
||||
{
|
||||
"MTDL9/vim-log-highlighting",
|
||||
event = "VeryLazy",
|
||||
ft = "log",
|
||||
},
|
||||
|
||||
-- Lots of small modules pulled into
|
||||
-- one git repository
|
||||
{
|
||||
"echasnovski/mini.nvim",
|
||||
event = "VeryLazy",
|
||||
config = function()
|
||||
require("mini.align").setup({})
|
||||
require("mini.cursorword").setup({})
|
||||
end,
|
||||
},
|
||||
|
||||
-- Smoother Scrolling
|
||||
{
|
||||
"karb94/neoscroll.nvim",
|
||||
event = "VeryLazy",
|
||||
opts = {
|
||||
easing_function = "circular",
|
||||
},
|
||||
},
|
||||
|
||||
-- Generate function/class/etc annotations
|
||||
{
|
||||
"danymat/neogen",
|
||||
cmd = {
|
||||
"Neogen",
|
||||
},
|
||||
dependencies = "nvim-treesitter/nvim-treesitter",
|
||||
opts = {
|
||||
snippet_engine = "luasnip",
|
||||
languages = {
|
||||
cs = {
|
||||
template = {
|
||||
annotation_convention = "xmldoc",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
-- Multiple cursor/multiple visual selection support
|
||||
{
|
||||
"mg979/vim-visual-multi",
|
||||
event = "VeryLazy",
|
||||
config = function()
|
||||
vim.cmd.VMTheme("codedark")
|
||||
end,
|
||||
},
|
||||
|
||||
-- Maintain last cursor position in files
|
||||
{
|
||||
"ethanholz/nvim-lastplace",
|
||||
opts = {
|
||||
lastplace_ignore_buftype = { "quickfix", "nofile", "help" },
|
||||
lastplace_ignore_filetype = { "gitcommit", "gitrebase", "svn", "hgcommit", "fugitive" },
|
||||
lastplace_open_folds = true,
|
||||
},
|
||||
},
|
||||
|
||||
-- More codeactions
|
||||
{
|
||||
"ThePrimeagen/refactoring.nvim",
|
||||
event = "VeryLazy",
|
||||
dependencies = {
|
||||
{ "nvim-lua/plenary.nvim" },
|
||||
{ "nvim-treesitter/nvim-treesitter" },
|
||||
},
|
||||
},
|
||||
|
||||
-- Http Request Support
|
||||
{
|
||||
"rest-nvim/rest.nvim",
|
||||
dependencies = {
|
||||
"nvim-lua/plenary.nvim",
|
||||
},
|
||||
ft = "http",
|
||||
opts = {
|
||||
skip_ssl_verification = true,
|
||||
},
|
||||
},
|
||||
|
||||
-- Allows repeating actions and more
|
||||
{
|
||||
"anuvyklack/hydra.nvim",
|
||||
event = "VeryLazy",
|
||||
dependencies = {
|
||||
"anuvyklack/keymap-layer.nvim",
|
||||
"lewis6991/gitsigns.nvim",
|
||||
"jbyuki/venn.nvim",
|
||||
"folke/which-key.nvim",
|
||||
},
|
||||
config = function()
|
||||
require("plugins.configs.hydra")
|
||||
end,
|
||||
},
|
||||
|
||||
-- Faster motions
|
||||
{
|
||||
"phaazon/hop.nvim",
|
||||
cmd = {
|
||||
"HopLineStart",
|
||||
"HopPattern",
|
||||
"HopWord",
|
||||
"HopAnywhere",
|
||||
"HopVertical",
|
||||
},
|
||||
opts = {
|
||||
keys = "etovxqpdygfblzhckisuran",
|
||||
},
|
||||
},
|
||||
|
||||
-- Surround actions
|
||||
{
|
||||
"kylechui/nvim-surround",
|
||||
event = "VeryLazy",
|
||||
opts = {},
|
||||
},
|
||||
|
||||
-- Better list continuation
|
||||
{
|
||||
"gaoDean/autolist.nvim",
|
||||
ft = {
|
||||
"markdown",
|
||||
"text",
|
||||
"tex",
|
||||
"plaintex",
|
||||
"norg",
|
||||
},
|
||||
opts = {},
|
||||
},
|
||||
|
||||
-- Tint inactive windows
|
||||
{
|
||||
"levouh/tint.nvim",
|
||||
event = "VeryLazy",
|
||||
opts = {
|
||||
highlight_ignore_patterns = {
|
||||
"WinSeparator",
|
||||
},
|
||||
window_ignore_function = function(winid)
|
||||
local bufid = vim.api.nvim_win_get_buf(winid)
|
||||
|
||||
local ignoredFiletypes = { "DiffviewFiles", "DiffviewFileHistory", "neo-tree" }
|
||||
local ignoredBuftypes = { "terminal" }
|
||||
|
||||
local isDiff = vim.api.nvim_win_get_option(winid, "diff")
|
||||
local isFloating = vim.api.nvim_win_get_config(winid).relative ~= ""
|
||||
local isIgnoredBuftype =
|
||||
vim.tbl_contains(ignoredBuftypes, vim.api.nvim_buf_get_option(bufid, "buftype"))
|
||||
local isIgnoredFiletype =
|
||||
vim.tbl_contains(ignoredFiletypes, vim.api.nvim_buf_get_option(bufid, "filetype"))
|
||||
|
||||
return isDiff or isFloating or isIgnoredBuftype or isIgnoredFiletype
|
||||
end,
|
||||
tint = -30,
|
||||
saturation = 0.8,
|
||||
},
|
||||
},
|
||||
|
||||
-- Highlight argument definitions and usages
|
||||
{
|
||||
"m-demare/hlargs.nvim",
|
||||
event = "VeryLazy",
|
||||
dependencies = { "nvim-treesitter/nvim-treesitter" },
|
||||
opts = {},
|
||||
},
|
||||
|
||||
-- Vim Latex Support
|
||||
{
|
||||
"lervag/vimtex",
|
||||
ft = "tex",
|
||||
config = function()
|
||||
vim.g.vimtext_view_method = "zathura"
|
||||
vim.g.vimtex_view_general_viewer = "zathura"
|
||||
end,
|
||||
},
|
||||
|
||||
{
|
||||
"akinsho/toggleterm.nvim",
|
||||
opts = {
|
||||
start_in_insert = false,
|
||||
direction = "float",
|
||||
autochdir = true,
|
||||
winbar = {
|
||||
enable = true,
|
||||
name_formatter = function(term) -- term: Terminal
|
||||
return term.name
|
||||
end,
|
||||
},
|
||||
},
|
||||
cmd = {
|
||||
"ToggleTerm",
|
||||
"ToggleTermSetName",
|
||||
"ToggleTermToggleAll",
|
||||
"ToggleTermSendCurrentLine",
|
||||
"ToggleTermSendVisualLines",
|
||||
"ToggleTermSendVisualSelection",
|
||||
},
|
||||
},
|
||||
|
||||
-- Take a screenshot of code selected
|
||||
{
|
||||
"krivahtoo/silicon.nvim",
|
||||
build = "./install.sh build",
|
||||
dependencies = {
|
||||
"nvim-tree/nvim-web-devicons",
|
||||
},
|
||||
cmd = {
|
||||
"Silicon",
|
||||
},
|
||||
opts = {
|
||||
font = "FiraCode Nerd Font=20",
|
||||
theme = "Monokai Extended",
|
||||
background = "#87F",
|
||||
pad_vert = 60,
|
||||
pad_horiz = 40,
|
||||
line_number = true,
|
||||
gobble = true,
|
||||
window_title = function()
|
||||
local devicons = require("nvim-web-devicons")
|
||||
local icon = devicons.get_icon_by_filetype(vim.bo.filetype)
|
||||
return icon .. " " .. vim.fn.fnamemodify(vim.fn.bufname(vim.fn.bufnr()), ":~:.")
|
||||
end,
|
||||
},
|
||||
},
|
||||
|
||||
-- Nice sidebar cursor goodies
|
||||
{
|
||||
"gen740/SmoothCursor.nvim",
|
||||
event = "VeryLazy",
|
||||
opts = {
|
||||
priority = 8,
|
||||
fancy = {
|
||||
enable = true,
|
||||
head = { cursor = "⯈", texthl = "SmoothCursorCursor", linehl = nil },
|
||||
body = {
|
||||
{ cursor = "", texthl = "SmoothCursorTrailBig1" },
|
||||
{ cursor = "", texthl = "SmoothCursorTrailBig2" },
|
||||
{ cursor = "", texthl = "SmoothCursorTrailMedium" },
|
||||
{ cursor = "", texthl = "SmoothCursorTrailMedium" },
|
||||
{ cursor = "•", texthl = "SmoothCursorTrailSmall" },
|
||||
{ cursor = ".", texthl = "SmoothCursorTrailXSmall" },
|
||||
{ cursor = ".", texthl = "SmoothCursorTrailXSmall" },
|
||||
},
|
||||
},
|
||||
disabled_filetypes = { "NeogitNotification" },
|
||||
},
|
||||
},
|
||||
|
||||
-- Color Picker
|
||||
{
|
||||
"uga-rosa/ccc.nvim",
|
||||
config = function()
|
||||
require("plugins.configs.ccc")
|
||||
end,
|
||||
},
|
||||
|
||||
-- Task runner & job management
|
||||
{
|
||||
"stevearc/overseer.nvim",
|
||||
event = "VeryLazy",
|
||||
opts = {},
|
||||
},
|
||||
|
||||
-- Better buffer deletion
|
||||
{
|
||||
"famiu/bufdelete.nvim",
|
||||
lazy = true,
|
||||
},
|
||||
|
||||
-- Convert numbers between binary, decimal, & hex
|
||||
{
|
||||
"skosulor/nibbler",
|
||||
cmd = {
|
||||
"NibblerToBin",
|
||||
"NibblerToHex",
|
||||
"NibblerToDec",
|
||||
"NibblerToCArray",
|
||||
"NibblerHexStringToCArray",
|
||||
"NibblerToggle",
|
||||
},
|
||||
opts = {
|
||||
display_enabled = true,
|
||||
},
|
||||
},
|
||||
|
||||
-- Preview Norm commands, global, macros
|
||||
{
|
||||
"smjonas/live-command.nvim",
|
||||
event = "VeryLazy",
|
||||
config = function()
|
||||
require("live-command").setup({
|
||||
commands = {
|
||||
Norm = { cmd = "norm" },
|
||||
Reg = {
|
||||
cmd = "norm",
|
||||
-- This will transform ":5Reg a" into ":norm 5@a"
|
||||
args = function(opts)
|
||||
return (opts.count == -1 and "" or opts.count) .. "@" .. opts.args
|
||||
end,
|
||||
range = "",
|
||||
},
|
||||
},
|
||||
})
|
||||
end,
|
||||
},
|
||||
|
||||
-- Better listing for diags, refs, quickfix, locs, etc.
|
||||
{
|
||||
"folke/trouble.nvim",
|
||||
dependencies = { "nvim-tree/nvim-web-devicons" },
|
||||
config = function()
|
||||
require("trouble").setup({
|
||||
auto_close = true,
|
||||
position = "right",
|
||||
})
|
||||
vim.api.nvim_create_autocmd("BufLeave", {
|
||||
pattern = "*Trouble*",
|
||||
callback = function()
|
||||
vim.api.nvim_win_close(0, true)
|
||||
end,
|
||||
})
|
||||
end,
|
||||
cmd = {
|
||||
"Trouble",
|
||||
"TroubleClose",
|
||||
"TroubleToggle",
|
||||
"TroubleRefresh",
|
||||
},
|
||||
},
|
||||
|
||||
-- Github CLI integration
|
||||
{
|
||||
"ldelossa/gh.nvim",
|
||||
dependencies = { "ldelossa/litee.nvim" },
|
||||
config = function()
|
||||
require("litee.lib").setup()
|
||||
require("litee.gh").setup({
|
||||
refresh_interval = 60000,
|
||||
})
|
||||
end,
|
||||
},
|
||||
|
||||
-- Nftables Syntax support
|
||||
{
|
||||
"nfnty/vim-nftables",
|
||||
},
|
||||
}, {
|
||||
checker = {
|
||||
enabled = true,
|
||||
concurrency = 20,
|
||||
notify = false,
|
||||
},
|
||||
lockfile = vim.fn.stdpath("config") .. "/lazy-lock.json",
|
||||
dev = {
|
||||
path = "~/Git/Neovim",
|
||||
},
|
||||
})
|
4
dots/.config/nvim/lua/plugins/postload.lua
Executable file → Normal file
4
dots/.config/nvim/lua/plugins/postload.lua
Executable file → Normal file
@ -1,4 +0,0 @@
|
||||
-- Anything that needs to be loaded LAST
|
||||
-- needs to required here
|
||||
require("plugins.mappings")
|
||||
require("plugins.autocmds")
|
Loading…
Reference in New Issue
Block a user