216 lines
5.4 KiB
Lua
216 lines
5.4 KiB
Lua
return {
|
|
-- statusline
|
|
{
|
|
"nvim-lualine/lualine.nvim",
|
|
requires = { "nvim-tree/nvim-web-devicons", config = true },
|
|
opts = {
|
|
options = {
|
|
icons_enabled = true,
|
|
theme = "auto",
|
|
component_separators = { left = "", right = "" },
|
|
section_separators = { left = "", right = "" },
|
|
disabled_filetypes = {},
|
|
always_divide_middle = true,
|
|
},
|
|
sections = {
|
|
lualine_a = { "mode" },
|
|
lualine_b = { "branch", "diff", "diagnostics" },
|
|
lualine_c = { "filename" },
|
|
lualine_x = { "encoding", "fileformat", "filetype" },
|
|
lualine_y = { "progress", "location" },
|
|
lualine_z = { "hostname" },
|
|
},
|
|
inactive_sections = {
|
|
lualine_a = {},
|
|
lualine_b = { "branch", "diff" },
|
|
lualine_c = { "filename" },
|
|
lualine_x = {},
|
|
lualine_y = { "location" },
|
|
lualine_z = {},
|
|
},
|
|
tabline = {},
|
|
extensions = { "quickfix", "toggleterm" },
|
|
},
|
|
event = { "BufNewFile", "BufAdd", "BufWinEnter" },
|
|
},
|
|
-- create pretty unobtrusive notifications
|
|
{
|
|
"j-hui/fidget.nvim",
|
|
opts = {
|
|
progress = {
|
|
suppress_on_insert = true,
|
|
ignore_done_already = true,
|
|
},
|
|
notification = {
|
|
override_vim_notify = true,
|
|
},
|
|
},
|
|
event = { "VeryLazy" },
|
|
},
|
|
-- make all vim.ui interfaces prettyy
|
|
{ "stevearc/dressing.nvim", config = true, event = "VeryLazy" },
|
|
|
|
-- numbers to absolute for all buffers but the current which is relative
|
|
{ "jeffkreeftmeijer/vim-numbertoggle", event = "BufEnter" },
|
|
-- auto-hiding colorcolumn
|
|
{
|
|
"m4xshen/smartcolumn.nvim",
|
|
event = "BufEnter",
|
|
opts = {
|
|
colorcolumn = { "100" },
|
|
scope = "window",
|
|
disabled_filetypes = {
|
|
"help",
|
|
"text",
|
|
"markdown",
|
|
"NvimTree",
|
|
"lazy",
|
|
"mason",
|
|
"help",
|
|
"quarto",
|
|
},
|
|
},
|
|
},
|
|
-- display pretty colors when they are mentioned in buffer
|
|
{
|
|
"NvChad/nvim-colorizer.lua", -- color hex, named colors in the correct preview scheme
|
|
config = function()
|
|
require("colorizer").setup({
|
|
user_default_options = { mode = "virtualtext" },
|
|
})
|
|
end,
|
|
cmd = {
|
|
"ColorizerToggle",
|
|
"ColorizerAttachToBuffer",
|
|
"ColorizerDetachFromBuffer",
|
|
"ColorizerReloadAllBuffers",
|
|
},
|
|
keys = {
|
|
{ "<localleader>sc", "<cmd>ColorizerToggle<cr>", { silent = true, desc = "toggle colorizer" } },
|
|
{
|
|
"<localleader>sC",
|
|
'<cmd>lua require("colorizer").attach_to_buffer(0, {mode = "background"} )<cr>',
|
|
{ silent = true, desc = "colorize background" },
|
|
},
|
|
},
|
|
},
|
|
{
|
|
"jiaoshijie/undotree",
|
|
dependencies = {
|
|
"nvim-lua/plenary.nvim",
|
|
},
|
|
config = true,
|
|
keys = {
|
|
{
|
|
"<leader>su",
|
|
function()
|
|
require("undotree").toggle()
|
|
end,
|
|
desc = "toggle undotree",
|
|
silent = true,
|
|
},
|
|
},
|
|
},
|
|
-- simpler, programmable and multiple terminal toggling for nvim
|
|
{
|
|
"akinsho/nvim-toggleterm.lua",
|
|
config = function()
|
|
require("toggleterm").setup({
|
|
open_mapping = [[<leader>=]],
|
|
insert_mappings = false, -- don't map the key in insert mode
|
|
terminal_mappings = false,
|
|
})
|
|
|
|
local Terminal = require("toggleterm.terminal").Terminal
|
|
|
|
-- need to disable indentlines since they obscure first line of terminal
|
|
if require("util").is_available("mini.nvim") then
|
|
vim.api.nvim_create_autocmd({ "TermOpen" }, {
|
|
pattern = "*",
|
|
callback = function()
|
|
vim.b.miniindentscope_disable = true
|
|
end,
|
|
})
|
|
end
|
|
|
|
local function custom_term_set_toggle_key(term)
|
|
vim.keymap.set("t", "<C-\\>", function()
|
|
term:toggle()
|
|
end, { silent = true, buffer = true })
|
|
end
|
|
|
|
-- create python window
|
|
local function get_python_cmd()
|
|
if vim.fn.executable("py") then
|
|
return "py"
|
|
end
|
|
if vim.fn.executable("ptipython") then
|
|
return "ptipython"
|
|
end
|
|
if vim.fn.executable("ipython") then
|
|
return "ipython"
|
|
end
|
|
if vim.fn.executable("ptpython") then
|
|
return "ptpython"
|
|
end
|
|
if vim.fn.executable("python") then
|
|
return "python"
|
|
end
|
|
end
|
|
local terms = {
|
|
lazygit = Terminal:new({
|
|
cmd = "lazygit",
|
|
hidden = true,
|
|
direction = "float",
|
|
float_opts = { border = "curved" },
|
|
on_open = custom_term_set_toggle_key,
|
|
}),
|
|
python = Terminal:new({
|
|
cmd = get_python_cmd(),
|
|
hidden = true,
|
|
direction = "float",
|
|
float_opts = { border = "curved" },
|
|
on_open = custom_term_set_toggle_key,
|
|
}),
|
|
}
|
|
-- create a lazygit window with the lazygit command
|
|
local function toggle_custom_term(term, bang, vertsize)
|
|
vertsize = vertsize or vim.o.columns * 0.4
|
|
if not bang then
|
|
term.direction = "float"
|
|
term:toggle()
|
|
else
|
|
term.direction = "vertical"
|
|
term:resize(vertsize)
|
|
term:toggle()
|
|
end
|
|
end
|
|
|
|
local function _Pythonterm_toggle(opts)
|
|
toggle_custom_term(terms.python, opts.bang)
|
|
end
|
|
local function _Lazygit_toggle(opts)
|
|
toggle_custom_term(terms.lazygit, opts.bang, vim.o.columns * 0.6)
|
|
end
|
|
|
|
vim.api.nvim_create_user_command(
|
|
"Lazygit",
|
|
_Lazygit_toggle,
|
|
{ desc = "Toggle floating Lazygit terminal", bang = true }
|
|
)
|
|
vim.api.nvim_create_user_command(
|
|
"Pythonterm",
|
|
_Pythonterm_toggle,
|
|
{ desc = "Toggle floating Python terminal", bang = true }
|
|
)
|
|
end,
|
|
cmd = { "ToggleTerm", "TermExec", "Lazygit", "Pythonterm" },
|
|
keys = {
|
|
{ "<leader>sg", ":Lazygit<cr>", desc = "git floating" },
|
|
{ "<leader>sG", ":Lazygit!<cr>", desc = "git buffer" },
|
|
{ "<leader>sp", ":Pythonterm<cr>", desc = "python floating" },
|
|
{ "<leader>sP", ":Pythonterm!<cr>", desc = "python buffer" },
|
|
},
|
|
},
|
|
}
|