feat(nvim): added floaterm as extra instead of default terminal

This commit is contained in:
Sergio Laín 2023-11-26 01:34:51 +01:00
parent 84c4f999c4
commit fd1d904641
No known key found for this signature in database
GPG key ID: 14C9B8080681777B
7 changed files with 32 additions and 175 deletions

View file

@ -59,6 +59,7 @@ vim.api.nvim_create_autocmd("FileType", {
"neo-tree-popup",
"TelescopePrompt",
"notify",
"floaterm",
},
callback = function(event)
vim.keymap.set("n", "<leader>", "<nop>", { buffer = event.buf, desc = "" })
@ -66,6 +67,7 @@ vim.api.nvim_create_autocmd("FileType", {
end,
})
-- Delete number column on terminals
vim.api.nvim_create_autocmd("TermOpen", {
callback = function()
vim.cmd("setlocal listchars= nonumber norelativenumber")

View file

@ -26,7 +26,6 @@ map("x", "<leader>?", function()
google(vim.fn.getreg("g"), false)
end, { desc = "Google" })
map("n", "<leader>ft", "<Nop>")
map("n", "<leader>fT", "<Nop>")
map("n", "<C-d>", "<C-d>zz")

View file

@ -93,6 +93,7 @@ return {
},
{
"voldikss/vim-floaterm",
optional = true,
keys = {
{
"<leader>CT",

View file

@ -36,6 +36,7 @@ return {
},
{
"voldikss/vim-floaterm",
optional = true,
keys = {
{
"<leader>pp",

View file

@ -26,7 +26,6 @@ return {
{ "<S-Left>", "<Esc><Esc><cmd>FloatermPrev<CR>", mode = { "t" }, desc = "Prev Terminal" },
{ "<A-Right>", "<Esc><Esc><cmd>FloatermLast<CR>", mode = { "t" }, desc = "Last Terminal" },
{ "<A-Left>", "<Esc><Esc><cmd>FloatermFirst<CR>", mode = { "t" }, desc = "First Terminal" },
{ "<leader>st", "<cmd>Telescope floaterm<cr>", desc = "Terminals" },
{ [[<c-\>]], "<cmd>FloatermToggle<cr>", mode = { "n", "t" }, desc = "Toggle Terminal" },
{ "<leader>ftf", "<cmd>FloatermNew --name=floatroot --opener=edit --titleposition=center --height=0.85 --width=0.85 --cwd=<root><cr>", desc = "Floating (root dir)" },
{ "<leader>ftF", "<cmd>FloatermNew --name=floatbuffer --opener=edit --titleposition=center --height=0.85 --width=0.85 --cwd=<buffer><cr>", desc = "Floating (cwd)" },
@ -43,6 +42,9 @@ return {
require("telescope").load_extension("floaterm")
end)
end,
keys = {
{ "<leader>st", "<cmd>Telescope floaterm<cr>", desc = "Terminals" },
},
},
{
"folke/which-key.nvim",
@ -54,4 +56,29 @@ return {
},
},
},
{
"folke/edgy.nvim",
optional = true,
opts = function(_, opts)
table.insert(opts.bottom, {
ft = "floaterm",
title = "Floaterm",
size = { height = 0.4 },
filter = function(buf, win)
return vim.api.nvim_win_get_config(win).relative == ""
end,
})
end,
},
{
"goolord/alpha-nvim",
opts = function(_, dashboard)
-- stylua: ignore
local button = dashboard.button("G", "󰊢 " .. " Git", "<cmd>FloatermNew --disposable --name=lazygitroot --opener=edit --titleposition=center --height=0.85 --width=0.85 --cwd=<root> lazygit<CR>")
button.opts.hl = "AlphaButtons"
button.opts.hl_shortcut = "AlphaShortcut"
table.insert(dashboard.section.buttons.val, 7, button)
return dashboard
end,
},
}

View file

@ -16,11 +16,6 @@ return {
]]
dashboard.section.header.val = vim.split(logo, "\n")
-- stylua: ignore
local button = dashboard.button("G", "󰊢 " .. " Git", "<cmd>FloatermNew --disposable --name=lazygitroot --opener=edit --titleposition=center --height=0.85 --width=0.85 --cwd=<root> lazygit<CR>")
button.opts.hl = "AlphaButtons"
button.opts.hl_shortcut = "AlphaShortcut"
table.insert(dashboard.section.buttons.val, 7, button)
return dashboard
end,
}

View file

@ -1,168 +0,0 @@
return {
-- edgy
{
"folke/edgy.nvim",
event = "VeryLazy",
keys = {
{
"<leader>uE",
function()
require("edgy").select()
end,
desc = "Edgy Select Window",
},
},
opts = function()
local opts = {
bottom = {
{
ft = "floaterm",
title = "Floaterm",
size = { height = 0.4 },
filter = function(buf, win)
return vim.api.nvim_win_get_config(win).relative == ""
end,
},
{
ft = "noice",
size = { height = 0.4 },
filter = function(buf, win)
return vim.api.nvim_win_get_config(win).relative == ""
end,
},
"Trouble",
{
ft = "trouble",
filter = function(buf, win)
return vim.api.nvim_win_get_config(win).relative == ""
end,
},
{ ft = "qf", title = "QuickFix" },
{
ft = "help",
size = { height = 20 },
-- don't open help files in edgy that we're editing
filter = function(buf)
return vim.bo[buf].buftype == "help"
end,
},
{ title = "Spectre", ft = "spectre_panel", size = { height = 0.4 } },
{ title = "Neotest Output", ft = "neotest-output-panel", size = { height = 15 } },
},
left = {
{
title = "Neo-Tree",
ft = "neo-tree",
filter = function(buf)
return vim.b[buf].neo_tree_source == "filesystem"
end,
pinned = true,
open = function()
vim.api.nvim_input("<esc><space>e")
end,
size = { height = 0.5 },
},
{ title = "Neotest Summary", ft = "neotest-summary" },
{
title = "Neo-Tree Git",
ft = "neo-tree",
filter = function(buf)
return vim.b[buf].neo_tree_source == "git_status"
end,
pinned = true,
open = "Neotree position=right git_status",
},
{
title = "Neo-Tree Buffers",
ft = "neo-tree",
filter = function(buf)
return vim.b[buf].neo_tree_source == "buffers"
end,
pinned = true,
open = "Neotree position=top buffers",
},
"neo-tree",
},
animate = {
enabled = false,
},
keys = {
-- increase width
["<c-Right>"] = function(win)
win:resize("width", 2)
end,
-- decrease width
["<c-Left>"] = function(win)
win:resize("width", -2)
end,
-- increase height
["<c-Up>"] = function(win)
win:resize("height", 2)
end,
-- decrease height
["<c-Down>"] = function(win)
win:resize("height", -2)
end,
},
}
return opts
end,
},
-- use edgy's selection window
{
"nvim-telescope/telescope.nvim",
optional = true,
opts = {
defaults = {
get_selection_window = function()
require("edgy").goto_main()
return 0
end,
},
},
},
-- prevent neo-tree from opening files in edgy windows
{
"nvim-neo-tree/neo-tree.nvim",
optional = true,
opts = function(_, opts)
opts.open_files_do_not_replace_types = opts.open_files_do_not_replace_types
or { "terminal", "Trouble", "qf", "Outline", "trouble" }
table.insert(opts.open_files_do_not_replace_types, "edgy")
end,
},
-- Fix bufferline offsets when edgy is loaded
{
"akinsho/bufferline.nvim",
optional = true,
opts = function()
local Offset = require("bufferline.offset")
if not Offset.edgy then
local get = Offset.get
Offset.get = function()
if package.loaded.edgy then
local layout = require("edgy.config").layout
local ret = { left = "", left_size = 0, right = "", right_size = 0 }
for _, pos in ipairs({ "left", "right" }) do
local sb = layout[pos]
if sb and #sb.wins > 0 then
local title = " Sidebar" .. string.rep(" ", sb.bounds.width - 8)
ret[pos] = "%#EdgyTitle#" .. title .. "%*" .. "%#WinSeparator#│%*"
ret[pos .. "_size"] = sb.bounds.width
end
end
ret.total_size = ret.left_size + ret.right_size
if ret.total_size > 0 then
return ret
end
end
return get()
end
Offset.edgy = true
end
end,
},
}